............::::::::::::::::::::::.......................................................................................................................................................................................................................................................................................................................................................................................................................... .................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................:::::----------------:::::........................................::::::--------:::::..........................................................................:::::----:::::.................................................................................................................................................................................................................................................................................................................................................................................................................................................:......................................:::---------------------------------------::::............::::::::::::::---=============---::::::::::::::::::::::::::::::...............................................:::::::::::::::::::::...................................................................................................................................................................::::---==============+++++++++++++*************************************************************************************************************************#################*******++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***************************************************************************###################################################################################################################################################**********************************************************************************************************#################**************************************************************************************************************************************************************************************************************************************************************************************************************************************###############################################****************################*****************************************************************************************************************************************************************************************************************###############################################################################################################################################################################################################################*****************************++++++++++++++++++++++++++++++++++++++++++++++++===========================================================-----------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::......................................
............::::::::::::::::::::::.......................................................................................................................................................................................................................................................................................................................................................................................................................... ..................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................::::-----------------::::.......................................:::::::--------:::::..........................................................................:::::----:::::........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................:::---------------------------------------::::............::::::::::::::---=============---::::::::::::::::::::::::::::::...............................................:::::::::::::::::::::...................................................................................................................................................................::::---==============+++++++++++++*************************************************************************************************************************#################*******++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**************************************************************************####################################################################################################################################################**********************************************************************************************************#################**************************************************************************************************************************************************************************************************************************************************************************************************************************************##############################################*****************################*****************************************************************************************************************************************************************************************************************###############################################################################################################################################################################################################################*****************************++++++++++++++++++++++++++++++++++++++++++++++++===========================================================-----------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::......................................
...........:::::::::::::::::::::::.......................................................................................................................................................................................................................................................................................................................................................................................................................... ..................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................::::-----------------::::.....................................::::::::--------:::::...........................................................................:::::-----:::::......................................................................................................................................................................................................................................................................................................................................................................................................................................................................................::::---------------------------------------::::...........:::::::::::::::---=============---::::::::::::::::::::::::::::::...............................................:::::::::::::::::::::...................................................................................................................................................................::::---==============+++++++++++++*************************************************************************************************************************##################******++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*************************************************************************#####################################################################################################################################################**********************************************************************************************************#################**************************************************************************************************************************************************************************************************************************************************************************************************************************************##############################################*****************################******************************************************************************************************************************************************************************************************************#############################################################################################################################################################################################################################******************************+++++++++++++++++++++++++++++++++++++++++++++++++==========================================================-----------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::......................................
...........::::::::::::::::::::::........................................................................................................................................................................................................................................................................................................................................................................................................................... ...........................::.....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................::::-----------------::::...................................:::::::::---------:::::...........................................................................:::::-----:::::......................................................................................................................................................................................................................................................................................................................................................................................................................................................................................::::---------------------------------------::::...........:::::::::::::::---=============---:::::::::::::::::::::::::::::................................................:::::::::::::::::::::...................................................................................................................................................................::::---==============+++++++++++++*************************************************************************************************************************##################******++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*************************************************************************#####################################################################################################################################################**********************************************************************************************************#################**************************************************************************************************************************************************************************************************************************************************************************************************************************************###############################################****************#################*****************************************************************************************************************************************************************************************************************############################################################################################################################################################################################################################*******************************++++++++++++++++++++++++++++++++++++++++++++++++++=========================================================-----------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::......................................
..........:::::::::::::::::::::::........................................................................................................................................................................................................................................................................................................................................................................................................................... ...........................:::....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................::::------------------::::...............................::::::::::----------::::::...........................................................................:::::-----::::::.....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................::::---------------------------------------::::...........:::::::::::::::---=============--::::::::::::::::::::::::::::::................................................:::::::::::::::::::::...................................................................................................................................................................::::---==============+++++++++++++*************************************************************************************************************************##################******++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++************************************************************************#####################################################################################################################################################***********************************************************************************************************################***************************************************************************************************************************************************************************************************************************************************************************************************************************************###############################################****************#################***************************#**************************************************************************************************************************************************************************************##########################################################################################################################################################################################################################*********************************+++++++++++++++++++++++++++++++++++++++++++++++++==========================================================-----------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::......................................
..........:::::::::::::::::::::::........................................................................................................................................................................................................................................................................................................................................................................................................................... ...........................:::....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................::::------------------::::..............................:::::::::-----------::::::.............................................................................:::::-----::::::.......::::.........................................................................................................................................................................................................................................................................................................................................................................................................................................................................::::---------------------------------------::::...........::::::::::::::::---============--::::::::::::::::::::::::::::::................................................:::::::::::::::::::::...................................................................................................................................................................::::---==============+++++++++++++*************************************************************************************************************************##################******++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++************************************************************************#####################################################################################################################################################***********************************************************************************************************################***************************************************************************************************************************************************************************************************************************************************************************************************************************************###############################################****************#################**************************####************************************************************************************************************************************************************************************#########################################################################################################################################################################################################################***********************************+++++++++++++++++++++++++++++++++++++++++++++++++=========================================================-----------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::......................................
..........:::::::::::::::::::::::........................................................................................................................................................................................................................................................................................................................................................................................................................... ..........................::::....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................:::::-----------------:::::..........................::::::::::------------::::::..............................................................................:::::------::::::....:::::::........................................................................................................................................................................................................................................................................................................................................................................................................................................................................::::---------------------------------------::::...........::::::::::::::::---===========---::::::::::::::::::::::::.:::::................................................:::::::::::::::::::::...................................................................................................................................................................::::---==============+++++++++++++*************************************************************************************************************************##################******+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*************************************************************************####################################################################################################################################################************************************************************************************************************################***************************************************************************************************************************************************************************************************************************************************************************************************************************************################################################***************#################*************************#####*************************************************************************************************************************************************************************************######################################################################################################################################################################################################################*************************************+++++++++++++++++++++++++++++++++++++++++++++++++=========================================================-----------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::......................................
..........::::::::::::::::::::::............................................................................................................................................................................................................................................................................................................................................................................................................................ ..........................:::::....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................::::------------------::::........................::::::::::--------------:::::...............................................................................:::::------:::::::.:::::::::........................................................................................................................................................................................................................................................................................................................................................................................................................................................................::::---------------------------------------::::...........::::::::::::::::---===========---::::::::::::::::::::::::.:::::................................................:::::::::::::::::::::...................................................................................................................................................................::::---==============+++++++++++++*************************************************************************************************************************##################******+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++************************************************************************####################################################################################################################################################**************************************************************************************************************###############***************************************************************************************************************************************************************************************************************************************************************************************************************************************################################################***************#################*************************######************************************************************************************************************************************************************************************#####################################################################################################################################################################################################################**************************************+++++++++++++++++++++++++++++++++++++++++++++++++==========================================================----------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::......................................
.........:::::::::::::::::::::::............................................................................................................................................................................................................................................................................................................................................................................................................................ ..........................:::::....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................::::------------------:::::.....................::::::::::---------------::::::................................................................................:::::-----::::::::::::::::::........................................................................................................................................................................................................................................................................................................................................................................................................................................................................::::--------------------------------------::::...........::::::::::::::::---===========---:::::::::::::::::::............................................................::::::::::::::::::::...................................................................................................................................................................::::---==============+++++++++++++*************************************************************************************************************************##################******++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***********************************************************************######################################################################################################################################################***************************************************************************************************************#############*****************************************************************************************************************************************************************************************************************************************************************************************************************************************################################################**************##################***********************########**********************************************************************************************************************************************************************************#####################################################################################################################################################################################################################*****************************************++++++++++++++++++++++++++++++++++++++++++++++++=========================================================-----------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::......................................
::::::::::::::::::::::::::::::::............................................................................................................................................................................................................................................................................................................................................................................................................................ ..........................:::::....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................::::------------------:::::...................::::::::::----------------::::::.................................................................................:::::------:::::::::::::::::........................................................................................................................................................................................................................................................................................................................................................................................................................................................................::::--------------------------------------::::...........::::::::::::::::---===========---:::::::::::::::::::............................................................::::::::::::::::::::...................................................................................................................................................................::::---==============+++++++++++++*************************************************************************************************************************##################******+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***********************************************************************#######################################################################################################################################################****************************************************************************************************************############*****************************************************************************************************************************************************************************************************************************************************************************************************************************************################################################**************##################***********************########**********************************************************************************************************************************************************************************####################################################################################################################################################################################################################******************************************+++++++++++++++++++++++++++++++++++++++++++++++++========================================================------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::......................................
::::::::::::::::::::::::::::::::............................................................................................................................................................................................................................................................................................................................................................................................................................ ..........................:::::.....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................::::------------------::::..................::::::::::----------------::::::..................................................................................::::::-----:::::::::::::::::........................................................................................................................................................................................................................................................................................................................................................................................................................................................................::::--------------------------------------::::...........:::::::::::::::::---==========--::::::::::::::::::::............................................................::::::::::::::::::::...................................................................................................................................................................::::---==============+++++++++++++**************************************************************************************************************************#################******+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++************************************************************************######################################################################################################################################################******************************************************************************************************************############*****************************************************************************************************************************************************************************************************************************************************************************************************************************************################################################***************#################***********************########**********************************************************************************************************************************************************************************##################################################################################################################################################################################################################*********************************************++++++++++++++++++++++++++++++++++++++++++++++++=========================================================-----------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::......................................
:::::::::::::::::::::::::::::::............................................................................................................................................................................................................................................................................................................................................................................................................................ ..........................::::::....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................::::------------------::::................:::::::::------------------::::::....................................................................................:::::------::::::::::::::::........................................................................................................................................................................................................................................................................................................................................................................................................................................................................::::--------------------------------------::::...........:::::::::::::::::---==========--::::::::::::::::::::............................................................::::::::::::::::::::...................................................................................................................................................................::::---==============+++++++++++++**************************************************************************************************************************##################******++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***********************************************************************######################################################################################################################################################*******************************************************************************************************************###########******************************************************************************************************************************************************************************************************************************************************************************************************************************************################################################***************##################**********************########*********************************************************************************************************************************************************************************###################################################################################################################################################################################################################***********************************************+++++++++++++++++++++++++++++++++++++++++++++++=========================================================-----------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::......................................
:::::::::::::::::::::::::::::::............................................................................................................................................................................................................................................................................................................................................................................................................................ ..........................::::::.....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................:::------------------:::::..............::::::::--------------------:::::.....................................................................................::::::-----::::::::::::::::........................................................................................................................................................................................................................................................................................................................................................................................................................................................................::::--------------------------------------::::...........:::::::::::::::::---=========---:::::..::::::::::::.............................................................::::::::::::::::::::...................................................................................................................................................................::::---==============+++++++++++++**************************************************************************************************************************##################******++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*************************************************************************######################################################################################################################################################*********************************************************************************************************************##########*******************************************************************************************************************************************************************************************************************************************************************************************************************************************################################################***************####################********************########*********************************************************************************************************************************************************************************################################################################################################################################################################################################################***************************************************++++++++++++++++++++++++++++++++++++++++++++++++========================================================----------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::......................................
---::::::::::::::::::::::::::::............................................................................................................................................................................................................................................................................................................................................................................................................................ ..........................::::::.....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................::::------------------::::.............:::::::---------------------:::::.......................................................................................:::::------::::::::--:::::........................................................................................................................................................................................................................................................................................................................................................................................................................................................................::::--------------------------------------::::...........::::::::::::::::::--=========---:::::..::::::::::::.............................................................::::::::::::::::::::...................................................................................................................................................................::::---==============+++++++++++++**************************************************************************************************************************##################******+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++************************************************************************#######################################################################################################################################################**********************************************************************************************************************######***********************************************************************************************************************************************************************************************************************************************************************************************************************************************##*#############################################***************#######################*****************########********************************************************************************************************************************************************************************###############################################################################################################################################################################################################*****************************************************++++++++++++++++++++++++++++++++++++++++++++++++========================================================------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::......................................
--------:::::::::::::::::::::::....................................:::..................................................................................................................................................................................................................................................................................................................................................................................... ..........................::::::.....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................::::------------------::::...........:::::::::--------------------::::::.......................................................................................::::::-------:::-:--::::::........................................................................................................................................................................................................................................................................................................................................................................................................................................................................::::--------------------------------------::::..........:::::::::::::::::::--=========---:::::..::::::::::::.............................................................::::::::::::::::::::...................................................................................................................................................................::::---==============++++++++++++++*************************************************************************************************************************##################********+++*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**************************************************************************######################################################################################################################################################*************************************************************************************************************************#####************************************************************************************************************************************************************************************************************************************************************************************************************************************************#*#############################################***************############################************########*******************************************************************************************************************************************************************************############################################################################################################################################################################################################***********************************************************++++++++++++++++++++++++++++++++++++++++++++++=========================================================------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::......................................
------------:::::::::::::::::::.................................:::::::::.................................................................................................................................................................................................................................................................................................................................................................................. ..........................::::::.....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................:::::-----------------::::...........:::::::---------------------::::::.........................................................................................:::::--------------:::::.........................................................................................................................................................................................................................................................................................................................................................................................................................................................................:::::-------------------------------------::::..........:::::::::::::::::::--=========--::::::..::::::::::::.............................................................::::::::::::::::::::...................................................................................................................................................................::::---==============++++++++++++++*************************************************************************************************************************##################*********++*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***************************************************************************######################################################################################################################################################*************************************************************************************************************************####***************************************************************************************************************************************************************************************************************************************************************************************************************************************************##############################################**************############################************########*******************************************************************************************************************************************************************************##########################################################################################################################################################################################################*************************************************************++++++++++++++++++++++++++++++++++++++++++++++=========================================================------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::......................................
-----------------:::::::::::::::..............................::::::::::::::............................................................................................................................................................................................................................................................................................................................................................................... ...........................::::::......................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................::::-----------------:::::........:::::::----------------------::::::..........................................................................................:::::-------------::::::.........................................................................................................................................................................................................................................................................................................................................................................................................................................................................:::::-------------------------------------::::..........:::::::::::::::::::---========--::::::..::::::::::::::...........................................................::::::::::::::::::::...................................................................................................................................................................::::---==============++++++++++++++**************************************************************************************************************************#################**********************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****************************************************************************###################################################################################################################################################***************************************************************************************************************************#**************************************************************************************************************************************************************************************************************************************************************************************************************************************************************########################################**************##############################**********#########*****************************************************************************************************************************************************************************######################################################################################################################################################################################################*******************************************************************++++++++++++++++++++++++++++++++++++++++++++++========================================================-------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::......................................
---------==---------::::::::::::..........................::::::::::::::::::::............................................................................................................................................................................................................................................................................................................................................................................. ...........................::::::......................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................::::-----------------:::::........::::::-----------------------:::::...........................................................................................:::::-------------::::::.........................................................................................................................................................................................................................................................................................................................................................................................................................................................................:::::-------------------------------------::::..........:::::::::::::::::::---========--::::::..:::::::::::::............................................................::::::::::::::::::::...................................................................................................................................................................::::---==============++++++++++++++**************************************************************************************************************************#################**********************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***************************************************************************###################################################################################################################################################********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************#######################################**************##############################**********#########*****************************************************************************************************************************************************************************####################################################################################################################################################################################################*********************************************************************+++++++++++++++++++++++++++++++++++++++++++++++=======================================================-------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::......................................
----=============-----:::::::::::.......................::::::::::::::::::::::::........................................................................................................................................................................................................................................................................................................................................................................... ...........................::::::......................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................:::::-----------------:::::.....:::::::-----------------------::::::...........................................................................................:::::------------::::::...........................................................................................................................................................................................................................................................................................................................................................................................................................................................................::::-------------------------------------::::..........:::::::::::::::::::---========--::::::..:.::::::::::.............................................................::::::::::::::::::::...................................................................................................................................................................::::---==============++++++++++++++**************************************************************************************************************************#################***********************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****************************************************************************##################################################################################################################################################**********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************######################################**************##############################**********#########*****************************************************************************************************************************************************************************################################################################################################################################################################################################**************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++=======================================================-------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::......................................
----================-----:::::::::..................::::::::::::::::::::::::::::::::....................................................................................................................................................................................................................................................................................................................................................................... ...........................::::::.......................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................::::-----------------::::::...:::::::----------------------::::::.............................................................................................:::::-----------::::::............................................................................................................................................................................................................................................................................................................................................................................................................................................................................::::-------------------------------------::::..........::::::::::::::::::::--========--:::::...:.::::::::::.............................................................::::::::::::::::::::...................................................................................................................................................................::::---==============++++++++++++++**************************************************************************************************************************##################************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****************************************************************************###############################################################################################################################################*************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************######################################***************##############################*********#########****************************************************************************************************************************************************************************###########################################################################################################################################################################################*********************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++======================================================--------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::......................................
----==================-----:::::::::::::...:::::::::::::::::::::::::::::::::::::::::::..................................................................................................................................................................................................................................................................................................................................................................... ...........................::::::.......................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................:::::----------------:::::::::::::::----------------------:::::::.............................................................................................:::::----------:::::::............................................................................................................................................................................................................................................................................................................................................................................................................................................................................::::------------------------------------:::::..........::::::::::::::::::::--========--:::::...:.::::::::::.............................................................::::::::::::::::::::...................................................................................................................................................................::::---==============++++++++++++++**************************************************************************************************************************##################*******************************************++++++++++++++++++++++++++++++++++++++++++++++++++******************************************************************************##############################################################################################################################################*****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************###################################***************##############################*********#########****************************************************************************************************************************************************************************#######################################################################################################################################################################################*************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++======================================================--------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::......................................
----=========+++++======-----:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::................................................................................................................................................................................................................................................................................................................................................................... ..........................:::::::........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................:::::---------------::::::::::::::----------------------::::::...............................................................................................:::::----------::::::..........................................................................................................................................................................................................................................................................................................................:..................................................................................................................................................:::::-----------------------------------:::::..........::::::::::::::::::::---=======--:::::...:.:::::::::..............................................................::::::::::::::::::::...................................................................................................................................................................::::---==============++++++++++++++**************************************************************************************************************************##################********************************************+++++++++++++++++++++++++++++++++++++++++++++++********************************************************************************############################################################################################################################################********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************###################################**************##############################*********#########****************************************************************************************************************************************************************************##################################################################################################################################################################################*******************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++======================================================---------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::......................................
-----======+++++++++======-----::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.................................................................................................................................................................................................................................................................................................................................................................. ..........................:::::::........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................:::::---------------:::::::::::::--------------------:::::::::...............................................................................................:::::---------::::::.........................................................................................................................................................................................................................................................................................................................::::.................................................................................................................................................:::::-----------------------------------:::::..........::::::::::::::::::::---=======--:::::...:..::::::::..............................................................::::::::::::::::::::...................................................................................................................................................................::::---==============++++++++++++++**************************************************************************************************************************##################********************************************+++++++++++++++++++++++++++++++++++++++++++++++********************************************************************************############################################################################################################################################********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************###################################**************##############################*********#########***************************************************************************************************************************************************************************############################################################################################################################################################################**************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++=======================================================-------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::......................................
:----=====+++++++++++======-------:::::::::::::::::::::::::::::::::::::::::::::::::::::::.................................................................................................................................................................................................................................................................................................................................................................. ..........................:::::::.........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................::::----------------:::::::::::------------------::::::::::.................................................................................................:::::---------:::::..........................................................................................................................................................................................................................................................................................................................::::............................................................................................................................::::.................:::::-----------------------------------:::::..........::::::::::::::::::::---=======--:::::...:..::::::::..............................................................::::::::::::::::::::...................................................................................................................................................................::::---==============++++++++++++++***************************************************************************************************************************#################*********************************************++++++++++++++++++++++++++++++++++++++++++++++********************************************************************************###########################################################################################################################################**********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************##################################**************##############################*********#########***************************************************************************************************************************************************************************########################################################################################################################################################################******************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++======================================================-------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::......................................
::---=====+++++++++++++======--------:::::::::::--::::::------::::::::::::::::::::::::::::................................................................................................................................................................................................................................................................................................................................................................. ...........................:::::::.........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................:::::---------------:::::::::::----------------:::::::::::.................................................................................................::::::--------::::::..........................................................................................................................................................................................................................................................................................................................::::...........................................................................................................................::::::.................::::----------------------------------::::::..........:::::::::::::::::::::--=======---::::....:...:::::..............................................................:::::::::::::::::::::....................................................................................................................................................................:::---==============++++++++++++++***************************************************************************************************************************#################*********************************************++++++++++++++++++++++++++++++++++++++++++++++********************************************************************************#######################################################################################################################################**************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************###################################*************###############################********#########****************************************************************************************************************************************************************************###################################################################################################################################################################***********************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++=====================================================--------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::......................................
:----=====++++++++++++++======----------------------------------::::::::::::::::::::::::::................................................................................................................................................................................................................................................................................................................................................................. ...........................:::::::........................................................................................................................................................................................:::::::...........................................................................................................................................................................................................................................................................................................................................................................................................................................................::::---------------:::::::::::--------------::::::::::::.................................................................................................:::::::--------:::::..........................................................................................................................................................................................................................................................................................................................:::::..........................................................................................................................::::::::................::::----------------------------------::::::..........:::::::::::::::::::::--=======---:::::...:...:::::...............................................................::::::::::::::::::::....................................................................................................................................................................:::---==============++++++++++++++***************************************************************************************************************************#################*********************************************++++++++++++++++++++++++++++++++++++++++++++++********************************************************************************######################################################################################################################################***************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************###################################*************###############################********#########***************************************************************************************************************************************************************************################################################################################################################################################################****************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++=====================================================--------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::......................................
-----====++++++++++++++++=======---------------------------------:::::::::::::::::::::::::................................................................................................................................................................................................................................................................................................................................................................. ...........................:::::::.......................................................................................................................................................................................:::::::::..........................................................................................................................................................................................................................................................................................................................................................................................................................................................:::::--------------::::::::::-------------:::::::::::....................................................................................................::::::--------:::::...........................................................................................................................................................................................................................................................................................................................:::::.........................................................................................................................::::::::::...............::::----------------------------------::::::..........:::::::::::::::::::::---======---:::::...:...:::::................................................................:::::::::::::::::::....................................................................................................................................................................:::---==============++++++++++++++***************************************************************************************************************************##################********************************************++++++++++++++++++++++++++++++++++++++++++++++********************************************************************************#####################################################################################################################################***************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************####################################*************###############################********#########***************************************************************************************************************************************************************************###########################################################################################################################################################*********************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++======================================================--------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::......................................
-----===++++++++++++++++++========---------------------------------:::::::::::::::::::::::................................................................................................................................................................................................................................................................................................................................................................. ...........................:::::::......................................................................................................................................................................................:::::::::::.........................................................................................................................................................................................................................................................................................................................................................................................................................................................::::::--------------::::::::-------------:::::::::::.....................................................................................................:::::::------::::::............................................................................................................................................................................................................................................................................................................................::::........................................................................................................................:::::--::::...............::::----------------------------------::::::..........:::::::::::::::::::::---======---:::::........::..................................................................:::::::::::::::::::....................................................................................................................................................................:::---==============++++++++++++++***************************************************************************************************************************##################********************************************++++++++++++++++++++++++++++++++++++++++++++++*******************************************************************************#####################################################################################################################################****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************####################################*************################################*******#########****************************************************************************************************************************************************************************###################################################################################################################################################****************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++=====================================================---------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.......................................
--======++++++*****++++++++==========-------------------------------::::::::::::::::::::::................................................................................................................................................................................................................................................................................................................................................................. ...........................:::::::.....................................................................................................................................................................................::::-----::::.........................................................................................................................................................................................................................................................................................................................................................................................................................................................:::::---------------:::::::-----------:::::::::::......................................................................................................:::::::::::::::::::..............................................................................................................................................................................................................................................................................................................................::........................................................................................................................::::-----::::..............::::-----------------------------------:::::..........:::::::::::::::::::::---======---:::::............................................................................::::::::::::::::::.....................................................................................................................................................................:::---==============+++++++++++++++**************************************************************************************************************************##################********************************************+++++++++++++++++++++++++++++++++++++++++++++*******************************************************************************####################################################################################################################################******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************####################################*************################################*******##########***************************************************************************************************************************************************************************#############################################################################################################################################**********************************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++======================================================-------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.......................................
======++++++********++++++++==============----------------------------::::::::::::::::::::................................................................................................................................................................................................................................................................................................................................................................. ............................:::::::....................................................................................................................................................................................:::--------:::..........................................................................................................................................................................................................................................................................................................................................................................................................................................................:::::--------------::::::::::------::::::::::::.......................................................................................................:::::::::::::::::::.......................................................................................................................................................................................................................................................................................................................................................................................................................................................::::------::::..............::::-----------------------------------:::::.........:::::::::::::::::::::::--======---:::::..............................................................................::::::::::::::::.....................................................................................................................................................................:::---==============+++++++++++++++**************************************************************************************************************************##################********************************************++++++++++++++++++++++++++++++++++++++++++++********************************************************************************##################################################################################################################################********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************####################################**************###############################*******##########****************************************************************************************************************************************************************************######################################################################################################################################*****************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++======================================================--------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.......................................
===+++++++***********+++++++========================----------------------::::::::::::::::................................................................................................................................................................................................................................................................................................................................................................. ............................:::::::...................................................................................................................................................................................:::---====---:::.........................................................................................................................................................................................................................................................................................................................................................................................................................................................::::::------------::::::::::::-:::::::::::::::........................................................................................................:::::::::::::::::::......................................................................................................................................................................................................................................................................................................................................................................................................................................................::::--------:::..............::::-----------------------------------:::::.........:::::::::::::::::::::::--======---:::::...............................................................................:::::::::::::::.....................................................................................................................................................................:::---==============+++++++++++++++**************************************************************************************************************************##################*********************************************+++++++++++++++++++++++++++++++++++++++++++*******************************************************************************#################################################################################################################################**********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************####################################**************################################******##########*****************************************************************************************************************************************************************************##########################################################################################################################*****************************************************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++=====================================================-------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.......................................
+++++++++************++++++++=================================---------------------::::::.................................................................................................................................................................................................................................................................................................................................................................. ............................:::::::..................................................................................................................................................................................:::---======--:::..........................................................................................................................................................................................................................................................................................................................................................................................................................................................:::::------------::::::::::::::::::::::::::.........................................................................................................::::::::::::::::::::.....................................................................................................................................................................................................................................................................................................................................................................................................................................................::::---------:::..............::::-----------------------------------:::::.........:::::::::::::::::::::::--======---:::::...............................................................................:::::::::::::::.....................................................................................................................................................................:::---==============+++++++++++++++**************************************************************************************************************************##################*********************************************+++++++++++++++++++++++++++++++++++++++++++*******************************************************************************################################################################################################################################***********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************####################################**************################################******###########****************************************************************************************************************************************************************************#############################################################################################################******************************************************************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++=====================================================-------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.......................................
++++++++**************+++++++=======================================----------------:::::.................................................................................................................................................................................................................................................................................................................................................................. .............................:::::::.................................................................................................................................................................................::::--========--::..........................................................................................................................................................................................................................................................................................................................................................................................................................................................::::::---------:::::::::::::::::::::::::::..........................................................................................................:::::::::::::::::::......................................................................................................................................................................................................................................................................................................................................................................................................................................................::::----------:::..............::::---------------------------------:::::::........:::::::::::::::::::::::---=====---:::::...............................................................................:::::::::::::::.....................................................................................................................................................................:::---==============+++++++++++++++***************************************************************************************************************************##################********************************************+++++++++++++++++++++++++++++++++++++++++++++****************************************************************************#################################################################################################################################**********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************######################################*************#################################****############*****************************************************************************************************************************************************************************#######################################################################################################***********************************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++====================================================---------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.......................................
+++++++**************++++++++===========================================------------:::::.................................................................................................................................................................................................................................................................................................................................................................. .............................:::::::.................................................................................................................................................................................:::--=========--::...........................................................................................................................................................................................................................................................................................................................................................................................................................................................::::::------:::::::::::::::::::::::::::............................................................................................................:::::::::::::::::::.....................................................................................................................................................................................................................................................................................................................................................................................................................................................::::-----------:::..............::::---------------------------------:::::::........:::::::::::::::::::::::---=====---:::::...............................................................................:::::::::::::::.....................................................................................................................................................................:::---==============+++++++++++++++***************************************************************************************************************************##################********************************************+++++++++++++++++++++++++++++++++++++++++++++****************************************************************************################################################################################################################################***********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************######################################*************##################################**##############*****************************************************************************************************************************************************************************#################################################################################################****************************************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++=====================================================--------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.......................................
++++++***************++++++++=============================================----------:::::.................................................................................................................................................................................................................................................................................................................................................................. ..............................:::::::................................................................................................................................................................................:::--====+++===--::...........................................................................................................................................................................................................................................................................................................................................................................................................................................................:::::::::::::::::::::::::::::::::::::..............................................................................................................:::::::::::::::::::....................................................................................................................................................................................................................................................................................................................................................................................................................................................::::-------------::..............::::---------------------------------:::::::........:::::::::::::::::::::::---======--:::::..:.............................................................................::::::::::::::.....................................................................................................................................................................:::---==============+++++++++++++++***************************************************************************************************************************##################********************************************++++++++++++++++++++++++++++++++++++++++++++*****************************************************************************###############################################################################################################################************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************######################################*************##################################*###############******************************************************************************************************************************************************************************##########################*#############################################################************************************************************************************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++====================================================---------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.......................................
+++++****************++++++++===============================================--------:::::................................................................................................................................................................................................................................................................................................................................................................. ..............................:::::::...............................................................................................................................................................................:::---===++++===--::...........................................................................................................................................................................................................................................................................................................................................................................................................................................................::::::::::::::::::::::::::::::::::::................................................................................................................:::::::::::::::::.....................................................................................................................................................................................................................................................................................................................................................................................................................................................:::--------------:::.............::::---------------------------------:::::::........::::::::::::::::::::::::--======--:::::..:.............................................................................::::::::::::::.....................................................................................................................................................................:::---==============+++++++++++++++***************************************************************************************************************************##################********************************************++++++++++++++++++++++++++++++++++++++++++++****************************************************************************#############################################################################################################################***************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************#######################################************##################################################********************************************************************************************************************************************************************************######################********####################################################*****************************************************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++====================================================---------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.......................................
+++++****************++++++++================================================-------:::::................................................................................................................................................................................................................................................................................................................................................................. ..............................::::::................................................................................................................................................................................:::--===+++++===--::............................................................................................................................................................................................................................................................................................................................................................................................................................................................:::::::::::::::::::::::::::::::::..................................................................................................................:::::::....:::::.....................................................................................................................................................................................................................................................................................................................................................................................................................................................::::-----===------:::.............::::---------------------------------:::::::........::::::::::::::::::::::::--======--:::::..:..............................................................................:::::::::::::.....................................................................................................................................................................:::---==============+++++++++++++++***************************************************************************************************************************##################********************************************+++++++++++++++++++++++++++++++++++++++++++*****************************************************************************#############################################################################################################*******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************#######################################************##################################################**********************************************************************************************************************************************************************************###################**********###########################################*************************************************************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++===================================================-----------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.......................................
++++*****************++++++++================================================------:::::.................................................................................................................................................................................................................................................................................................................................................................. ...............................::::::...............................................................................................................................................................................:::--===++++++===--::............................................................................................................................................................................................................................................................................................................................................................................................................................................................:::::::::::::::::::::::::::::::.....................................................................................................................:::................................................................................................................................................................................................................................................................................................................................................................................................................................................................::::------===------:::.............::::---------------------------------:::::::........::::::::::::::::::::::::---=====--:::::..:..............................................................................:::::::::::::.....................................................................................................................................................................:::----=============+++++++++++++++***************************************************************************************************************************##################*********************************************++++++++++++++++++++++++++++++++++++++++++*****************************************************************************#########################################################################################################***********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************#######################################************##################################################***********************************************************************************************************************************************************************************#################************###################################*********************************************************************************************************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++===================================================------------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.......................................
++++****************++++++++=================================================------:::::.................................................................................................................................................................................................................................................................................................................................................................. ...............................::::::..............................................................................................................................................................................::::--==+++++++===--::.............................................................................................................................................................................................................................................................................................................................................................................................................................................................::::::::::::::::::::::::::::..........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................::::-----====-==----:::............::::---------------------------------:::::::........:::::::::..:::::::::::::---=====--:::::..:.::::::::.....................................................................:::::::::::::.....................................................................................................................................................................:::----=============+++++++++++++++****************************************************************************************************************************#################*********************************************++++++++++++++++++++++++++++++++++++++++++****************************************************************************####################################################################################################****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************########################################************##################################################************************************************************************************************************************************************************************************################**************###########################****************************************************************************************************************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++==================================================------------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.......................................
+++*****************++++++++=================================================------:::::.................................................................................................................................................................................................................................................................................................................................................................. ...............................::::::..............................................................................................................................................................................:::--===+++++++===--::.............................................................................................................................................................................................................................................................................................................................................................................................................................................................:::::::::::::::::::::::::::......... ...............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................::::------=======----:::............::::---------------------------------:::::::........:::::::::..:::::::::::::---=====--:::::::::::::::::.....................................................................:::::::::::::.....................................................................................................................................................................:::----============++++++++++++++++****************************************************************************************************************************#################*********************************************++++++++++++++++++++++++++++++++++++++++++****************************************************************************##################################################################################################******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************########################################************##################################################************************************************************************************************************************************************************************************################***************#####################*********************************************************************************************************************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++==================================================------------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.......................................
+++*****************++++++++=================================================------:::::.................................................................................................................................................................................................................................................................................................................................................................. ...............................:::::..............................................................................................................................................................................:::--===++++++++===--::.............................................................................................................................................................................................................................................................................................................................................................................................................................................................:::::::::::::::::::::::::.......... .............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................:::------========----:::............::::---------------------------------:::::::........::::::::.........::::::::--=====--::::::::.::::::::...................:::::::::::::::::..................................::::::::::::.....................................................................................................................................................................:::----=============+++++++++++++++****************************************************************************************************************************#################*********************************************++++++++++++++++++++++++++++++++++++++++++***************************************************************************######################################################################################********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************#######################################*************#################################################*************************************************************************************************************************************************************************************###############******************#############***************************************************************************************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++=================================================------------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::........................................
+++*****************++++++++=================================================------:::::.................................................................................................................................................................................................................................................................................................................................................................. ................................:::::..............................................................................................................................................................................:::--===++++++++==--:::.............................................................................................................................................................................................................................................................................................................................................................................................................................................................:::::::::::::::::::::::........... .............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................:::-----==========---:::............:::::--------------------------------:::::::........:::::::..........::::::::--=====--::::::::::::::::::::...............:::::::::::::::::::::...............................::::::::::::.....................................................................................................................................................................:::----=============+++++++++++++++****************************************************************************************************************************#################*********************************************++++++++++++++++++++++++++++++++++++++++++***************************************************************************####################################################################################**********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************#######################################*************#################################################*************************************************************************************************************************************************************************************##############***********************************************************************************************************************************************************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++=================================================------------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::........................................
++*****************+++++++++=================================================------:::::.................................................................................................................................................................................................................................................................................................................................................................. .................................::::.............................................................................................................................................................................:::--===+++++++++==--:::............................................................................................................................................................................................................................................................................................................................................................................................................................................................:::::::::::::::::::::........... ............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................:::------==========----::.............::::-------------------------------::::::::........:::::::..........::::::::--=====--:::::::::::::::::::::.............:::::::::::::::::::::::..............................::::::::::::.....................................................................................................................................................................:::----=============+++++++++++++++****************************************************************************************************************************##################********************************************++++++++++++++++++++++++++++++++++++++++++***************************************************************************##################################################################################************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************#######################################*************#################################################**************************************************************************************************************************************************************************************#############************************************************************************************************************************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++=================================================-------------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::........................................
++*****************++++++++==================================================------:::::.................................................................................................................................................................................................................................................................................................................................................................. ..................................::::............................................................................................................................................................................:::--===++++++++++==--:::...........................................................................................................................................................................................................................................................................................................................................................................................................................................................::::::::::::::::::::........... .............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................:::-----============---:::............::::-------------------------------::::::::........:::::::...........:::::::--=====--::::::::::::::::::::::...........:::::::::::::::::::::::::.............................::::::::::::.....................................................................................................................................................................:::----=============+++++++++++++++****************************************************************************************************************************##################********************************************++++++++++++++++++++++++++++++++++++++++++**************************************************************************##################################################################################*************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************#######################################*************#################################################**************************************************************************************************************************************************************************************############**************************************************************************************************************************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++================================================--------------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::........................................
+******************++++++++==================================================------::::.............................................................................................................................................................:::::::.....................................................::::::::.................................................................................................................................. ..................................::::............................................................................................................................................................................:::--===++++++++++==--:::...........................................................................................................................................................................................................................................................................................................................................................................................................................................................::::::::::::::::::........... .............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................::::-----============---:::............::::-------------------------------::::::::........::::::............:::::::---====--:::::::::::::::::::::::.........:::::::::::::::::::::::::::............................::::::::::::.....................................................................................................................................................................:::----=============+++++++++++++++****************************************************************************************************************************##################********************************************++++++++++++++++++++++++++++++++++++++++++**************************************************************************################################################################################***************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************########################################************#################################################****************************************************************************************************************************************************************************************########****************************************************************************************************************************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++================================================--------------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::........................................
*******************++++++++=================================================------:::::............................................................................................................................................................::::::::::.................................................::::::::::::................................................................................................................................ ...................................:::............................................................................................................................................................................:::--===+++++++++++==--:::..........................................................................................................................................................................................................................................................................................................................................................................................................................................................::::::::::::::::::........... .............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................:::-----=============---:::............::::-------------------------------::::::::........::::::.............::::::---====--:::::::::::::::::::::::........::::::::::::::::::::::::::::::..........................::::::::::::.....................................................................................................................................................................:::----=============+++++++++++++++****************************************************************************************************************************##################********************************************++++++++++++++++++++++++++++++++++++++++++**************************************************************************################################################################################********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************####****#**********************************************************************************************************************************************************************************########################################************#################################################******************************************************************************************************************************************************************************************####*******************************************************************************************************************************************************************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++===============================================--------------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::........................................
******************++++++++==================================================------:::::..........................................................................................................................................................:::::::::::::...............................................::::::::::::::............................................................................................................................... .....................................::.............................................................................................................................:::::::........................................:::--==++++++++++++==--::..........................................................................................................................................................................................................................................................................................................................................................................................................................................................:::::::.....::::::........... .............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................::::----==============---:::............::::-------------------------------::::::::........:::::..............::::::---====--::::::::::::::::::::::::.......:::::::::-------:::::::::::::::..........................:::::::::::.....................................................................................................................................................................:::----=============+++++++++++++++****************************************************************************************************************************##################********************************************++++++++++++++++++++++++++++++++++++++++++**************************************************************************##############################################################################***************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************#####################******************************************************************************************************************************************************************************#######################################************#################################################*****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++===============================================--------------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::........................................
******************++++++++==================================================------:::::.........................................................................................................................................................:::::::::::::::.............................................:::::::::::::::............................................................................................................................... ..................................................................................................................................................................:::::::::::::...................................:::--===++++++++++++==--::.........................................................................................................................................................................................................................................................................................................................................................................................................................................................::::::.........::::.......... ..............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................::::----===============--:::............::::-------------------------------::::::::........:::::...............::::::--====--::::::::::::::::::::::::.......:::::::-------------::::::::::::.........................:::::::::::.....................................................................................................................................................................:::----=============+++++++++++++++****************************************************************************************************************************##################********************************************++++++++++++++++++++++++++++++++++++++++++**************************************************************************#############################################################################*************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************#########################*****************************************************************************************************************************************************************************#######################################************#################################################*****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++===============================================--------------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::........................................
******************++++++++==================================================------:::::.........................................................................................................................................................::::::::::::::::...........................................:::::::::::::::::.............................................................................................................................. .................................................................................................................................................................::::::::::::::::................................:::--===++++++++++++===--::.........................................................................................................................................................................................................................................................................................................................................................................................................................................................:::::...................... ................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................:::-----===============--:::............::::------------------------------:::::::::........::::::...............:::::--====--::::::::::::::::::::::::.......::::::----------------::::::::::..........................::::::::::.....................................................................................................................................................................:::----=============++++++++++++++++***************************************************************************************************************************##################*******************************************+++++++++++++++++++++++++++++++++++++++++++**************************************************************************############################################################################*************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************###########################*****************************************************************************************************************************************************************************######################################*************################################################******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++================================================-------------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.......................................
******************++++++++=================================================-------:::::........................................................................................................................................................::::::::::::::::::.........................................::::::::::::::::::.............................................................................................................................. ..................................................................................................................................................................:::::------:::::::..............................:::--===++++++++++++===--::......................................................................................................................................................................................................................................................................................................................................................................................................................................................:::::::....................... .................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................:::-----===============--:::............::::------------------------------:::::::::.......:::::::...............:::::---===--::::::::::::::::::::::::.......::::::-----------------::::::::::.........................::::::::::.....................................................................................................................................................................:::----=============++++++++++++++++***************************************************************************************************************************##################*******************************************+++++++++++++++++++++++++++++++++++++++++++**************************************************************************###########################################################################*************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************#############################****************************************************************************************************************************************************************************######################################*************################################################******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++===============================================--------------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.......................................
******************++++++++=================================================-------:::::.......................................................................................................................................................::::::::::::::::::::.......................................::::::::::::::::::::............................................................................................................................. ..................................................................................................................................................................:::-----------::::::...........................:::--===+++++++++++++===-:::..................................................................................................................................................................................................................................................................................................................................................................................................................................................::::::::::....................... ...................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................:::----================--:::...........::::--------------========----------::::::::.......:::::::...............:::::---===--::::::..:::::::::::::::........:::::-------------------:::::::::::........................:::::::::.....................................................................................................................................................................:::----=============++++++++++++++++***************************************************************************************************************************##################********************************************++++++++++++++++++++++++++++++++++++++++++***************************************************************************#########################################################################*************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************###############################***************************************************************************************************************************************************************************######################################*************################################################******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++===============================================---------------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.......................................
******************++++++++==================================================------::::.......................................................................................................................................................:::::::::::::::::::::................................::::::::::::::::::::::::::::............................................................................................................................ .................................................................................................................................................................::::----==-------::::::.........................:::--===+++++++++++++==--:::................................................................................................................................................................................................................................................................................................................................................................................................................................................:::::::::::........................ ....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................::::----================--:::...........::::-------------==========----------:::::::.......::::::::..............::::::---=---:::::......::::::::::::........:::::---------------------:::::::::::.......................::::::::.....................................................................................................................................................................:::----=============++++++++++++++++***************************************************************************************************************************##################********************************************++++++++++++++++++++++++++++++++++++++++++****************************************************************************#######################################################################**************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************################################**************************************************************************************************************************************************************************#######################################**************###############################################******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++===============================================---------------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.......................................
******************++++++++==================================================------::::......................................................................................................................................................::::::::::::::::::::::::............................::::::::::::::::::::::::::::::........................................................................................................................... .................................................................................................................................................................::::---=======------:::::.......................::--===++++++++++++++==--:::..............................................................................................................................................................................................................................................................................................................................................................................................................................................:::::::::::::...... ................ .......................................................................................................................................................................................................................................................................................................................................................................................................................................................................::::::........................................................................................................::::----================---::...........::::-----------=============---------:::::::......:::::::::...............:::::-------::::..........::::::::........::::::----------------------:::::::::::::....................::::::::......................................................................................................................................................................::----=============++++++++++++++++****************************************************************************************************************************#################********************************************+++++++++++++++++++++++++++++++++++++++++******************************************************************************#####################################################################***************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************################################***************************************************************************************************************************************************************************######################################***************##############################################******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++==============================================---------------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.......................................
*****************++++++++===================================================------::::...................................................................................................................................................::::::::::::::::::::::::::::.........................::::::::::::::::::::::::::::::::........................................................................................................................... .................................................................................................................................................................:::---==========-----:::::::...................:::--===++++++++++++++==--:::.............................................................................................................................................................................................................................................................................................................................................................................................................................................:::::::::::::...... ................ .......................................................................................................................................................................................................................................................................................................................................................................................................................................................................::::::::.......................................................................................................:::----=================---::...........:::----------===============--------::::::::......:::::::::...............:::::-------::::..........................::::::------------------------::::::::::::....................::::::.......................................................................................................................................................................:::---==============+++++++++++++++****************************************************************************************************************************##################*******************************************+++++++++++++++++++++++++++++++++++++++++******************************************************************************###################################################################*****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************#################################**************************************************************************************************************************************************************************######################################**************###############################################*******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++===============================================---------------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.......................................
*****************++++++++====================================================------:::................................................................................................................................................::::::::::::-------::::::::::::::::....................:::::::::::::::::::::::::::::::::........................................................................................................................... ..................................................................................................................................................................:::---=============-----::::::.................::--===++++++++++++++===--:::............................................................................................................................................................................................................................................................................................................................................................................................................................................:::::::::::::....... ............... .....................................................................................................................................................................................................................................................................................................................................................................................................................................................................::::::::::::......................................................................................................:::----=================---:::..........:::--------=================--------::::::::......::::::::::...............::::-------::::..........................::::::-------------------------::::::::::::::::...............::::::.......................................................................................................................................................................:::---==============+++++++++++++++****************************************************************************************************************************##################*******************************************++++++++++++++++++++++++++++++++++++++++********************************************************************************#################################################################******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************#################################***************************************************************************************************************************************************************************#####################################**************###############################################********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++==============================================---------------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.......................................
*****************++++++++====================================================------:::..............................................................................................................................................::::::::::-----------------::::::::::::::..............::::::::::::::::::::::::::::::::::::.......................................................................................................................... ..................................................................................................................................................................:::---==============------::::::..............:::--===++++++++++++++===--::............................................................................................................................................................................................................................................................................................................................................................................................................................................::::::::::::::...... ................ .......................................................................................................................................................................................................................................................................................................................................................................................................................................................................::::::::::::......................................................................................................:::----==================--:::..........::-------===================-------:::::::::......::::::::::................:::-------::::..........................::::::--------------------------::::::::::::::::..............::::::.......................................................................................................................................................................:::---==============+++++++++++++++****************************************************************************************************************************##################*******************************************++++++++++++++++++++++++++++++++++++++++********************************************************************************#################################################################*****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************##################################****************************************************************************************************************************************************************************####################################*************#################################################*******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++==============================================---------------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.......................................
*****************++++++++=====================================================-----:::............................................................................................................................................::::::::::----------------------::::::::::::::::::......:::::::::::::::::::::::::::::::::::::.......................................................................................................................... ..................................................................................................................................................................::::--=================-----:::::.............::---==+++++++++++++++===-:::...........................................................................................................................................................................................................................................................................................................................................................................................................................................::::::::::::::...... .........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................::::::::::::......................................................................................................:::----==================--:::..........::-----===========++========-------::::::::::.....::::::::::................::::------::::...........................:::::---------------------------::::::::::::::::..........:::::::::.......................................................................................................................................................................:::---==============+++++++++++++++****************************************************************************************************************************##################*******************************************++++++++++++++++++++++++++++++++++++++++*********************************************************************************##############################################################*******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************##################################****************************************************************************************************************************************************************************####################################**************################################################********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++===============================================---------------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.......................................
****************++++++++=======================================================-----::............................................................................................................................................:::::::----------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.......................................................................................................................... ....................................................................................................................................................................:::--===================-----::::...........:::--===+++++++++++++++==--:::.........................................................................................................................................................................................................................................................................................................................................................................................................................................:::::::---:::::...... .......:.................................................................................................................................................................................................................................................................................................................................................................................................................................................................................:::::::::::::.....................................................................................................:::----==================--:::.........:::---============++++++=====-------::::::::::.....::::::::::................::::------::::...........................::::::--------------------------:::::::::::::::::::.......:::::::::.......................................................................................................................................................................:::---==============+++++++++++++++****************************************************************************************************************************##################*******************************************++++++++++++++++++++++++++++++++++++++++**********************************************************************************###########################################################*********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************##################################****************************************************************************************************************************************************************************####################################**************################################################********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++==============================================---------------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.......................................
+***************++++++++========================================================----::...........................................................................................................................................:::::------------------------------------::::::::::::::::::::::------::::::::::::::::::::::::::......................................................................................................................... ....................................................................................................................................................................:::--=====================----::::..........:::--==++++++++++++++++==--:::........................................................................................................................................................................................................................................................................................................................................................................................................................................::::::-----::::...... .......::................................................................................................................................................................................................................................................................................................................................................................................................................................................................................:::::::::::::.....................................................................................................:::---===================--:::........:::---===========+++++++=====--------::::::::::.....::::::::::................::::------:::::..........................::::::-------------------------:::::::::::::::::::::::::..:::::::::.......................................................................................................................................................................:::---==============+++++++++++++++****************************************************************************************************************************###################******************************************++++++++++++++++++++++++++++++++++++++++************************************************************************************########################################################***********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************#################################****************************************************************************************************************************************************************************####################################**************################################################********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++==============================================---------------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.......................................
+***************++++++++=========================================================---:::.........................................................................................................................................:::::-----------------------------------------:::::::::::::::::-------------::::::::::::::::::::......................................................................................................................... ....................................................................................................................................................................::::--======================----:::........:::--===++++++++++++++++==--:::.......................................................................................................................................................................................................................................................................................................................................................................................................................................::::::------::::...... .......:::...............................................................................................................................................................................................................................................................................................................................................................................................................................................................................:::::::::::::....................................................................................................::::---===================--:::.......:::---==========++++++++======-------:::::::::::.....::::::::::................::::------:::::..........................::::::------------------------::::::::::::::::::::::::::::::::::::::......................................................................................................................................................................:::---==============+++++++++++++++****************************************************************************************************************************###################******************************************+++++++++++++++++++++++++++++++++++++++*************************************************************************************#######################################################************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************#################################*****************************************************************************************************************************************************************************###################################**************################################################*********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++==============================================---------------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.......................................
++**************+++++++==========================================================---:::.........................................................................................................................................::::------------------------------------------------::::::::--------------------::::::::::::::::......................................................................................................................... ......................................................................................................................................................................:::--=============+++=======----:::.......:::--===+++++++++++++++===--::...................:...................................................................................................................................................................................................................................................................................................................................................................................................................::::::------::::...... ......:::::...............................................................................................................................................................................................................................................................................................................................................................................................................................................................................:::::::::::.....................................................................................................:::----===================--:::......:::---========+++++++++++=====-------::::::::::::.....::::::::::...............:::::------:::::..........................::::::-----------------------:::::::::::::::::::::::::::::::::::::::......................................................................................................................................................................:::---==============+++++++++++++++*****************************************************************************************************************************##################******************************************+++++++++++++++++++++++++++++++++++++++****************************************************************************************###################################################*************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************#################################******************************************************************************************************************************************************************************###################################*************################################################**********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++==============================================--------------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.......................................
++*************++++++++==========================================================---:::........................................................................................................................................:::::---------------------------------------------------------------------------------::::::::::::........................................................................................................................ .......................................................................................................................................................................:::---==========++++++++=====---:::......::::--==++++++++++++++++==--:::..................:::..................................................................................................................................................................................................................................................................................................................................................................................................................:::::-------:::...... ......::::::..............................................................................................................................................................................................................................................................................................................................................................................................................................................................................:::::::::::.....................................................................................................:::----===================--::::...::::---========++++++++++++=====-------::::::::::::.....::::::::::..........::::::::::------::::::.........................:::::::----------------------:::::::::::::::::::::::::::::::::::::::......................................................................................................................................................................:::---==============+++++++++++++++*****************************************************************************************************************************##################******************************************++++++++++++++++++++++++++++++++++++++*******************************************************************************************#############################################*****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************#################################******************************************************************************************************************************************************************************###################################*************################################################***********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++==============================================-------------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.......................................
++*************++++++++==========================================================---:::........................................................................................................................................::::---------------------------------------------------------------------------------------::::::::...................................................................................................................... ........................................................................................................................................................................::::--=========++++++++++=====---::::....:::--===++++++++++++++++==--:::.................:::::...............................................................................................................................::...............................................................................................................................................................................................................................................................................:::::-------:::...... ......::::::::.............................................................................................................................................................................................................................................................................................................................................................................................................................................................................:::::::::......................................................................................................:::----===================---:::::::::----======+++++++++++++=====--------::::::::::::.....::::::::::........::::::::::::------:::::::::::.....................::::::---------------------::::::::::::::::::::::::::::::::::::::::......................................................................................................................................................................:::---==============+++++++++++++++*****************************************************************************************************************************##################******************************************++++++++++++++++++++++++++++++++++++++********************************************************************************************############################################*****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************##################################******************************************************************************************************************************************************************************##################################*************################################################************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++===============================================------------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.......................................
++*************++++++++==========================================================---:::........................................................................................................................................::::------------------------------------------------------------------------------------------::::::..................................................................................................................... .........................................................................................................................................................................:::---========++++++++++++====---::::..::::--===+++++++++++++++===--:::.................:::::.............................................................................................................................:::::..............................................................................................................................................................................................................................................................................:::::------::::...... .....::::::::::.............................................................................................................................................................................................................................................................................................................................................................................................................................................................................:::::::.......................................................................................................:::---====================---::::::::---=======++++++++++++++=====-------:::::::::::::.....::::::::::.......:::::::::::::------:::::::::::::....................:::::---------------------::::::::::::::::::::::::::::::::::::::::......................................................................................................................................................................:::---==============+++++++++++++++*****************************************************************************************************************************##################******************************************++++++++++++++++++++++++++++++++++++++***********************************************************************************************########################################*******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************#################################******************************************************************************************************************************************************************************##################################*************################################################************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++==============================================-------------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.......................................
++*************++++++++==========================================================---:::.......................................................................................................................................:::::-------------------------------------------------------------------------------------------::::::::.................................................................................................................. ..........................................................................................................................................................................:::--=========++++++++++++====--:::::.::::--==++++++++++++++++==--:::..................:::::............................................................................................................................:::::::.............................................................................................................................................................................................................................................................................:::::-----::::...... .....:::::::::::..........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................:::---====================---::::::----======++++++++++++++++=====-------:::::::::::::.....::::::::::.......::::::::::::::------:::::::::::::::.................::::::---------------------:::::::::::::::::::::::::::::::::::..........................................................................................................................................................................:::---==============+++++++++++++++*****************************************************************************************************************************##################*******************************************++++++++++++++++++++++++++++++++++++++***************************************************************************************************####################################******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************#################################*******************************************************************************************************************************************************************************#################################************##################################################************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++==============================================-------------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.......................................
++************++++++++===========================================================---:::.......................................................................................................................................:::::---------------------------------------------------------------------------------------------::::::::................................................................................................................ ..........................................................................................................................................................................:::---========++++++++++++=====--:::::::::--==+++++++++++++++===--:::.................::::::............................................................................................................................::::::::............................................................................................................................................................................................................................................................................:::::::-:::::...... ....::::::::::::..........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................:::---====================------------======++++++++++++++++======-------:::::::::::::.....::::::::::......:::::::::::::::--------:::::::::::::::::.............::::::---------------------:::::::::::::::::::::::::::::::::::..........................................................................................................................................................................:::---==============+++++++++++++++*****************************************************************************************************************************##################*******************************************++++++++++++++++++++++++++++++++++++++*****************************************************************************************************#################################*******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************#################################*******************************************************************************************************************************************************************************#################################************##################################################************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++==============================================--------------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.......................................
++************++++++++==========================================================----::........................................................................................................................................:::::------------------------------------------------------------------------------------------------:::::::.............................................................................................................. ...........................................................................................................................................................................:::---=========+++++++++++====---:::::::---==+++++++++++++++==--:::..................::::::...........................................................................................................................:::::::::............................................................................................................................................................................................................................................................................::::::::::::...... .....:::-----::::..........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................:::---=====================---------=======+++++++++++++++++=====-------::::::::::::::.....:::::::::.......:::::::::::::::---------::::::::::::::::::...........::::::-----------------------::::::::::::::::::::::::::::::.............................................................................................................................................................................:::---==============++++++++++++++++****************************************************************************************************************************##################*******************************************++++++++++++++++++++++++++++++++++++++********************************************************************************************************###########################**********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************##################################******************************************************************************************************************************************************************************#################################*************#################################################************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++===============================================-------------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.......................................
++***********++++++++===========================================================---:::........................................................................................................................................:::::---------------------------------------------------------------------------------------------------:::::............................................................................................................. ...........................................................................................................................................................................::::--=========++++++++++++====---::::::--===++++++++++++++===--:::..................::::::...........................................................................................................................:::::::::.............................................................................................................................................................................................................................................................................::::::::::...... ....:::------::::..........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................:::---======================------=======++++++++++++++++++=====--------:::::::::::::::.....::::::::......:::::::::::::::::-----------::::::::::::::::::........::::::------------------------::::::::::::::::::::::::::::..............................................................................................................................................................................:::---===============+++++++++++++++****************************************************************************************************************************##################*******************************************++++++++++++++++++++++++++++++++++++++*********************************************************************************************************#########################***********************************************************************************************+++++++*****************************************************************************************************************************************************************************************************************************************************************************************##################################*******************************************************************************************************************************************************************************################################*************#################################################*************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++===============================================--------------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.......................................
+**********+++++++++===========================================================----:::........................................................................................................................................:::::-----------------------------------------------------------------------------------------------------:::::........................................................................................................... .............................................................................................................................................................................:::---========+++++++++++++===----::::---==+++++++++++++++===--::...................::::::..........................................................................................................................::::::::::..............................................................................................................................................................................................................................................................................::::::::...... ....:::-------:::..........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................:::---==================================++++++++++++++++++======--------:::::::::::::::.....:::::::.......:::::::::::::::::---------------::::::::::::::::.....:::::::--------------------------:::::::::::::::::::::::::...............................................................................................................................................................................:::---===============+++++++++++++++****************************************************************************************************************************##################*******************************************++++++++++++++++++++++++++++++++++++++*********************************************************************************************************###################*####*******************************************************++++++++++++++*************************+++++++++++++*************************************************************++++*****************##########*****************************************************************************************************************************************************************************************##################################*******************************************************************************************************************************************************************************################################*************#################################################**************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++================================================-------------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.......................................
*********++++++++++============================================================----:::........................................................................................................................................::::-------------------------------------------------------------------------------------------------------:::::.......................................................................................................... ..............................................................................................................................................................................::::--========+++++++++++++====-----:----==+++++++++++++++==--:::..................:::::::..........................................................................................................................::::::::::............................................................................................................................................................................................................................................................................................ ....::::-------::::.........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................:::---================================++++++++++++++++++++=====--------::::::::::::::::....::::::::.......::::::::::::::::::-----------------:::::::::::::::::::::::::----------------------------::::::::::::::::::::::.......:........................................................................................................................................................................:::---===============+++++++++++++++****************************************************************************************************************************##################*******************************************++++++++++++++++++++++++++++++++++++++********************************************************************************************************#################******************************************++++++++++*****+++++++++++++++++++++++********************++++++++++++++++++********************************************************+++++++++++**********##############****************************************************************************************************************************************************************************************#################################*******************************************************************************************************************************************************************************#################################************#################################################***************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++===============================================--------------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.......................................
*****+++++++++++++============================================================-----:::........................................................................................................................................::::--------------------------------------------------------------------------------------------------------::::.......................................................................................................... ...............................................................................................................................................................................::::--===========++++++++++====--------===++++++++++++++===--::...................:::::::.........................................................................................................................:::::::::::............................................................................................................................................................................................................................................................................................ .....::::-------::::.........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................::----==============================+++++++++++++++++++++=====---------::::::::::::::::.::::::::::........::::::::::::::::::--------------------::::::::::::::::::::::-------------------------------:::::::::::::::::::...:::::........................................................................................................................................................................:::----==============+++++++++++++++****************************************************************************************************************************###################******************************************++++++++++++++++++++++++++++++++++++++*****************************************************************************************************#################******************************************+++++++++++++++++++++++++++++++++++++++++++***************++++++++++++++++++++++++++**********************+++++**********************++++++++++++*********##################**************************************************************************************************************************************************************************************#################################********************************************************************************************************************************************************************************################################************#################################################***************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++================================================-------------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.......................................
+****+++++++++++========------================================================----:::.........................................................................................................................................::::---------------------------------------------------------------------------------------------------------::::......................................................................................................... ................................................................................................................................................................................:::---==========+++++++++++====------===+++++++++++++++==--:::...................:::::::.........................................................................................................................:::::::::::............................................................................................................................................................................................................................................................................................ ......::::-------::::.........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................::----============================+++++++++++++++++++++++=====--------::::::::::::::::::::::::::::........::::::::::::::::::----------------------:::::::::::::::::::-----------------------------------::::::::::::::::..::::::........................................................................................................................................................................:::----==============+++++++++++++++****************************************************************************************************************************###################******************************************++++++++++++++++++++++++++++++++++++++****************************************************************************************************#################****************************************+++++++++++++++++++++++++++++++++++++++++++++++*************+++++++++++++++++++++++++++++++*****************++++++++********************++++++++++++********#####################************************************************************************************************************************************************************************************##################################*******************************************************************************************************************************************************************************################################************#################################################***************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++================================================--------------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.......................................
***++++++++++++=======--------------==========================================----:::.........................................................................................................................................::::----------------------------------------------------------------------------------------------------------::::........................................................................................................ ................................................................................................................................................................................::::--=========++++++++++++=============++++++++++++++===--:::...................:::::::.........................................................................................................................:::::::::::.............................................................................................................................................................................................................................................................................................. .........::::-------:::..........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................::----====================+==+++++++++++++++++++++++++++=====----------::::::::::::::::::::::::::.........:::::::::::::::::::------------------------::::::::::::::::-------------------------------------::::::::::::::::::::::::::::..................................................................................................................................................................::::---==============+++++++++++++++*****************************************************************************************************************************##################******************************************++++++++++++++++++++++++++++++++++++++++******************************************************************************************#**#################*********************************************+++++++++++++++++++++++++++++++++++++++++++++++++++******+++++++++++++++++++++++++++++++++++++*******+++++++++++++++******************++++++++++++++*******#######################***********************************************************************************************************************************************************************************#################################********************************************************************************************************************************************************************************################################************#################################################*****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++================================================--------------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::......................................
***+++++++++++=======-------------------=====================================-----:::.........................................................................................................................................::::-----------------------------------------------------------------------------------------------------------:::........................................................................................................ .................................................................................................................................................................................:::---===========++++++++++===========+++++++++++++++===--::....................:::::::........................................................................................................................::::::::::::............................................................................................................................................................................................................................................................................................... ...........:::-------:::..........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................::----=================+++++++++++++++++++++++++++++++++=====----------::::::::::::::::::::::::::.........:::::::::::::::::::--------------------------:::::::::::::----------------------------------------:::::::::::::::::::::::::::.................................................................................................................................................................::::---==============+++++++++++++++*****************************************************************************************************************************##################******************************************++++++++++++++++++++++++++++++++++++++++*****************************************************************************************####################********************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++***++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****************++++++++++++++******#########################**********************************************************************************************************************************************************************************#################################********************************************************************************************************************************************************************************################################************#################################################*****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++================================================--------------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::......................................
****+++++++++=======-------------------------================================-----:::.........................................................................................................................................::::-----------------------------------------------------------------------------------------------------------::::....................................................................................................... ...................................................................................................................................................................................:::---==========++++++++++++========++++++++++++++++==--:::...................::::::::........................................................................................................................::::::::::::...............................................................................................................................................................................................................................................................................................................::::-----::::..........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................:::---================+++++++++++++++++++++++++++++++++=====-----------::::::::::::::::::::::::.:.........:::::::::::::::::::------------------------------:::::::--------------------------------------------:::::::::::::::::::::::::.................................................................................................................................................................::::---==============+++++++++++++++****************************************************************************************************************************###################******************************************++++++++++++++++++++++++++++++++++++++++*****************************+++++**********************************************#########################***********************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****************+++++++++++*******###########################*********************************************************************************************************************************************************************************##################################*******************************************************************************************************************************************************************************################################*************################################################******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++=================================================--------------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::......................................
****+++++++++======------::::--------------------===========================-----::::.........................................................................................................................................::::------------------------------------------------------------------------------------------------------------:::....................................................................................................... ...................................................................................................................................................................................::::---=========+++++++++++++======++++++++++++++++===--:::...................::::::::........................................................................................................................::::::::::::................................................................................................................................................................................................................................................................................................................::::----::::..........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................:::---==============++++++++++++++++++++++++++++++++++======----------::::::::::::::::::::::::............:::::::::::::::::::-----------------------------------------------------------------------------------:::::::::::::::::::::::.................................................................................................................................................................::::---==============+++++++++++++++****************************************************************************************************************************###################******************************************+++++++++++++++++++++++++++++++++++++++++***************************+++++++****************************************############################************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******************+++++++********############################*********************************************************************************************************************************************************************************#################################********************************************************************************************************************************************************************************################################*************################################################******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++================================================--------------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::......................................
****+++++++++======-----:::::------------------------=======================-----::::.........................................................................................................................................::::------------------------------------------------------------------------------------------------------------::::..................................................................................................... ....................................................................................................................................................................................:::----==========++++++++++++++=++++++++++++++++++==---::::..................::::::::........................................................................................................................::::::::::::................................................................................................................................................................................................................................................................................................................::::::-:::::..........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................:::---=============+++++++++++++++++++++++++++++++++++=====-----------::::::::::::::::::::::::............:::::::::::::::::::--------------------------------------------------------------------------------------::::::::::::::::::::::................................................................................................................................................................:::---==============++++++++++++++++***************************************************************************************************************************###################******************************************+++++++++++++++++++++++++++++++++++++++++**********************************************************************############################***************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********************************##############################********************************************************************************************************************************************************************************#################################********************************************************************************************************************************************************************************#################################*************###############################################*******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++=================================================-------------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::......................................
****++++++++=======-----::::::---------------------------------------------------::::.........................................................................................................................................::::-------------------------------------------------------------------------------------------------------------:::..................................................................................................... ......................................................................................................................................................................................:::----==========+++++++++++++++++++++++++++++++===---:::::................:::::::::........................................................................................................................::::::::::::.................................................................................................................................................................................................................................................................................................................:::::::::::..........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................:::---============+++++++++++++++++++++++++++++++++++=====-----------::::::::::::::::::::::::............::::::::::::::::::::----------------------------------------------------------------------------------------::::::::::::::::::::................................................................................................................................................................:::---==============++++++++++++++++****************************************************************************************************************************##################******************************************++++++++++++++++++++++++++++++++++++++++++***************************++*********************************################################*****************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********************************################################********************************************************************************************************************************************************************************################################*****************************************************************************************************************************************************************#**************#################################*************###############################################*******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++================================================-------------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::......................................
****++++++++=======-----::::::---------------------------------------------------:::.........................................................................................................................................:::::-------------------------------------------------------------------------------------------------------------:::..................................................................................................... .......................................................................................................................................................................................:::----==========++++++++++++++++++++++++++++++===--::::::::..............:::::::::.......................................................................................................................:::::::::::::.................................................................................................................................................................................................................................................................................................................::::::::::...........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................:::---===========+++++++++++++++++++++++++++++++++++======-----------::::::::::::::::::::::::............::::::::::::::::::::-------------------------------------------------------------------------------------------::::::::::::::::::...............................................................................................................................................................:::---===============+++++++++++++++****************************************************************************************************************************##################*****************************************++++++++++++++++++++++++++++++++++++++++++++*******************************************************###################################*********************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********+*+++++++++++++++++++++++++++++++++++++++++++++++*************************************#################################********************************************************************************************************************************************************************************################################*****************************************************************************************************************************************************************#**************#################################**************##############################################********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++================================================-------------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.......................................
***+++++++++======------::::::--------------------------------------------------::::.........................................................................................................................................::::--------------------------------------------------------------------------------------------------------------:::..................................................................................................... ........................................................................................................................................................................................::::----=========+++++++++++++++++++++++++++++===---:::::::::::::........::::::::::.......................................................................................................................:::::::::::::..................................................................................................................................................................................................................................................................................................................::::::::.............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................:::---=========+++++++++++++++++++++++++++++++++++======-------------:::::::::::::::::::::::...:........::::::::::::::::::::---------------------------------------------------------------------------------------------::::::::::::::::...............................................................................................................................................................:::---===============+++++++++++++++****************************************************************************************************************************##################*****************************************++++++++++++++++++++++++++++++++++++++++++++**************************************************#####################################*************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++***************************++++++++++++++++++++++++++++++++**************************************####################################***********************************************######**************************************************************************************************************************################################*****************************************************************************************************************************************************************#**************#################################**************##############################################********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++=================================================-------------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.......................................
***+++++++++======------::::::----------------------------::::::::::::---------:::::.........................................................................................................................................::::--------------------------------------------------------------------------------------------------------------:::..................................................................................................... .........................................................................................................................................................................................::::----==========+++++++++++++++++++++++++++===---:::::::::::::::::::::::::::::::........................................................................................................................::::::::::::....................................................................................................................................................................................................................................................................................................................:::::..............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................:::---=========++++++++++++++++++++++++++++++++++======-------------:::::::::::::::::::::::::...........::::::::::::::::::::----------------------------------------------------------------------------------------------:::::::::::::::...............................................................................................................................................................:::---===============+++++++++++++++****************************************************************************************************************************##################*****************************************++++++++++++++++++++++++++++++++++++++++++*********************************************#########################################********************************************************************************+++++++++++++++++++++++++++++++************************************++++++++++++++++++++++++++**************#####################****#########################################****************############****************###########**********************************************************************************************************************################################********************************************************************************************************************************************************************************##################################********************########################################********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++================================================--------------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::......................................
***++++++++=======------::::::--------------------------:::::::::::::::::-----::::::.........................................................................................................................................::::--------------------------------------------------------------------------------------------------------------:::..................................................................................................... ..........................................................................................................................................................................................::::----==========+++++++++++++++++++++++++===---::::::::::::::::::::::::::::::::::......................................................................................................................::::::::::::.....................................................................................................................................................................................................................................................................................................................:.................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................:::---========++++++++++++++++++++++++++++++++++======--------------:::::::::::::::::::::::::...........::::::::::::::::::::----------------------------------------------------------------------------------------------:::::::::::::::...............................................................................................................................................................:::---===============+++++++++++++++****************************************************************************************************************************##################*****************************************++++++++++++++++++++++++++++++++++++++++++*****************************************#########################################********************************************************************************************************************************************************++++++++++++++++++++***************#########################################################################*#########################***************############**********************************************************************************************************************###############################********************************************************************************************************************************************************************************##################################*********************#######################################*********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++================================================--------------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::......................................
***++++++++=======------::::::------------------------:::::::::.::::::::::::::::::::.........................................................................................................................................::::--------------------------------------------------------------------------------------------------------------:::..................................................................................................... ...........................................................................................................................................................................................:::::---==========++++++++++++++++++++++++===---::::::::::::::::::::::::::::::::::::....................................................................................................................::::::::::::........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................::---========+++++++++++++++++++++++++++++++++======---------------::::::::::::::::::::::::::.........:::::::::::::::::::::----------------------------------------------------------------------------------------------:::::::::::::::...............................................................................................................................................................:::---===============+++++++++++++++****************************************************************************************************************************##################*****************************************+++++++++++++++++++++++++++++++++++++****************************************##########################################*****************************************************************************************************************************************************************++++++++++++**************########################################################################################################***************#############*********************************************************************************************************************##############################*********************************************************************************************************************************************************************************##################################*********************######################################***********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++=================================================-------------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::......................................
***++++++++=======------::::::-----------------::::--::::::::........:::::::::::::::.........................................................................................................................................::::--------------------------------------------------------------------------------------------------------------:::..................................................................................................... ............................................................................................................................................................................................:::::----=========++++++++++++++++++++++===---:::::::::::::::::::::::::::::::::::::::::::..............................................................................................................::::::::::::........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................:::--======+++++++++++++++++++++++++++++++++========---------------::::::::::::::::::::::::::.........:::::::::::::::::::::-----------------------------------------------------------------------------------------------:::::::::::::::..............................................................................................................................................................:::---===============+++++++++++++++****************************************************************************************************************************##################*****************************************+++++++++++++++++++++++++++++++****************************************############################################*****************************************************************************************************************************#####################******************************************###########################################################################################################***************###############*******************************************************************************************************************##############################*********************************************************************************************************************************************************************************##################################**********************#####################################***********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++================================================--------------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::......................................
***++++++++======-------::::::-----------------:::::::::::::..........::::::::::::::.........................................................................................................................................::::--------------------------------------------------------------------------------------------------------------:::..................................................................................................... ...............................................................................................................................................................................................::::-----========+++++++++++++++++++++===---::::::..........:::::::::::::::::::::::::::::::::.........................................................................................................:::::::::::........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................:::--======+++++++++++++++++++++++++++++++=========----------------::::::::::::::::::::::::::........::::::::::::::::::::::-----------------------------------------------------------------------------------------------:::::::::::::::..............................................................................................................................................................:::---===============+++++++++++++++****************************************************************************************************************************##################******************************************+++++++++++++++++++*************************************######################################################***************************************************#######################################################################################################*********************************#################################################################################################################**************################*******************************************************************************************************************#############################*********************************************************************************************************************************************************************************##################################**********************#####################################************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++=================================================-------------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::......................................
***+++++++=======--------::::-----------------::::::::::::::...........:::::::::::::.........................................................................................................................................::::--------------------------------------------------------------------------------------------------------------:::..................................................................................................... ................................................................................................................................................................................................:::::----========++++++++++++++++++++===---::::::.............::::::::::::::::::::::::::::::::::::....................................................................................................:::::::::.........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................:::--=======++++++++++++++++++++++++++++==========-----------------:::::::::::::::::::::::::::......:::::::::::::::::::::::----------------------------------------------------------------------------------------------::::::::::::::::..............................................................................................................................................................:::---===============+++++++++++++++****************************************************************************************************************************###################*****************************************************************************************##########################################################**********************************************#####################################################################################################################***********************######################################################################################################################**************#################******************************************************************************************************************#############################*********************************************************************************************************************************************************************************##################################************************##################################***************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++==================================================-------------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::......................................
**++++++++=======--------:::-----------------:::-:::::::::::...........:::::::::::::.........................................................................................................................................::::--------------------------------------------------------------------------------------------------------------:::.................................................................................................... ..................................................................................................................................................................................................::::-----========++++++++++++++++++===----:::::::..............::::::::::::::::::::::::::::::::::::::::.............................................................................................:::::::::.........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................:::--========+++++++++++++++++++++++++===========-----------------::::::::::::::::::::::::::::.:...::::::::::::::::::::::::----------------------------------------------------------------------------------------------::::::::::::::::..............................................................................................................................................................:::---===============+++++++++++++++****************************************************************************************************************************###################**********************************************************************************#############################################################*********************************************########################################################################################################################################################################################################################################################################**************#################*****************************************************************************************************************#############################*********************************************************************************************************************************************************************************##################################************************################################*****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++==================================================------------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::......................................
**++++++++======----------------------------::::-::::::::::.............::::::::::::.........................................................................................................................................:::---------------------------------------------------------------------------------------------------------------:::.................................................................................................... ....................................................................................................................................................................................................:::::-----=======+++++++++++++++++===------:::::..............::::::::::::::::::::::::::::::::::::::::::::::........................................................................................::::::::.........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................:::--========+++++++++++++++++++++++===========-------------------:::::::::::::::::::::::::::::::..::::::::--::::::::::::::----------------------------------------------------------------------------------------------::::::::::::::::..............................................................................................................................................................::::---==============+++++++++++++++****************************************************************************************************************************###################*************************************************************************##################################################################***********************************######################################################################################################################################################################################################################################################################################**************#################*****************************************************************************************************************#############################*********************************************************************************************************************************************************************************##################################************************################################*****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++==================================================------------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::......................................
**++++++++======--------------------------------::::::::::::...........:::::::::::::.........................................................................................................................................:::---------------------------------------------------------------------------------------------------------------:::.................................................................................................... ......................................................................................................................................................................................................:::::-----======++++++++++++++++====------:::::..............:::::::::::::::::::::::::::::::::::::::::::::::::....................................................................................::::::::.........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................:::--=========++++++++++++++++++++===========----------------------:::::::::::::::::::::::::::::::..::::::----::::::::::::-----------------------------------------------------------------------------------------------::::::::::::::::..............................................................................................................................................................::::---==============++++++++++++++++***************************************************************************************************************************####################***********************************************************############################################################################**************************##################################################################################################################################################################################################################################################################################################**************###################****************************************************************************************************************#############################******************************************************************************************************************************************************************####**********##################################************#***********########********######**#########******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++==================================================------------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.....................................
**++++++++======--------------------------------::::::::::::...........:::::::::::::.........................................................................................................................................:::--------------------------------------------------------------------------------------------------------------::::.................................................................................................... ........................................................................................................................................................................................................:::::----=======+++++++++++++++======-----:::::............::::::::::::.:::::::::::::::::::::::::::::::::::::::::...............................................................................::::::::.........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................::---=========+++++++++++++++++==========--------------------------:::::::::::::::::::::::::::::::::::::::----::::::::::::-----------------------------------------------------------------------------------------------::::::::::::::::..............................................................................................................................................................::::---==============++++++++++++++++***************************************************************************************************************************#####################**********************************************####################################################################################***********************#########################################################################################################################################################################################################################################################################################################**************#####################**************************************************************************************************************#############################******************************************************************************************************************************************************************####**********###################################***********#*************###***********#############***#******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++==================================================------------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.....................................
**++++++++======--------------------------------::::::::::::............::::::::::::.........................................................................................................................................:::--------------------------------------------------------------------------------------------------------------::::.................................................................................................... ..........................................................................................................................................................................................................::::::----======+++++++++++++++========----:::::..........::::::::::........:::::::::::::::::::::::::::::::::::::::::..........................................................................:::::::.........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................:::---==========+++++++++++++========-------------------------------:::::::::::::::::::::::::::::::::::::::-----::::::::::-------------------------------------------------------------------------------------------------:::::::::::::::...............................................................................................................................................................:::---===============+++++++++++++++****************************************************************************************************************************###############################################################################################################################################************************#############################################%%%%%%%%%%%%%%%###################################################################################################################################################################################################################################################***************#####################*************************************************************************************************************#############################******************************************************************************************************************************************************************####***********##################################******************************************#######**************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++==================================================-------------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.....................................
*++++++++======----------------------------------:::::::::::............::::::::::::.........................................................................................................................................:::--------------------------------------------------------------------------------------------------------------::::.................................................................................................... .............................................................................................................................................................................................................:::::----======+++++++++++++++=========---::::::........::::::::::............::::::::::::::::::::::::::::::::::::::::::......................................................................::::::.........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................:::--============+++++++++++=======---------------------------------:::::::::::::::::::::::::::::::::::::::------::::::::---------------------------------------------------------------------------------------------------::::::::::::::...............................................................................................................................................................:::---===============+++++++++++++++****************************************************************************************************************************###########################################################################################################################################***********************#########################%%%%%%%%%%%%%%###########%%%%%%%%%%%%%%%###################################################################################################################################################################################################################################################***************######################************************************************************************************************************##############################****************************************************************************************************************************************************************#####***********##################################*******************************************####*****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++==================================================------------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.....................................
*++++++++======----------------------------------:::::::::::............::::::::::::.........................................................................................................................................:::--------------------------------------------------------------------------------------------------------------::::.................................................................................................... ...............................................................................................................................................................................................................::::-----=====+++++++++++++++=========----::::::.....::::::::::.................::::::::::::::::::::::::::::::::::::::::::..................................................................::::::........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................:::---============+++++++++=======----------------------------------:::::::::::::::::::::::::::::.::::::::::------:::::::-----------------------------------------------------------------------------------------------------:::::::::::::...............................................................................................................................................................:::---===============+++++++++++++++****************************************************************************************************************************#####################################################################################################################################*************************#######################%%%%%%%%%%%%%%%%%%%%%#########%%%%%%%%%%%%%%%####################################################################################################################################################################################################################################################***************######################************************************************************************************************************###############################**************************************************************************************************************************************************************######************#################################****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++==================================================-------------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.....................................
+++++++++======----------------------------------:::::::::::............::::::::::::.........................................................................................................................................:::--------------------------------------------------------------------------------------------------------------::::.................................................................................................... ................................................................................................................................................................................................................:::::----=====+++++++++++++++++++++====----:::::...:::::::::::.....................:::::::::::::::::::::::::::::::::::::::::::.............................................................::::::........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................::---=============++++++++=====-----:::::::-------------------------::::::::::::::::::::::::::::...:::::::::--------:::--------------------------------------------------------------------------------------------------------::::::::::::...............................................................................................................................................................:::---================+++++++++++++++***************************************************************************************************************************##############################################################################################################################**************************####################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#########%%%%%%%%%%%%%%%%###################################################################################################################################################################################################################################################***************#######################***********************************************************************************************************###############################**************************************************************************************************************************************************************######************#################################*****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++===================================================-------------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.....................................
++++++++=======----------------------------------:::::::::::............::::::::::::.........................................................................................................................................::--------------------------------------------------------------------------------------------------------------:::::.................................................................................................... ..................................................................................................................................................................................................................::::::----===+++++++++======+++++++=====----:::::::::::::::::..........................::::::::::::::::::::::::::::::::::::::::::.........................................................:::::........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................:::---======--=====+++++++====-----::::::::::------------------------:::::::::::::::::::::::::::::.::::::::::----------------------------------------------------------------------------------------------------------------------::::::::::..............................................................................................................................................................:::---================+++++++++++++++***************************************************************************************************************************######################################################################################################################******************************#################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########%%%%%%%%%%%%%%%%####################################################################################################################################################################################################################################################***************######################***********************************************************************************************************###############################**************************************************************************************************************************************************************######************#################################******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++====================================================------------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.....................................
++++++++======-----------------------------------:::::::::::............::::::::::::.........................................................................................................................................::--------------------------------------------------------------------------------------------------------------:::::.................................................................................................... ...................................................................................................................................................................................................................::::::---====+++++++========++++++++=====---::::::::::::::::..............................::::::::::::::::::--:--:::::::::::::::::::.....................................................:::::.......................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................:::---======---====+++++++====----::::::::::::------------------------::::::::::::::::::::::::::::::::::::::::------------------------------------------------------------------------------------------------------------------------::::::::..............................................................................................................................................................:::---================+++++++++++++++***************************************************************************************************************************###############################################################################################################**********************************##############%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########%%%%%%%%%%%%%%######################################################################################################################################################################################################################################################***************######################***********************************************************************************************************#############################****************************************************************************************************************************************************************######************#################################******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++====================================================------------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::....................................
++++++++======-------------------------------:::::::::::::::............::::::::::::.........................................................................................................................................::--------------------------------------------------------------------------------------------------------------:::::.................................................................................................... .....................................................................................................................................................................................................................:::::---====+++++===========++++++++=====----:::::::::::::...................................:::::::::::::::-:--------::::::::::::::::.................................................:::::......................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................:::---======----====+++++++===----:::::.....:::-----------------------:::::::::::::::::::::::::::::..::::::::::--------------------------------------------------------------------------------------------------------------------------::::::..............................................................................................................................................................::::---===============+++++++++++++++***************************************************************************************************************************######################################################################################################***************************************################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########%%%%%%%%%%%%%%######################################################################################################################################################################################################################################################***************#####################************************************************************************************************************###############################**************************************************************************************************************************************************************######************################*#################*******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++===================================================--------------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.....................................
++++++++======-------------------------------:::::::::::::::............::::::::::::........................................................................................................................................:::--------------------------------------------------------------------------------------------------------------::::..................................................................................................... ......................................................................................................................................................................................................................:::::--====+++++====----====++++++++=====-----:::---:::::......................................::::::::::::::::----------::::::::::::::::.............................................::::.......................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................:::--=======----====++++++====--:::::.......:::-----------------------:::::::::::::::::::::::::::::..::::::::::--------------------------------------------------------------------------------------------------------------------------::::::..............................................................................................................................................................::::---===============++++++++++++++++**************************************************************************************************************************######################################################################################***************************************************##################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########%%%%%%%%%%%%%%######################################################################################################################################################################################################################################################***************###################**************************************************************************************************************###############################**************************************************************************************************************************************************************######************##################################*******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++====================================================-------------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.....................................
++++++++======-------------------------------:::::::::::::::............::::::::::::........................................................................................................................................:::-------------------------------------------------------------------------------------------------------------:::::..................................................................................................... ........................................................................................................................................................................................................................::::---===++++===-------====+++++++++=====----------::::..........................................::::::::::::::::-----------:::::::::::::::..........................................:::......................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................:::--=======-----====++++++===--::::.........::::----------------------::::::::::::::::::::::::::::....:::::::::----------------------------------------------------------------------------------------------------------------------------:::::.............................................................................................................................................................::::---================+++++++++++++++**************************************************************************************************************************#######################################################################**************************************************************#####################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########%%%%%%%%%%%%%%######################################################################################################################################################################################################################################################****************################****************************************************************************************************************############################*##**************************************************************************************************************************************************************######************##################################********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++===================================================-------------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.....................................
+++++++=======------------------------------::::::::::::::::............::::::::::::........................................................................................................................................:::-------------------------------------------------------------------------------------------------------------:::::..................................................................................................... .........................................................................................................................................................................................................................::::--====+++===--------====++++++++++=====---------::::............................................::::::::::::::::------------::::::::::::::.......................................::......................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................:::---=======-----===+++++++===--:::..........::::----------------------:::::::::::::::::::::::::::.....::::::::::---------------------------------------------------------------------------------------------------------------------------:::::..............................................................................................................................................................:::---================++++++++++++++++*************************************************************************************************************************##################################################################*******************************+++++++++++++++******************##################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########%%%%%%%%%%%%%%######################################################################################################################################################################################################################################################*****************############*******************************************************************************************************************###############################**************************************************************************************************************************************************************######************##################################*********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++====================================================-------------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.....................................
+++++++=======-----------------------------:::::::::::::::::............::::::::::::........................................................................................................................................::-------------------------------------------------------------------------------------------------------------::::::..................................................................................................... .........................................................................................................................................................................................................................::::--====++===---::::----===+++++++++++======------::::.................................................:::::::::::::::------------:::::::::::::::.........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................:::---=======------===++++++===---::...........::::----------------------::::::::::::::::::::::::::......::::::::::----------------------------------------------------------------------------------------------------------------------------::::..............................................................................................................................................................:::----===============++++++++++++++++*************************************************************************************************************************##############################################################**************++++++++++++++++++++++++++++++++++++**************##################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########%%%%%%%%%%%%%########################################################################################################################################################################################################################################################****************#########**********************************************************************************************************************###############################**************************************************************************************************************************************************************######************##################################*********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++=====================================================------------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.....................................
+++++++======----------------------------::::::::::::::::::::...........::::::::::::........................................................................................................................................::-------------------------------------------------------------------------------------------------------------::::::..................................................................................................... .........................................................................................................................................................................................................................::::--====++===--:::::::---===++++++++++++=======----:::.....................................................:::::::::::::::-----------::::::::::::::::.....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................:::--========------===++++++===--:::...........::::----------------------:::::::::::::::::::::::::......:::::::::::----------------------------------------------------------------------------------------------------------------------------::::..............................................................................................................................................................:::----================++++++++++++++++************************************************************************************************************************#########################################################*************+++++++++++++++++++++++++++++++++++++++++***********##################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##########%%%%%%%%%%%%########################################################################################################################################################################################################################################################*****************##*****************************************************************************************************************************##############################**************************************************************************************************************************************************************######************##################################**********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++====================================================------------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.....................................
+++++++======---------------------------:::::::::::::::::::::...........::::::::::::.......................................................................................................................................:::------------------------------------------------------------------------------------------------------------:::::::..................................................................................................... ..........................................................................................................................................................................................................................:::--=====++===--::::::::---===++++++++++++========---:::.......................................................:::::::::::::::-------------:::::::::::::::................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................:::--========-------===++++++===--::............::::----------------------:::::::::::::::::::::::::......::::::::::::---------------------------------------------------------------------------------------------------------------------------::::..............................................................................................................................................................:::----================++++++++++++++++************************************************************************************************************************#####################################################************++++++++++++++++++++++++++++++++++++++++++***********####################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##########%%%%%%%%%%%#########################################################################################################################################################################################################################################################************************************************************************************************************************************************##############################**************************************************************************************************************************************************************######*************#################################**********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++====================================================------------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.....................................
++++++=======---------------------------:::::::::::::::::::::...........::::::::::::.......................................................................................................................................:::------------------------------------------------------------------------------------------------------------:::::::..................................................................................................... ..........................................................................................................................................................................................................................:::--====+++===--:::.:::::---===++++++++++++++======---:::..........................................................::::::::::::::--------------::::::::::::::.............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................::---========-------===++++++===--::............::::----------------------:::::::::::::::::::::::::....:.:::::::::::::--------------------------------------------------------------------------------------------------------------------------::::..............................................................................................................................................................:::----================+++++++++++++++++***********************************************************************************************************************#################################################************++++++++++++==========+++++++++++++++++++++**********########################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##########%%%%%%%%%%##########################################################################################################################################################################################################################################################*************************************************************************************************************************************************###############***########*****************************************************************************************************************************************************************######**************################################***********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++====================================================------------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.....................................
++++++======--------------------------:::::::::::::::::::::::...........::::::::::::.......................................................................................................................................:::-----------------------------------------------------------------------------------------------------------::::::::.................................................................................................... ...........................................................................................................................................................................................................................:::--====++===--::::...::::---===+++++++++++++++=====--::::.............................................................:::::::::::::---------------::::::::::::::.....:::................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................:::--========--------===++++++==---::............::::----------------------::::::::::::::::::::::::.....::::::::::::::::-------------------------------------------------------------------------------------------------------------------------::::..............................................................................................................................................................:::----=================++++++++++++++++++*********************************************************************************************************************###########################################**************++++++++++++================+++++++++++++++**********########################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##########%%%%%%%%%%%%########################################################################################################################################################################################################################################################*************************************************************************************************************************************************#############*****######*******************************************************************************************************************************************************************######**************#################################***********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++=====================================================------------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::......................................
++++++======--------------------------:::::::::::::::::::::::...........::::::::::::.......................................................................................................................................:::-----------------------------------------------------------------------------------------------------------::::::::.................................................................................................... ..........................................................................................................................................................................................................................:::---====++===--::::....:::::--====+++++++++++++++====--:::.................................................................:::::::::::::----------------::::::::::::::::::.....................................................................................:::::::.............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................:.....................................................................................................................................................................................................................................................................................................................................::---========----:---===++++++==---::............::::----------------------::::::::::::::::::::::::....:::::::::::::::::-------------------------------------------------------------------------------------------------------------------------::::..............................................................................................................................................................:::----=================+++++++++++++++++++**************************************************************************************************************+*****#######################################*************++++++++++++===================++++++++++++++**********###########################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##########%%%%%%%%%%%#########################################################################################################################################################################################################################################################**************************************************************************************************************************************************###########******######*******************************************************************************************************************************************************************######**************#################################***********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++=====================================================-------------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.....................................
++++++======--------------------------::::::::::::::::::::::::..........::::::::::::.......................................................................................................................................:::----------------------------------------------------------------------------------------------------------:::::::::.................................................................................................... ................................................................:.........................................................................................................................................................:::--=====+====--:::.......::::--====+++++++++++++++====--:::...................................................................:::::::::::::-----------------:::::::::::::::...................................................................................:::::::::::::........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................:....................................................................................................................................................................................................................................................................................................................................:::--========---::::--===++++++==---::............::::----------------------::::::::::::::::::::::::...:::::::::::::::::::-----------------------------------------------------------------------------------------------------------------------::::..............................................................................................................................................................::::----==================+++++++++++++++++++************************************************************************************************************+++****######################*************************++++++++++++=====================+++++++++++++*********################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##########%%%%%%%%%%##########################################################################################################################################################################################################################################################******************************************************************************************************************************************************###*********########******************************************************************************************************************************************************************######**************#################################************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++=====================================================-------------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.....................................
++++++======--------------------------:::::::::::::::::::::::::.........::::::::::::.......................................................................................................................................:::----------------------------------------------------------------------------------------------------------:::::::::.................................................................................................... ................................................................:::........................................................................................................................................................:::--==========--::::......:::::--=====++++++++++++++===---:::......................................................................::::::::::::-----------------::::::::::::::....................................................................................:::::::::::::::::.................................................................................................................................................................................................................................................................................................................................................................................................................................................................................:....................................................................................................................................................................................................................................................................................................................................:::--========--:::::--===++++++==---::............::::----------------------::::::::::::::::::::::::..:::::::::::::::::::::----------------------------------------------------------------------------------------------------------------------::::...........................................................................................................................................................:::::::----====================++++++++++++++++++****************************************###########******************************************************+++++*****###################*********************+++++++++++++=======================++++++++++++*********####################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##########%%%%%%%%%%##########################################################################################################################################################################################################################################################******************************************************************************************************************************************************************#########*****************************************************************************************************************************************************************######**************#################################************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++=====================================================-------------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.....................................
++++++======---------------------------:::::::::::::::::::::::::.......:::::::::::::......................................................................................................................................::::---------------------------------------------------------------------------------------------------------::::::::::.................................................................................................... ................................................................:::........................................................................................................................................................:::--==========--:::.........::::---====++++++++++++++===--::::........................................................................:::::::::::::------------------::::::::::::::::::..............................................................................::::::::::::::::::.............................................................................................................................................................................................................................................................................................................................................................................................................................................................................:....................................................................................................................................................................................................................................................................................................................................:::--=======---::::::--==++++++==---::............::::----------------------::::::::::::::::::::::::::::::::::::::::::::::::--------------------------------------------------------------------------------------------------------------------:::::.........................................................................................................................................................:::::::::----=========---=========++++++++++++++++++++********************************##################****************************************************+++++*****##################****************+++++++++++++++========================+++++++++++*********####################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%############%%%%%%%%%%######################%%#################################################################################################################################################################################################################################******************************************************************************************************************************************************************#########****************************************************************************************************************************************************************#######***************################################*****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************###########**********************************************************************+++++++++++++++++++++++++++++++++++++++++++=====================================================--------------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.....................................
+++++======-----------------------------::::::::::::::::::::::::.......:::::::::::::......................................................................................................................................:::----------------------------------------------------------------------------------------------------------::::::::::.................................................................................................... ................................................................::::.......................................................................................................................................................::---==========--:::..........::::---=====++++++++++++===---:::............................................................................::::::::::::-------------------::::::::::::::::..............................................................................:::::::::::::::::::..........................................................................................................................................................................................................................................................................................................................................................................................................................................................................:....................................................................................................................................................................................................................................................................................................................................:::--=======--:::::::--==++++++==--:::............::::----------------------:::::::::::::::::::::::::::::::::::::::::::::::::------------------------------------------------------------------------------------------------------------------:::::.........................................................................................................................................................::::::::::----========------=========++++++++++++++++++++************************##########################*************************************************++++++*****##################*****++++++++++++++++++++==========================+++++++++++**********#####################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%############%%%%%%%%%%%%%##%%############%%%%#################################################################################################################################################################################################################################*****************************************************************************************######################****************************************************#########****************************************************************************************************************************************************************########**************################################*****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************############*********************************************************************+++++++++++++++++++++++++++++++++++++++++++======================================================-------------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.....................................
+++++======-----------------------------::::::::::::::::::::::::::.....:::::::::::::......................................................................................................................................:::---------------------------------------------------------------------------------------------------------:::::::::::.................................................................................................... ................................................................::::......................................................................................................................................................:::--===========--:::...........::::----======+++++++++====--::::..............................................................................:::::::::::::------------------::::::::::::::.................................................................................::::::::::::::::::::.....................................................................................................................................................................................................................................................................................................................................................................................................................................................................:....................................................................................................................................................................................................................................................................................................................................:::---====---::::::::--===++++===--:::............::::---------------------:::::::::::::::::::::::::::::::::::::::::::::::::::---------------------------------------------------------------------------------------------------------------::::::..........................................................................................................................................................::::::::::----========-------=========+++++++++++++++++********************#################################***********************************************+++++++*****#################*****++++++++++++++=============================++++++++++**********########################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%################################################################################################################################################################################################################################************************************************************************************##########################****************************************************#########*****************************************************************************************************************************************************************########**************################################*********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************#####################*********************************************************************+++++++++++++++++++++++++++++++++++++++++++=====================================================--------------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.....................................
+++++======-----------------------------:::::::::::::::::::::::::::....::::::::::::.......................................................................................................................................:::---------------------------------------------------------------------------------------------------------::::::::::..................................................................................................... ................................................................::::......................................................................................................................................................:::--===========--:::............::::----=======++++++=====---:::..................................................................................::::::::::::------------------::::::::::::::................................................................................:::::::::::::::::::::::................................................................................................................................................................................................................................................................................................................................................................................................................................................................:....................................................................................................................................................................................................................................................................................................................................:::----==---:::::::::--===++++===--:::............::::---------------------:::::::::::::::::::::::::::::::::::::::::::::::::::--------------------------------------------------------------------------------------------------------------::::::............................................................................................................................................................:::::::::----=======---------=========++++++++++++++*******************#####################################**********************************************+++++++*****#################****+++++==================================+++++++++++***********###########################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######################################################################################################################################################################################################################********************************************************************************###############################****************************************************#########*****************************************************************************************************************************************************************########**************################################*********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************########################******************************************************************+++++++++++++++++++++++++++++++++++++++++++=====================================================--------------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.....................................
++++=======-------------------------------:::::::::::::::::::::::::::::::::::::::::.......................................................................................................................................:::--------------------------------------------------------------------------------------------------------:::::::::::..................................................................................................... .................................................................::::......................................................................................................................................................::---===========--:::.............:::::----===============----:::.....................................................................................:::::::::::::-------------------::::::::::::::.............................................................................::::::::::::::::::::::::::::::......................................................................................................................................................................................................................................................................................................................................................................................................................................................:::....................................................................................................................................................................................................................................................................................................................................:::-------::::....:::--========---::..............::::---------------------::::::::::::::::::::::::::::::::::::::::::::::::::-------------------------------------------------------------------------------------------------------------:::::...............................................................................................................................................................:::::::-----=======----------========+++++++++++++*****************#########################################*******************************************+++++++++*****#################****+++================================+++++++++++**********########################################%#####%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####################################################################################################################################################################################################**************************************************************************#####################################*************************************************#############******************************************************************************************************************************************************************#########*************################################*******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************############################*****************************************************************+++++++++++++++++++++++++++++++++++++++++++====================================================---------------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.....................................
++++=======-------------------------------:::::::::::::::::::::::::::::::::::::::::.......................................................................................................................................:::-------------------------------------------------------------------------------------------------------::::::::::::..................................................................................................... ................................................................:::::.....................................................................................................................................................:::---===========--:::...............:::::----============----::::........................................................................................:::::::::::::------------------:::::::::::::::.............................................................................::::::::::::::::::::::::::::::::::::..............................................................................................................................................................................................................................................................................................................................................................................................................................................:.....................................................................................................................................................................................................................................................................................................................................::::----:::::.....:::--========--:::..............::::---------------------:::::::::::::::::::::::::::::::::::::::::::::::::::----------------------------------------------------------------------------------------------------------::::::................................................................................................................................................................:::::::-----=======----::-----========++++++++++***************##############################################***********************++++***************+++++++++*****#################****++=============================+++++++++++***********###########################################%#####%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###################################################################################################################################################################################################******************************************************************############################################**************************************************###########********************************************************************************************************************************************************************#########*************################################******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************#############################*****************************************************************+++++++++++++++++++++++++++++++++++++++++++=====================================================--------------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.....................................
++++=======-------------------------------:::::::::::::::::::::::::::::::::::::::::.......................................................................................................................................:::-------::::-------------------------------------------------------------------------------------------:::::::::::::..................................................................................................... .................................................................:::::.....................................................................................................................................................:::--============--:::.................:::::-----======------:::::............................................................................................::::::::::::-------------------::::::::::::::::..........................................................................:::::::::::::::::::::::::::::::::::::::::.......................................................................................................................................................................................................................................................................................................................................................................................................................................:......................................................................................................................................................................................................................................................................................................................................:::::::::::.......:::--======---:::..............::::---------------------:::::::::::::::::::::::::::::::::::::::::::::::::::---------------------------------------------------------------------------------------------------------:::::...................................................................................................................................................................::::::-----======----:::::-----=======+++++++**************#################################################******************++++++++++++++*********++++++++++*****#################****++=========================++++++++++***********######################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###################################################################################################################################################################******##########################*******************************************************#######################################################**************************************************#######************************************************************************************************************************************************************************#########*************################################******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************##############################*****************************************************************+++++++++++++++++++++++++++++++++++++++++++====================================================---------------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.....................................
++++======--------------------------------:::::::::::::::::::::::::::::::::::::::::.......................................................................................................................................:::-------:::::-----------------------------------------------------------------------------------------::::::::::::::..................................................................................................... .................................................................::::::....................................................................................................................................................:::--===========---::...................::::::-------------:::::::...............................................................................................:::::::::::---------------------:::::::::::::::..........................................................................:::::::::::::::::::::::::::::::::::::::::::..................................................................................................................................................................................................................................................................................................................................................................................................................................:........................................................................................................................................................................................................................................................................................................................................:::::::.........:::----------:::...............::::---------------------:::::::::::::::::::::::::::::::::::::::::::::::::::--------------------------------------------------------------------------------------------------------:::::.....................................................................................................................................................................:::::-----======----::::::------=====+++++**************####################################################***************++++++++++++++++++******++++++++++++****##################***++====================++++++++++***********##########################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##############%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##################################################################################################################################################################*******########################***********************************************###############################################################***************************************************#######************************************************************************************************************************************************************************#########*************#################################****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************###############################*****************************************************************+++++++++++++++++++++++++++++++++++++++++++=====================================================--------------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.....................................
+++=======--------------------------------:::::::::::::::::::::::::::::::::::::::::.......................................................................................................................................::--------:::::---------------------------------------------------------------------------------------::::::::::::::::..................................................................................................... .................................................................::::::...................................................................................................................................................:::---===========---::.....................::::::--------:::::::::....................................................................................................::::::::::::---------------------::::::::::::::........................................................................::::::::::::::::::::::::::::::::::::::::::::.........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................:::-------::::................::::---------------------::::::::::::::::::::::::::::::::::::::::::::::::::::-----------------------------------------------------------------------------------------------------:::::........................................................................................................................................................................:::::----======----::::::::-----====+++++**********########################################################************+++++++++++++++++++++++++++++++++++++++****##################***++=================+++++++++***********#############################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###############%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###############%%#################################################################################################################################################*******########################*****************************************###################################################################****************************************************########************************************************************************************************************************************************************************#########************##################################***************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************##################################****************************************************************+++++++++++++++++++++++++++++++++++++++++++=====================================================--------------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.....................................
+++=======--------------------------------:::::::::::::::::::::::::::::::::::::::::......................................................................................................................................:::--------::::::------------------------------------------------------------------------------------::::::::::::::::::..................................................................................................... ..................................................................:::::::..................................................................................................................................................:::---===========--:::.......................::::::----:::::::::.......................................................................................................:::::::::::::::---------------------::::::::::::::.......................................................................::::::::::::::::----------:::::::::::::::::........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................::::::::::::.................::::---------------------::::::::::::::::::::::::::::::::::::::::::::::::::::----------------------------------------------------------------------------------------------------:::::..........................................................................................................................................................................::::-----====-----::::::::::----===++++********###########################################################**********+++++++++++++++++++++++++++++++++++++++++****##################***++==============++++++++***********################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##############%%%%#################################################################################################################################################******#########################*****************************#############################################################################*****************************************************########******************************************************************************************************************###***************************************************#########************##################################************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************########*******************##################################*****************************************************************+++++++++++++++++++++++++++++++++++++++++++=====================================================--------------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.....................................
+++=======--------------------------------:::::::::::::::::::::::::::::::::::::::::......................................................................................................................................:::-------:::::::----------------------------------------------------------------------------------::::::::::::::::::::..................................................................................................... ..................................................................:::::::....::::..........................................................................................................................................:::---===========--:::.........................:::::::::::::.............................................................................................................::::::::::::::::----------------------:::::::::::::::.....................................................................::::::::::::::::::-----------:::::::::::.........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................::::::::::..................::::---------------------::::::::::::::::::::::::::::::::::::::::::::::::::::---------------------------------------------------------------------------------------------------:::::............................................................................................................................................................................::::-----===----:::::::::::::---==+++*****###############################################################**********+++++++++++++++++++++++++++++++++++++++++****##################***+++=========++++++++**********#####################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#############%%%%################################################################################################################################################################################***********************###################################################################################*****************************************************########******************************************************************************************************##********########************************************************#########************##################################****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************#################*****************####################################****************************************************************++++++++++++++++++++++++++++++++++++++++++++====================================================--------------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::......................................
+++======---------------------------------:::::::::::::::::::::::::::::::::::::::::......................................................................................................................................:::-------:::::::--------------------------------------------------------------------------------::::::::::::::::::::::..................................................................................................... ..................................................................:::::::..::::::..........................................................................................................................................:::--===========---::...........................::::::::::.................................................................................................................::::::::::::::::-----------------------::::::::::::::::....................................................................::::::::::::::::::::-----------::::::...........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................::::::....................::::----------------------:::::::::::::::::::::::::::::::::::::::::::.::::::::-------------------------------------------------------------------------------------------------:::::.......... ..................................................................................................................................................................:::::-----=-----:::::.::::::::--==+++****#################################################################*********+++++++++++++++++++++++++++++++++++++++++****##################***+++=====++++++++*********##########################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#############%%%%##################################################################################################################################################################################******************######################################################################################****************************************************#########******************************************************************************************************##********#########***********************************************#########************##################################***************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************###################****************####################################****************************************************************++++++++++++++++++++++++++++++++++++++++++++====================================================--------------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::......................................
++=======-------------------------------:::::::::::::::::::::::::::::::::::::::::::......................................................................................................................................:::-------:::::::----------::::::::-------------------------------------------------------------:::::::::::::::::::::::.................................................................................................... ...................................................................::::::::::::::::........................................................................................................................................::::--===========--:::...........................:::::::::.........................................................................................................................::::::::::::::-----------------------::::::::::::::::...................................................................::::::::::::::::::::---------::::.....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................::::-----------------------:::::::::::::::::::::::::::::::::::::::::::::::::::-----------------------------------------------------------------------------------------------::::::...............................................................................................................................................................................:::::----------::::.....::::::--==++**##################################################################**********+++++++++++++++++++++++++++++++++++++++++****##################****++++++++++++*********############################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##############%%%%%%#######################################################################################################################################################################################***********######################################################################################*******************************************************########*****************************************************************************************************###******###########*****#####*******####***************************#########*********#####################################***********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************######################################***********########################################**************************************************************++++++++++++++++++++++++++++++++++++++++++++====================================================---------------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.....................................
++=======------------------------------::::::::::::::::::::::::::::::::::::::::::::......................................................................................................................................:::-------::::::::------:::::::::::::::::------------------------------------------------------::::::::::::::::::::::::.................................................................................................... ...................................................................::::::::::::::::........................................................................................................................................:::---===========--:::............................::::::::...........................................................................................................................:::::::::::::::------------------------::::::::::::::::...................................................................:::::::::::::::::::::---:::::.....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................::::-----------------------:::::::::::::::::::::::::::::::::::::::::::.::::::::---------------------------------------------------------------------------------------------:::::..................................................................................................................................................................................::::----------::::......:::::--==+***##################################################################**********+++++++++++++++++++++++++++++++++++++++++****###################***+++++++++*********###############################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##############%%%%%%%#########################################################################################################################################################################################******########################################################################################*******************************************************########*****************************************************************************************************#####################**########*****########************************#########*********#####################################***********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************######################################***********########################################***************************************************************+++++++++++++++++++++++++++++++++++++++++++=====================================================--------------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.....................................
++======-----------------------------::::::::::::::::::::::::::::::::::::::::::::::......................................................................................................................................:::-------::::::::-----:::::::::::::::::::::::--:::------------------------------------------::::::::::::::::::::::::::.................................................................................................... ....................................................................::::::::::::::::........................................................................................................................................:::---==========---::.............................:::::::............................................................................................................................::::::::::::::::::-------------------------::::::::::::::::::...................................................................:::::::::::::::::::::::.....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................::::-------------------------:::::::::::::::::::::::::::::::::::::::::..::::::::-------------------------------------------------------------------------------------------:::::....................................................................................................................................................................................::::---------::::........::::-==+**###################################################################**********+++++++++++++++++++++++++++++++++++++++++****###################*****************###################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##############%%%%%%%%#######################################################################################################################################################################################################################################################################################*****************************************************#########*****************************************************************************************************##############################################**********************#########********######################################**********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************########################################*********#########################################***************************************************************+++++++++++++++++++++++++++++++++++++++++++=====================================================--------------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.....................................
++======----------------------------:::::::::::::::::::::::::::::::::::::::::::::::.....................................................................................................................................:::--------::::::::----:::::::::::::::::::::::::::::::::::::::::::::::-----------------------:::::::::::::::::::::::::::.................................................................................................... ....................................................................::::::::::::::::........................................................................................................................................:::---=========---:::..............................::::::............................................................................................................................::::::::::::::::::::::--------------------------::::::::::::::::......................................................................:::::::::::::::::............................................................................................................................................................................................................................................................................................................................................................................................................................::.......................................................................................................................................................................................................................................................................................................................................................................................::::------------------------------------::::::::::::::::::::::::::::::..:::::::::---------------::-----------------------------------------------------------------------::::::......................................................................................................................................................................................::::--------:::::........:::-==+**###################################################################**********++++++++++++++++++++++++++++++++++++++++++****###################************#######################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##############%%%%%%%########################################################################################################################################################################################################################################################################################*****************************************************#########*****************************************************************************************************################################################********************#########*******#######################################*********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************##########################################********#########################################***************************************************************+++++++++++++++++++++++++++++++++++++++++++======================================================--------------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.....................................
++======----------------------------:::::::::::::::::::::::::::::::::::::::::::::::.....................................................................................................................................:::-------:::::::::---::::::::::::::::::::::::::::::::::::::::::::::::::::::::-------------::::::::::::::::::::::::::::..................................................................................................... .....................................................................::::::::::::::::........................................................................................................................................:::--==========--:::...............................:::::.............................................................................................................................::::::::::....::::::::::::--------------------------::::::::::::::::........................................................................::::::::::.............................................................................................................................................................................................................................................................................................................................................................................................................................--:......................................................................................................................................................................................................................................................................................................................................................................................::::------------------------------------::::::::::::::::::::::::::::.....:::::::::::-------:::::::::::------------------------------------------------------------------:::::.........................................................................................................................................................................................::::--------:::::.......:::--=+**###################################################################**********++++++++++++++++++++++++++++++++++++++++++****####################*******#########################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#############################################################################################################################################################################################################################################################################################################*****************************************************#########****************************************************************************************************##################################################*******************#########*******#######################################*********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************##########################################********#########################################*****************************************************************++++++++++++++++++++++++++++++++++++++++++======================================================-------------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.....................................
+=======---------------------------::::::::::::::::::::::::::::::::::::::::::::::::.....................................................................................................................................:::-------:::::::::---:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::..................................................................................................... ......................................................................::::::::::::::::........................................................................................................................................:::--=========---:::...............................::::..............................................................................................................................:::::::::........:::::::::::::--------------------------::::::::::::::::........................................................................::::...............................................................................................................................................................................................................................................................................................................................................................................................................................--:......................................................................................................................................................................................................................................................................................................................................................................................::::------------------------------------::::::::::::::::::::::.:::::..:..:::::::::::::::::::::::::::::::--------------------------------------------------------------::::::...........................................................................................................................................................................................:::::------::::::.......::--=+**##################################################################************+++++++++++++++++++++++++++++++++++++++++****####################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##############################################################################################################################################################################################################################################################################################################****************************************************#########****************************************************************************************************####################################################*****************#########******#########################################*******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************#############################################******#########################################*****************************************************************++++++++++++++++++++++++++++++++++++++++++======================================================--------------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.....................................
+======----------------------------::::::::::::::::::::::::::::::::::::::::::::::::.....................................................................................................................................:::-------::::::::::-::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::..................................................................................................... ......................................................................::::::::::::::::........................................................................................................................................:::--========---:::................................::::.............................................................................................................................:::::::::............:::::::::::::---------------------------::::::::::::::::::....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................:--.......................................................................................................................................................................................................................................................................................................................................................................................::::-----------------------------------:::::::::::::::::::::::..::::..:...:::::::::::::::::::::::::::::::-----------------------------------------------------------::::::..............................................................................................................................................................................................::::::-----:::::::.....::--=++*#################################################################*************+++++++++++++++++++++++++++++++++++++++++****##################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#########################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##############################################################################################################################################################################################################################################################################################################****************************************************#########****************************************************************************************************#######################*#############################****************#########******#########################################*******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************#############################################******#########################################******************************************************************+++++++++++++++++++++++++++++++++++++++++======================================================--------------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.....................................
+======----------------------------::::::::::::::::::::::::::::::::::::::::::::::::.....................................................................................................................................:::-------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::..................................................................................................... ......................................................................::::::::::::::::........................................................................................................................................:::---======---::::.................................::..............................................................................................................................:::::::::...............:::::::::::::----------------------------::::::::::::::::::.................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................--.......................................................................................................................................................................................................................................................................................................................................................................................::::-----------------------------------::::::::::::::::::.......::::.......::::::::::::::::::::::::::::::----------------------------------------------------------::::::.......... ....................................................................................................................................................................................:::::::----:::::::...::::-=++**################################################################*************+++++++++++++++++++++++++++++++++++++++++****##################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#########################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###############################################################################################################################################################################################################################################################################################################***************************************************##########***************************************************************************************************#######################*#############################****************#########******#########################################*******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************#############################################******#########################################******************************************************************+++++++++++++++++++++++++++++++++++++++++=======================================================-------------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.....................................
=======---------------------------:::::::::::::::::::::::::::::::::::::::::::::::::.....................................................................................................................................:::-------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::..................................................................................................... ......................................................................::::::::::::::::........................................................................................................................................:::---=====----:::..................................::.............................................................................................................................::::::::::...................:::::::::::::------------------------------::::::::::::::::.............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................--.......................................................................................................................................................................................................................................................................................................................................................................................::::----------------------------------::::::::::::::::::::..................::::::::::::::::::::.....:::::-------------------------------------------------------:::::::...................................................................................................................................................................................................::::::----:::::::...:::-==+**################################################################*************+++++++++++++++++++++++++++++++++++++++++****################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#%##########################%#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####################%%%%#####################################################################################################################################################################################################################################################################################**************************************************###########********************************************************************************++*****************######################***##############################***************#########********######################################**********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************##########################################******#########################################******#*************************************************************++++++++++++++++++++++++++++++++++++++++=======================================================------------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::......................................
=======---------------------------:::::::::::::::::::::::::::::::::::::::::::::::::.....................................................................................................................................:::-------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::..................................................................................................... ......................................................................::::::::::::::::........................................................................................................................................:::---====----:::..................................................................................................................................................................::::::::::......................::::::::::::::------------------------------:::::::::::::::::.......................................................................................................................................................................................................................................................................................................................................................................................................................................................................................:--.......................................................................................................................................................................................................................................................................................................................................................................................::::----------------------------------::::::::::::::::::::..:::::::::.........:::::::::::::::::.......::::::---------------------------------------------------:::::::.....................................................................................................................................................................................................:::::::----::::::::::::-==+**#################################################################************++++++++++++++++++++++++++++++++++++++++****#################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%############################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####################%%%%%#####################################################################################################################################################################################################################################################################################*************************************************###########********************************************************************************++*****************######################***##############################***************########*********######################################**********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************##########################################******#########################################********************************************************************++++++++++++++++++++++++++++++++++++++++=======================================================-------------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::......................................
=======---------------------------:::::::::::::::::::::::::::::::::::::::::::::::::....................................................................................................................................:::--------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::..................................................................................................... ......................................................................:::::::::::::::::........................................................................................................................................:::----==----::::..................................................................................................................................................................::::::::::...........................::::::::::::--------------------------------:::::::::::::::::::................................................................................................................................................................................................................................................................................................................................................................................................................................................................................:--.......................................................................................................................................................................................................................................................................................................................................................................................::::----------------------------------:::::::::::::::::::::::::::::...:.........::::::::::::::..........:::::-------------------------------------------------::::::......... ...............................................................................................................................................................................................:::::------::::::::::--=+**###################################################################***********+++++++++++++++++++++++++++++++++++++++****#################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%############################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####################%%%%%%#####################################################################################################################################################################################################################################################################################************************************************###########********************************************************************************++*****************######################***###############################**************#######**********######################################***********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************##########################################********######################################********************************************************************++++++++++++++++++++++++++++++++++++++++========================================================------------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::......................................
======---------------------------::::::::::::::::::::::::::::::::::::::::::::::::::....................................................................................................................................:::-------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::..................................................................................................... .............................................................::::.....:::::::::::::::::........................................................................................................................................::::--------::::...................................................................................................................................................................::::::::::..............................::::::::::::-----------------------------------::::::::::::::::::...........................................................................................................................................................................................................................................................................................................................................................................................................................................................................:--.......................................................................................................................................................................................................................................................................................................................................................................................::::-----------------------------------:::::::::::::::::::::::::::....:...........:::::::::::............:::::::--------------------------------------------::::::............................................................................................................................................................................................................:::::------:::::::::--=+**####################################################################**********++++++++++++++++++++++++++++++++++++++*****#################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#############################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###################%%%%%########################################################################################################################################################################################################################################################################################**********************************************###########********************************************************************************++*****************######################****###############################*************######************######################################******************************************************************************************************************************************************************************************************************************************************************************************************************####*************************************************************************************#########################################*********#####################################**#******************************************************************++++++++++++++++++++++++++++++++++++++++=======================================================-------------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.....................................
======--------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::....................................................................................................................................:::-------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::..................................................................................................... ..............................................................::::::....:::::::::::::::::........................................................................................................................................::::-------::::...................................................................................................................................................................:::::::::::.................................::::::::::::------------------------------------::::::::::::::::::.......................................................................................................................................................................................................................................................................................................................................................................................................................................................................:--.......................................................................................................................................................................................................................................................................................................................................................................................::::------------------------------------::::::::::::::::::::::::::::::....................................::::::::::--------------------------------------::::::...............................................................................................................................................................................................................:::::------::::::::--=+**#####################################################################*********+++++++++++++++++++++++++++++++++++*******##################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#############################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###############################################################################################################################################################################################################################################################################################################*******************************************#############*******************************************************************************++*****************######################***################################**************####**************#####################################*****************************************************************************************************************************************************************************************************************************************************************************************************************######************************************************************************************###########################################*******#####################################**##*****************************************************************++++++++++++++++++++++++++++++++++++++++=========================================================-------------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.....................................
=====---------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::....................................................................................................................................:::-------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::...................................................................................................... .............................................................::::::::...:::::::::::::::::.........................................................................................................................................:::::---:::::....................................................................................................................................................................:::::::::::...................................:::::::::::::--------------------------------------::::::::::::::::::..................................................................................................................................................................................................................................................................................................................................................................................................................................................................:--.......................................................................................................................................................................................................................................................................................................................................................................................::::-------------------------------------:::::::::::::::::::::::::::::......................................:::::::::::::-------------------------------:::::::.................................................................................................................................................................................................................:::::-------::::::--=+**######################################################################********++++++++++++++++++++++++++++++++********####################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#############################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%################################################################################################################################################################################################################################################################################################################*****************************************#############*******************************************************************************++*****************######################***################################********************************######################################***************************************************************************************************************************************************************************************************************************************************************************************************************#######*************************************************************************************##########################################********####################################**##******************************************************************+++++++++++++++++++++++++++++++++++++++==========================================================------------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.....................................
====----------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::....................................................................................................................................:::------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::..................................................................................................... .............................................................::::::::::::::::::::::::::::..........................................................................................................................................:::::::::::.....................................................................................................................................................................:::::::::::....................................::::::::::::::::::------------------------------------:::::::::::::::::::::...........................................................................................................................................................................................................................................................................................................................................................................................................................................................:--.....................................................................................................................................................................................................................:::::.............................................................................................................................................................::::---------------------------------------::::::::::::::::::::::::::::........................................::::::::::::::-------------------------:::::::............. .....................................................................................................................................................................................................::::::-------:::--==+**######################################################################********++++++++=====++++++++++++++++*********######################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##############################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#################################################################################################################################################################################################################################################################################################################***************************************#############*******************************************************************************+++***************#######################***#################################********************************#####################################***************************************************************************************************************************************************************************************************************************************************************************************************************########************************************************************************************###########################################***********################################**##******************************************************************++++++++++++++++++++++++++++++++++++++++=========================================================------------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::....................................
===-----------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::....................................................................................................................................:::------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::..................................................................................................... .............................................................::::::::::::::::::::::::::::..........................................................................................................................................::::::::::......................................................................................................................................................................:::::::::::....................................::::::::::::::::::::::--------------------------------------::::::::::::::::::::......................................................................................................................................................................................................................................................................................................................................................................................................................................................:--....................................................................................................................................................................................................................:::::::............................................................................................................................................................::::------------------------------------------::::::::::::::::::::::::::::.........................................:::::::::::::--------------------:::::::.......................................................................................................................................................................................................................::::::-----------==+**######################################################################********+++++++=======+++++++++++++********#########################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###############################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##################################################################################################################################################################################################################################################################################################################**************************************##############******************************************************************************+++***************#######################***###########*#####################********************************######################################**************************************************************************************************************************************************************************************************************************************************************************************************************########************************************************************************************###########################################************###############################**##*******************************************************************+++++++++++++++++++++++++++++++++++++++=========================================================-------------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::....................................
===------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::...................................................................................................................................::::------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::..................................................................................................... ..............................................................::::::::::::::::::::::::::::............................................................................................................................................::::::........................................................................................................................................................................:::::::::::...................................:::::::--:::::::::::::::::::--------------------------------------:::::::::::::::::::::................................................................................................................................................................................................................................................................................................................................................................................................................................................:--...................................................................................................................................................................................................................::::::::::..........................................................................................................................................................::::---------------------------------------------:::::::::::::::::::::::::::............................................::::::::::-----------------::::::..........................................................................................................................................................................................................................::::::----------=++***#####################################################################********++++++========++++++++++*********###########################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##################################################################################################################################################################################################################################################################################################################*************************************##############******************************************************************************+++***************#######################***#################################********************************######################################*************************************************************************************************************************************************************************************************************************************************************************************************************#########*********************************************************************************##############################################****************###########################**###******************************************************************+++++++++++++++++++++++++++++++++++++++==========================================================-------------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::......................................
==-------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::...................................................................................................................................::::------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::..................................................................................................... ..............................................................::::::::::::::::::::::::::::..........................................................................................................................................................................................................................................................................................................................:::::::::::...................................::::--------::::::::::::::::::::---------------------------------------::::::::::::::::::::............................................................................................................................................................................................................................................................................................................................................................................................................................................:--..................................................................................................................................................................................................................:::::::::::..........................................................................................................................................................::::------------------------------------------------:::::::::::::::::::::::::::::::........................................::::::::--------------::::::.............................................................................................................................................................................................................................:::::----------=++***#####################################################################********+++++++======+++++++++********##############################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####################################################################################################################################################################################################################################################################################################################***********************************##############******************************************************************************+++****************######################***###########*#####################********************************######################################*************************************************************************************************************************************************************************************************************************************************************************************************************#########*********************************************************************************##############################################****************###########################**###*******************************************************************++++++++++++++++++++++++++++++++++++++++========================================================-------------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::......................................
=--------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::...................................................................................................................................:::-------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::..................................................................................................... ..............................................................::::::::::::::::::::::::::::..........................................................................................................................................................................................................................................................................................................................:::::::::::..................................::::----------::::::::::::::::::::::------------------------------------------:::::::::::::::::::::.....................................................................................................................................................................................................................................................................................................................................................................................................................................:--..................................................................................................................................................................................................................:::::::::::..........................................................................................................................................................::::----------------------------------------------------::::::::::::::::::::::::::::::::::::...................................:::::------------:::::................................................................................................................................................................................................................................:::::--------==++***#####################################################################*******++++++++====++++++++********#################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######################################################################################################################################################################################################################################################################################################################********************************##############*******************************************************************************++****************######################***##########**#####################********************************#######################################************************************************************************************************************************************************************************************************************************************************************************************************************#########*********************************************************************************##############################################*****************##########################***##*******************************************************************++++++++++++++++++++++++++++++++++++++++=========================================================------------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::......................................
=--------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::...................................................................................................................................:::-------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::..................................................................................................... ..............................................................:::::::::::::::::::::::::::::..........................................................................................................................................................................................................................................................................................................................:::::::::::..................................:::-----==------::::::::::::::::::::::::-------------------------------------------:::::::::::::::::::::::..............................................................................................................................................................................................................................................................................................................................................................................................................................:--.................................................................................................................................................................................................................:::::::::::::.........................................................................................................................................................::::-------------------------------------------------------:::::::::::::::::::::::::::::::::::..................................::::::----------::::..................................................................................................................................................................................................................................:::::-------==++***#####################################################################*******++++++++++++++++++*******####################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#########################################################################################################################################################################################################################################################################################################################********************************#############*******************************************************************************++****************#######################*##########****###################*********************************########################################***********************************************************************************************************************************************************************************************************************************************************************************************************##########********************************************************************************##############################################******************#########################*************************************************************************++++++++++++++++++++++++++++++++++++++++=========================================================------------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.....................................
==-------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::...................................................................................................................................:::-------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::..................................................................................................... ..............................................................:::::::::::::::::::::::::::::..........................................................................................................................................................................................................................................................................................................................:::::::::::.................................:::----=======-----::::::::...:::::::::::::::----------------------------------------------::::::::::::::::::::..........................................................................................................................................................................................................................................................................................................................................................................................................................:-:.................................................................................................................................................................................................................:::::::::::::.........................................................................................................................................................::::----------------------------------------------------------------::::::::::::::::::::::::::::..................................:::::-------:::::....................................................................................................................................................................................................................................:::::------==+++***####################################################################*******++++++++++++++++*******######################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##########################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##########################################################################################################################################################################################################################################################################################################################********************************#############******************************************************************************++****************##################################****#################***********************************########################################***********************************************************************************************************************************************************************************************************************************************************************************************************##########********************************************************************************##############################################******************#########################*************************************************************************++++++++++++++++++++++++++++++++++++++++=========================================================------------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.....................................
==-------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::...................................................................................................................................:::-------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::..................................................................................................... ...............................................................:::::::::::::::::::::::::::::..........................................................................................................................................................................................................................................................................................................................::::::::::..................................:::---=========-----:::::::........::::::::::::::-----------------------------------------------::::::::::::::::::::::::.................................................................................................................................................................................................................................................................................................................................................................................................................:-:.................................................................................................................................................................................................................:::::::::::::.........................................................................................................................................................::::--------------------------------------::-----------------------------:::::::::::::::::::::::::.................................:::::-----:::::......................................................................................................................................................................................................................................:::::-----===++***####################################################################*******++++++++++++++*******########################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#############################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%############################################################################################################################################################################################################################################################################################################################********************************############******************************************************************************++*****************#################################*****##############*************************************########################################***********************************************************************************************************************************************************************************************************************************************************************************************************##########********************************************************************************##############################################******************#########################**************************************************************************++++++++++++++++++++++++++++++++++++++++=========================================================-----------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.....................................
==-------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::...................................................................................................................................:::-------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::..................................................................................................... ...............................................................:::::::::::::::::::::::::::::..........................................................................................................................................................................................................................................................................................................................::::::::::.................................::::--============-----:::::............::::::::::::::---------------------------------------------------:::::::::::::::::::::::..........................................................................................................................................................................................................................................................................................................................................................................................................:-:.................................................................................................................................................................................................................:::::::::::::.........................................................................................................................................................::::----------------------------------::::::::::::------------------------------:::::::::::::::::::.................................:::::::::::::........................................................................................................................................................................................................................................:::::-----==++***####################################################################*******+++++++++++*******###########################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##############################################%%%%%%%%%%%%%%%%%%%%%%%%%%%##############################################################################################################################################################################################################################################################################################################################################**#****************************#############*****************************************************************************++*****************#################################******##########****************************************#########################################**********************************************************************************************************************************************************************************************************************************************************************************************************##########********************************************************************************##############################################*******************########################**************************************************************************++++++++++++++++++++++++++++++++++++++++=========================================================-----------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::....................................
===------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::...................................................................................................................................:::------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::...................................................................................................... ...............................................................:::::::::::::::::::::::::::::...........................................................................................................................................................................................................................................................................................................................:::::::::.................................:::---==============----:::::...............::::::::::::::-----------------------------------------------------:::::::::::::::::::::::....................................................................................................................................................................................................................................................................................................................................................................................................:-:.................................................................................................................................................................................................................:::::::::::::.........................................................................................................................................................::::-----------------------------:::::::::::::::::::::---------------------------------:::::::::::::.................................:::::::::::..........................................................................................................................................................................................................................................:::::----==++****###################################################################********+++++++*******##############################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#################################*##############%%%%%%%%%%%%%%%%%%%%%%%##################################################################################################################################################################################################################################################################################################################################################*##*****************##********#############*****************************************************************************++*****************########*########################*******######*******************************************#########################################**********************************************************************************************************************************************************************************************************************************************************************************************************##########********************************************************************************##############################################********************#######################***************************************************************************+++++++++++++++++++++++++++++++++++++++=========================================================-----------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::....................................
===-----------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::...................................................................................................................................:::------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::...................................................................................................... .................................................................::::::::::::::::::::::::::::............................................................................................................................................................................................................................................................................................................................::::::::..................................:::--================-----::::.................:::::::::::::::------------------------------------------------------::::::::::::::::::::::................................................................................................................................................................................................................................................................................................................................................................................................:-:.................................................................................................................................................................................................................:::::::::::::.........................................................................................................................................................:::----------------------------:::::::::::::::::::::::::::--------------------------------::::::::::::................................::::::::.............................................................................................................................................................................................................................................:::::---===++***###################################################################********************##############################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%################################***###############%%%%%%%%%%%%%%%%############################################################################################################################################################################################################################################################################################################################################################**************####*******#############******************************************************************************+******************####*****#######################*********************************************************#########################################*********************************************************************************************************************************************************************************************************************************************************************************************************##########********************************************************************************##############################################**********************#################***##**************************************************************************++++++++++++++++++++++++++++++++++++++++==========================================================----------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::......................................
===-----------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::...................................................................................................................................:::------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::...................................................................................................... .................................................................:::::--:::::::::::::::::::::............................................................................................................................................................................................................................................................................................................................::::::::..................................:::--==================----::::...................::::::::::::::::---------------------------------------------------------::::::::::::::::::::...........................................................................................................................................................................................................................................................................................................................................................................................:-:.................................................................................................................................................................................................................::::::::::::..........................................................................................................................................................:::---------------------------::::::::::::::::::::::::::::::::-------------------------------::::::::::.................................::::................................................................................................................................................................................................................................................:::::---==++***###################################################################******************#################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###############################****###############%%%%%%%%#####################################################################################################################################################################################################################################################################################################################################################################************########***###############*****************************************************************************+******************####*****######################**********************************************************##########################################********************************************************************************************************************************************************************************************************************************************************************************************************##########********************************************************************************##############################################**********************################****#****************************************************************************++++++++++++++++++++++++++++++++++++++++=========================================================----------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::......................................
===-----------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::..................................................................................................................................:::-------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::...................................................................................................... .................................................................::::----::::::::::::::::::::............................................................................................................................................................................................................................................................................................................................::::::::..................................:::--===================----::::........................:::::::::::::::------------------------------------------------------------:::::::::::::::::......................................................................................................................................................................................................................................................................................................................................................................................:-:..................................................................................................................................................................................................................:::::::::::.........................................................................................................................................................::::---------------------------::::::::::::::::::::::::::::::::::::------------------------------::::::::.....................................................................................................................................................................................................................................................................................::::---==++***##################################################################*****************###################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###############################*****###############%%%%%%########################################################################################################################################################################################################################################################################################################################################################################*********###########################*****************************************************************************+******************###*******####################***********************************************************##########################################********************************************************************************************************************************************************************************************************************************************************************************************************##########********************************************************************************##############################################**********************###############*****#****************************************************************************++++++++++++++++++++++++++++++++++++++++==========================================================---------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.....................................
===---------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::..................................................................................................................................:::-------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::...................................................................................................... ..................................................................::::----::::::::::::::::::::.............................................................................................................................................................................................................................................................................................................................::::::..................................:::---=====================---::::...........................:::::::::::::::-------------------------------------------------------------:::::::::::::::...................................................................................................................................................................................................................................................................................................................................................................................:-:..................................................................................................................................................................................................................::::::::::............................................................................................................................................::............::::--------------------------:::::::::::::::::::::::::::::::::::::::::----------------------------:::::::.....................................................................................................................................................................................................................................................................................::::--==++***#################################################################*****************#####################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%################################*****###############################################################################################################################################################################################################################################################################################################################################################################################*******############################****************************************************************************+****************************###################************************************************************##########################################********************************************************************************************************************************************************************************************************************************************************************************************************##########********************************************************************************##############################################***********************############************************************************************************************+++++++++++++++++++++++++++++++++++++++++==========================================================---------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::....................................
==---------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::..................................................................................................................................:::-------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::...................................................................................................... ..................................................................::::----::::::::::::::::::::..............................................................................................................................................................................................................................................................................................................................::::...................................:::--=======================---:::..............................::::::::::::::::--------------------------------------------------------------:::::::::::::::..............................................................................................................................................................................................................................................................................................................................................................................--:..................................................................................................................................................................................................................::::::::::.........................................................................................................................................:::::::::........::::--------------------------::::::::::::::::::::::::::::::::::::::::::::::------------------------::::::::....................................................................................................................................................................................................................................................................................:::--=++***#################################################################*****************######################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##################################*****################################################################################################################################################################################################################################################################################################################################################################################################******#############################***************************************************************************+*****************************##############***************************************************************############################################*******************************************************************************************************************************************************************************************************************************************************************************************************##########********************************************************************************##############################################**************************########**************************************************************************************+++++++++++++++++++++++++++++++++++++++++=========================================================----------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::....................................
----------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::..................................................................................................................................:::-------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::...................................................................................................... ...................................................................::::----::::::::::::::::::::.....................................................................................................................................................................................................................................................................................................................................................................:::--========================---:::.................................:::::::::::::::::--------------------------------------------------------------::::::::::::::..........................................................................................................................................................................................................................................................................................................................................................................--:...................................................................................................................................................................................................................::::::::.........................................................................................................................................::::::::::::....::::::--------------------------:::::::::::::::::::::::::::::::::::::::::::::::::----------------------::::::::::..................................................................................................................................................................................................................................................................................::--=++***################################################################******************#######################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###################################*****################################################################################################################################################################################################################################################################################################################################################################################################******#############################***************************************************************************++****************************########*********************************************************************#############################################******************************************************************************************************************************************************************************************************************************************************************************************************##########*********************************************************************************#############################################**************************########***************************************************************************************++++++++++++++++++++++++++++++++++++++++=========================================================-----------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::....................................
---------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::..................................................................................................................................:::------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::...................................................................................................... ...................................................................::::-----:::::::::::::::::::.....................................................................................................................................................................................................................................................................................................................................................................:::--=========================---:::....................................::::::::::::::::::--------------------------------------------------------------:::::::::::::::....................................................................................................................................................................................................................................................................................................................................................................--:....................................................................................................................................................................................................................::::::.........................................................................................................................................:::::::::::::::::::::::--------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::-------------------:::::::::::::.............................................................................................................................................................................................................................................................................::--=++***###################################***########################********************#######################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####################################*****#################################################################################################################################################################################################################################################################################################################################################################################################******############################***************************************************************************++******************************###***********************************************************************##############################################******************************************************************************************************************************************************************************************************************************************************************************************************###########*********************************************************************************######################*********#############**************************#####*##****************************************************************************************++++++++++++++++++++++++++++++++++++++++========================================================------------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::....................................
---------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::..................................................................................................................................:::------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::....................................................................................................... ...................................................................::::-----:::::::::::::::::::.....................................................................................................................................................................................................................................................................................................................................................................:::--==========================---:::.........................................:::::::::::::::::------------------------------------------------------------::::::::::::::::................................................................................................................................................................................................................................................................................................................................................................--:.....................................................................................................................................................................................................................::::.........................................................................................................................................:::::::::::::::::::::::---------------------------:::::::::::::::::::::::::.:::::::::::::::::::::::::::::::------------------:::::::::::::::::.......................................................................................................................................................................................................................................................................::--=+****################################***********#################**********************########################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######%#############################*****#################################################################################################################################################################################################################################################################################################################################################################################################******#############################**************************************************************************++********************************************************************************************************##############################################******************************************************************************************************************************************************************************************************************************************************************************************************###########*********************************************************************************######################**********############***************************####*##****************************************************************************************++++++++++++++++++++++++++++++++++++++++========================================================------------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::....................................
----::--------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::..................................................................................................................................:::------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::...................................................................................................... ....................................................................::::-----:::::::::::::::::::.....................................................................................................................................................................................................................................................................................................................................................................:::--===========================--::::............................................::::::::::::::::::-----------------------------------------------------------::::::::::::::::::..........................................................................................................................................................................................................................................................................................................................................................--:.................................................................................................................................................................................................................................................................................................................................................................:::::::-----::::::::::::---------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::----------------:::::::::::::::::::::..................................................................................................................................................................................................................................................:::............::--=+***###############################****************************************************##########################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####%############################*****#################################################################################################################################################################################################################################################################################################################################################################################################******#############################**************************************************************************++******************************************************************************************************################################################******************************************************************************************************************************************************************************************************************************************************************************************************##########************************************************************************************##############*******************###########*************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++=========================================================------------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::....................................
::::::::-----------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::..................................................................................................................................::-------:::::::::::::::::::::::::::::::-::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::...................................................................................................... ....................................................................::::-----:::::::::::::::::::.....................................................................................................................................................................................................................................................................................................................................................................:::--===========================---::::...............................................::::::::::::::::::::----------------------------------------------------------:::::::::::::::::.........................:::::........................................................................................................................................................................................................................................................................................................................--:.................................................................................................................................................................................................................................................................................................................................................................::::::--------::::::::::---------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--------------::::::::::::::::::::::..................................................... .........................................................................................................................................................................................:::............::--=+***#############################******************************************************##########################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##################################*****#################################################################################################################################################################################################################################################################################################################################################################################################******#############################**************************************************************************++****************************************************************************************************##################################################******************************************************************************************************************************************************************************************************************************************************************************************************##########************************************************************************************#############********************###########*************************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++========================================================------------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::....................................
:::::::::::-------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::..................................................................................................................................::-------::::::::::::::::::::::::::::::--::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::...................................................................................................... ....................................................................::::-----:::::::::::::::::::.....................................................................................................................................................................................................................................................................................................................................................................::---============================---:::.................................................::::::::::::::::::::::::--------------------------------------------------------::::::::::::::::::..................::::::::::.....................................................................................................................................................................................................................................................................................................................--:................................................................................................................................................................................................................................................................................................................................................................::::::------------:::::-----------------------------::::::::::::::::::::....:...:::::::::::.........::::::::::::::::::::-------------::::::::::::::::::::::............................................... ...................................................................................................................................................................................::::...........::--=+****###########*##########************************************************************############################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###################################*****#################################################################################################################################################################################################################################################################################################################################################################################################******#############################**************************************************************************++*************************************************************************************************#####################################################******************************************************************************************************************************************************************************************************************************************************************************************************##########************************************************************************************##########***********************###########*************************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++========================================================-------------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::....................................
::::::::::::------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.................................................................................................................................:::-------::::::::::::::::::::::::::::::--::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::...................................................................................................... ....................................................................::::-----::::::::::::::::::......................................................................................................................................................................................................................................................................................................................................................................::---=============================---:::................................................:::::::::::::::::::::::::::::--------------------------------------------------------::::::::::::::::::::.........:::::::::::::....................................................................................................................................................................................................................................................................................................................--:...............................................................................................................................................................................................................................................................................................................................................................::::::-----------------------------------------------:::::::::::::::::::..........::::::::::............::::::::::::::::::::::-------------:::::::::::::::::::............................................ ..................................................................................................................................................................................:::::...........::--=+****##########************************++++++++++++************************************############################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###################################*****#################################################################################################################################################################################################################################################################################################################################################################################################*******############################**************************************************************************++********************************************************************************************##########################################################******************************************************************************************************************************************************************************************************************************************************************************************************##########*************************************************************************************#######*************************###########**************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++========================================================-------------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::....................................
.....::::::::---------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.................................................................................................................................:::-------:::::::::::::::::::::::::::::---::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::...................................................................................................... ......................................................................::::-----::::::::::::::::::......................................................................................................................................................................................................................................................................................................................................................................::---==============================--::::..............................................:::::::::::::::::::::::::::::::::::::-----------------------------------------------------:::::::::::::::::::::::::::::------:::....................................................................................................................................................................................................................................................................................................................--:...............................................................................................................................................................................................................................................................................................................................................................::::::-----------------------------------------------::::::::::::::::::...........:::::::::::...............::::::::::::::::::::::::----------------::::::::::........................................... ..................................................................................................................................................................................::::::..........::--=++***########************************++++++++++++++++++********************************############################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##################################*****#################################################################################################################################################################################################################################################################################################################################################################################################*******############################**************************************************************************++*****************************************************************************************##############################################################*****************************************************************************************************************************************************************************************************************************************************************************************************##########****************************************************************************************####**************************##########**************************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++========================================================-------------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::....................................
......::::::::------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.................................................................................................................................:::-------:::::::::::::::::::::::::::::---:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::....................................................................................................... ......................................................................::::-----::::::::::::::::::......................................................................................................................................................................................................................................................................................................................................................................::---==============================---:::.............................................:::::::::::::::.........:::::::::::::::::::------------------------------------------------------:::::::::::::::::::::---------:::...................................................................................................................................................................................................................................................................................................................--................................................................................................................................................................................................................................................................................................................................................................:::::------------------------------------------------:::::::::::::::::::..........:::::::::::...................:::::::::::::::::::::::::-------------:::::::::.......................................... ...............................................................................................................................................................................::::::..........:::-=++****#####************************+++++++++++++++++++++*******************************##########################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#################################*****#################################################################################################################################################################################################################################################################################################################################################################################################*******############################**************************************************************************++*************************************************************************************##################################################################******************************************************************************************************************************************************************************************************************************************************************************************************########*****************************************************************************************##****************************##########**************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++=======================================================-------------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::....................................
........:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.................................................................................................................................:::-------::::::::::::::::::::::::::::----:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::....................................................................................................... .......................................................................::::-----:::::::::::::::::.......................................................................................................................................................................................................................................................................................................................................................................::---===============================---:::..........................................:::::::----::::.................::::::::::::::::::--------------------------------------------------------::::::::::::-----===----::...................................................................................................................................................................................................................................................................................................................--..............................................................................................................................................................................................................................................................................................................................................................::::::-------------------------------------------------::::::::::::::::::::........::::::::::::.......................:::::::::::::::::::::::::::::::::::::::::::.......................................... ...............................................................................................................................................................................::::::..........:::-==++*****#******************+++++++++++++++++++++++++++++++*****************************#######################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%################################******################################################################################################################################################################################################################################################################################################################################################################################################********###########################**************************************************************************++***********************************************************************************#####################################################################*****************************************************************************************************************************************************************************************************************************************************************************************************########************************************************************************************************************************########****************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++========================================================-----------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::....................................
.........::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.................................................................................................................................:::-------::::::::::::::::::::::::::::----:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::....................................................................................................... .......................................................................::::-----:::::::::::::::::.......................................................................................................................................................................................................................................................................................................................................................................::---================================--:::.........................................:::::--------:::......................::::::::::::::::::---------------------------------------------------------::--------=====---::...................................................................................................................................................................................................................................................................................................................--..............................................................................................................................................................................................................................................................................................................................................................::::::-------------------------------------------------::::::::::::::::::::........::::::::::::::........................::::::::::::::::::::::::::::::::::::::::......................................... ..............................................................................................................................................................................::::::...........::--=++*****************++++++++++++++++++++++++++++++++++++++*****************************######################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##%############################******################################################################################################################################################################################################################################################################################################################################################################################################********###########################**************************************************************************++**********************#*######********************************########***********#######################################################################******************************************************************************************************************************************************************************************************************************************************************************************************#######*************************************************************************************************************************#######****************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++========================================================-----------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::....................................
..........:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.................................................................................................................................::--------::::::::::::::::::::::::::::----:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::....................................................................................................... ......................................................................:::::-----::::::::::::::::........................................................................................................................................................................................................................................................................................................................................................................:::--================================---:::......................................:::::----------:::...........................:::::::::::::::::--------------------------------------------------------------=======--:::..................................................................................................................................................................................................................................................................................................................--............................................................................................................................................................................................................................................................................................................................................................:::::::--------------------------------------------------::::::::::::::::::::....:::::::::::::::::.............................::::::::::::::::::::::::::::::::::::......................................... . ............................................................................................................................................................................:::::::.........::::-==++*************++++++++++++++++++++++++++++++++++++++++++****************************##################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#############################******################################################################################################################################################################################################################################################################################################################################################################################################********###########################*********************************************************************************************###############****************************###########################################################################################*********************************************************************************************************************************************************************************************************************************************************************************************************##****************************************************************************************************************************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++========================================================-------------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::....................................
...........::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.................................................................................................................................::--------::::::::::::::::::::::::::::----:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::....................................................................................................... .......................................................................:::::-----::::::::::::::..........................................................................................................................................................................................................................................................................................................................................................................:::--=================================---:::...................................::::::-----------:::................................::::::::::::::::---------------------------------------------------------========--:::..................................................................................................................................................................................................................................................................................................................--............................................................................................................................................................................................................................................................................................................................................................::::::---------------------------------------------------:::::::::::::::::::::.:::::::::::::::::::...................................:::::::::::::::::::::::::::::......................................... ............................................................................................................................................................................::::::::........::::--==++**********+++++++++++++===++++++++++++++++++++++++++++****************************##################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%############################******################################################################################################################################################################################################################################################################################################################################################################################################********###########################*********************************************************************************************################**************************############################################################################################***************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++========================================================-------------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::....................................
.............::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::................................................................................................................................:::--------:::::::::::::::::::::::::::-----:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::....................................................................................................... .......................................................................:::::-----:::::::::...............................................................................................................................................................................................................................................................................................................................................................................:::--=================================---:::..................................:::::-----=====---:::......................................::::::::::::::-----------------------------------------------------========--:::..................................................................................................................................................................................................................................................................................................................--...........................................................................................................................................................................................................................................................................................................................................................::::::----------------------------------------------------:::::::::::::::::::::::::::::::::::::::::...........................................::::::::::::::::::::.......................................... ............................................................................................................................................................................:::::::::.......::::--===+++******++++++++++++++======++++++++++++++++++++++++++****************************##################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###########################******################################################################################################################################################################################################################################################################################################################################################################################################*********#########################**********************************************************************************************##################**********************##############################################################################################****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++========================================================------------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::....................................
........................:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::................................................................................................................................:::-------::::::::::::::::::::::::::::----::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::....................................................................................................... .......................................................................:::::-----::::::...............................................................................::::...............................................................................................................................................................................................................................................................................................:::--==================================---:::................................::::-----=======---::............................................:::::::::::::------------------------------------------------=========--:::.................................................................................................................................................................................................................................................................................................................:--..........................................................................................................................................................................................................................................................................................................................................................::::::-----------------------------------------------------:::::::::::::::::::::::::::::::::::::::::..............................................::::::::::::::............................................ ............................................................................................................................................................................:::::::::::....:::::---===+++++++++++++++++++++========+++++++++++++++++++++++++*****************************###############################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##########################******################################################################################################################################################################################################################################################################################################################################################################################################*********#########################**********************************************************************************************######################****************################################################################################################*****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++=======================================================-------------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::....................................
.........................:::::--:::::::::::::::::::::::::::::::::::::::::::::::::::................................................................................................................................:::-------::::::::::::::::::::::::::::----:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::....................................................................................................... ........................................................................:::::-----:::::...............................................................................::::::..............................................................................................................................................................................................................................................................................................:::--===================================--:::...............................::::----=========--:::...............................................::::::::::::::--------------------------------------------=========--:::.................................................................................................................................................................................................................................................................................................................:--..........................................................................................................................................................................................................................................................................................................................................................:::::------------------------------------------------------:::::::::::::::::::::::::::::::::::::::::........................................................................................................ ............................................................................................................................................................................::::--:::::::::::::------===++++++++++++++++++==========++++++++++++++++++++++++*****************************##############################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#########################******################################################################################################################################################################################################################################################################################################################################################################################################*********#########################**********************************************************************************************######################################################################################################################################*****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++========================================================------------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::....................................
.........................:::::--:::::::::::::::::::::::::::::::::::::::::::::::::::................................................................................................................................:::-------::::::::::::::::::::::::::::----:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::....................................................................................................... ........................................................................:::::-----:::::..............................................................................::::::::.............................................................................................................................................................................................................................................................................................:::--===================================---:::.............................::::----==========--:::...................................................:::::::::::::-----------------------------------------=========--:::.................................................................................................................................................................................................................................................................................................................:--.........................................................................................................................................................................................................................................................................................................................................................:::::--------------------------------------------------------::::::::::::::::::::::::::::::::::::::::...................................................................................................... ............................................................................................................................................................................:::------:::::::::---------====+++++++++++++++==========+++++++++++++++++++++++++****************************#############################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########################*******################################################################################################################################################################################################################################################################################################################################################################################################*********#######################************************************************************************************************#####################################################################################################################################*******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++=========================================================----------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::....................................
.........................:::::---::::::::::::::::::::::::::::::::::::::::::::::::::................................................................................................................................:::-------:::::::::::::::::::::::::::-----:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::....................................................................................................... ........................................................................:::::-----:::::.............................................................................::::::::::............................................................................................................................................................................................................................................................................................:::--====================================--:::...........................::::----===========---::........................................................::::::::::::::-------------------------------------=======---::..................................................................................................................................................................................................................................................................................................................:--.........................................................................................................................................................................................................................................................................................................................................................:::::--------------------------------------------------------::::::::::::::::::::::::::::::::::::::::...................................................................................................... ............................................................................................................................................................................::--------:::::::------------====++++++++++++++=========++++++++++++++++++++++++++***************************############################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######################*******###############################################################################################################################################################################################################################################################################################################################################################################################***********##################****************************************************************************************************#####################################################################################################################################*******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++=========================================================----------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::....................................
:::......................:::::----:::::::::::::::::::::::::::::::::::::::::::::::::................................................................................................................................:::-------:::::::::::::::::::::::::::-----:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::....................................................................................................... .........................................................................::::-----:::::.............................................................................::::::::::............................................................................................................................................................................................................................................................................................:::--====================================---:::..........................::::---============--:::............................................................::::::::::::::---------------------------------=======--:::..................................................................................................................................................................................................................................................................................................................:--.........................................................................................................................................................................................................................................................................................................................................................:::::--------------------------------------------------------:::::::::::::::::::..:::::::::::::::::::................................................................................................... .. . ............................................................................................................................................................................::---------:::::--------------=======++++++++===========++++++++++++++++++++++++++***************************############################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######################*******###############################################################################################################################################################################################################################################################################################################################################################################################***********#############*********************************************************************************************************#####################################################################################################################################********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++=========================================================---------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::....................................
::::::..................::::::-----::::::::::::::::::::::::::::::::::::::::::::::::................................................................................................................................:::-------:::::::::::::::::::::::::::----::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::....................................................................................................... ..........................................................................::::-----:::::..................................:::::::...................................:::::::::::............................................................................................................................................................................................................................................................................................:::--=====================================--:::........................::::----============---:::...............................................................::::::::::::::::-----------------------------====----:::..................................................................................................................................................................................................................................................................................................................:-:.........................................................................................................................................................................................................................................................................................................................................................::::---------------------------------------------------------::::::::::::::::::.....:...:::::::::::::.................................................................................................. ...........................................................................................................................................................................:::---===----:::----==-----::---==========++++==========++++++++++++++++++===+++++++***************************########################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####################*******###############################################################################################################################################################################################################################################################################################################################################################################################************######***************************************************************************************************************###################################################################################################################################********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************#####*********************#######****#*************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++========================================================----------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::...................................
::::::::::...........::::::::------::::::::::::::::::::::::::::::::::::::::::::::::................................................................................................................................:::-------:::::::::::::::::::::::::::----::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::....................................................................................................... ..........................................................................::::-----:::::.................................::::::::::.................................:::::-:::::............................................................................................................................................................................................................................................................................................:::--=====================================---:::.......................:::----=============--::::...................................................................:::::::::::::::::--------------------------------:::..................................................................................................................................................................................................................................................................................................................:-:.........................................................................................................................................................................................................................................................................................................................................................::::---------------------------------------------------------::::::::::::::::::.....:...:::::::::::::.................................................................................................. ...........................................................................................................................................................................:::---====---------====---::::---==========++===========+++++++++++++++++=====+++++++**************************########################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####################*******################################################################################################################################################################################################################################################################################################################################################################################################********************************************************************************************************************************##################################################################################################################################*******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************###################################****#**************************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++========================================================----------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::...................................
::::::::::::::..:::::::::::::------::::::::::::::::::::::::::::::::::::::::::::::::................................................................................................................................:::-------:::::::::::::::::::::::::::----::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::....................................................................................................... ..........................................................................::::-----:::::.................................:::::::::::...............................:::::---:::::...........................................................................................................................................................................................................................................................................................:::--======================================--:::.....................::::----==============--:::........................................................................:::::::::::::::::::------------------------::::...................................................................................:................................................................................................................................................................................ .. . .......................:-:.........................................................................................................................................................................................................................................................................................................................................................::::---------------------------------------------------------::::::::::::::::::..........::::::::::.................................................................................................... ...........................................................................................................................................................................::---=====---------====---:::::--=======================+++++++++++++++++======+++++++*************************###################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####################*******################################################################################################################################################################################################################################################################################################################################################################################################*******************************************************************************************************************************################################################################################################################################******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************#*****##############################################******************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++========================================================---------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::...................................
-::::::::::::::::::::::::::::-------::::::::::::::::::::::::::::::::::::::::::::::................................................................................................................................:::--------::::::::::::::::::::::::::-----:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::....................................................................................................... ...........................................................................::::-----:::::.................................:::::::::::::.............................::::----:::::...........................................................................................................................................................................................................................................................................................:::--======================================---:::...................::::----==============---:::..............................................................................:::::::::::::::::::-----------------::::................................................................................:::::::.................................................................................................................................................................. ..................:-:.........................................................................................................................................................................................................................................................................................................................................................::::---------------------------------------------------------::::::::::::::::::..........::::::::::................................................................................................... .........................................................................................................................................................................::---======-------======--:::::---=======================+++++++++++++++========+++++++************************##################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####################*******################################################################################################################################################################################################################################################################################################################################################################################################*******************************************************************************************************************************################################################################################################################################**********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************###############################################################***************************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++=======================================================---------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::...................................
-----::::::::::::::::::::::::-------::::::::::::::::::::::::::::::::::::::::::::::................................................................................................................................:::--------::::::::::::::::::::::::::----::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::....................................................................................................... ...........................................................................::::-----:::::.................................:::::::::::::::..........................:::::-----::::............................................................................................................................................................................................................................................................................................::---======================================--:::..................::::----===============--:::...................................................................................::::::::::::::::::::::::-:--:::::::.................................................................................:::::::::...................................................................................................................................................... .. ...............:-:.........................................................................................................................................................................................................................................................................................................................................................::::---------------------------------------------------------::::::::::::::::.............:::::::::.................................................................................................. .........................................................................................................................................................................::---=======-----=======---::::---=======================+++++++++++++++=========++++++************************################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####################*******################################################################################################################################################################################################################################################################################################################################################################################################*******************************************************************************************************************************###############################################################################################################################***********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************################################################################***************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++=======================================================----------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::...................................
--------:::::::::::::::::::::-------::::::::::::::.....:::::::::::::::::::::::::::................................................................................................................................:::-------:::::::::::::::::::::::::::----::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::....................................................................................................... ...........................................................................::::-----:::::.................................::::::::::::::::.........................::::------::::............................................................................................................................................................................................................................................................................................:::--======================================---:::................::::----===============---:::........................................................................................:::::::::::::::::::::::::::::..................................................................................:::::::::.................................................................................................................................................. . ............:-:.........................................................................................................................................................................................................................................................................................................................................................::::---------------------------------------------------------::::::::::::::::..............:::::::................................................................................................... ........................................................................................................................................................................:::-----=======--========----:::---========================++++++++++++++==========++++++***********************################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####################*******################################################################################################################################################################################################################################################################################################################################################################################################*******************************************************************************************************************************###############################################################################################################################********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************####################################################################****************************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++=======================================================---------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::...................................
-----------::::::::::::::::::--------::::::::::::...........::::::::::::::::::::::................................................................................................................................:::-------:::::::::::::::::::::::::::----::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::....................................................................................................... ...........................................................................::::-----:::::.................................::::::---::::::::.......................:::::-------::::...........................................................................................................................................................................................................................................................................................:::--=======================================--:::...............::::---=================--:::...............................................................................................:::::::::::::::::::::......................................................................................::::::............................................................................................................................................... ........................... .........:-:.........................................................................................................................................................................................................................................................................................................................................................::::---------------------------------------------------------::::::::::::::::..............::::::................................................................................................... ........................................................................................................................................................................::---------===============---------========================++++++++++++++===========++++++**********************############################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####################*******#################################################################################################################################################################################################################################################################################################################################################################################################*****************************************************************************************************************************################################################################################################################################*****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************########################################################################***************************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++=======================================================---------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::...................................
-------------::::::::::::::::--:-----:::::::::::..............::::::::::::::::::::................................................................................................................................:::-------:::::::::::::::::::::::::::----::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::....................................................................................................... ...........................................................................:::::----:::::.................................:::::------::::::::.....................::::--------::::...........................................................................................................................................................................................................................................................................................:::---======================================---::...............:::----================---:::......................................................................................................................................................................................................................................................................................................................................................... . ............::::::::::::::::::::....... . ....:-:.........................................................................................................................................................................................................................................................................................................................................................::::---------------------------------------------------------::::::::::::::::...............::::................................................................................................... .......................................................................................................................................................................::----------===============--------========================++++++++++++++============+++++**********************##########################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####################*******##################################################################################################################################################################################################################################################################################################################################################################################################****************************************************************************************************************************################################################################################################################################**********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************###############################################################################****************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++=======================================================---------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::...................................
-------------------::::::::::::-------::::::::::...............:::::::::::::::::::................................................................................................................................:::-------::::::::::::::::::::::::::----::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::........................................................................................................ .............................................................................:::::-:::::::.................................::::::------::::::::....................::::--------::::...........................................................................................................................................................................................................................................................................................::::--=======================================--:::.............:::----================---:::............................................................................................................................................................................................................................................................................................................:.....................................+- . .. .=+. .-: ......:..:::::::.:::::::::::::::.........::::.... . . ..:-:.........................................................................................................................................................................................................................................................................................................................................................::::---------------------------------------------------------::::::::::::::::...................................................................................................................... .....................................................................................................................................................................::-----------==============-------==============================++++++++=============+++++**********************######################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####################*******###################################################################################################################################################################################################################################################################################################################################################################################################**************************************************************************************************************************#################################################################################################################################*******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************###################################################################################***************************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++=======================================================---------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::....................................
------------------::::::::::::::------:::::::::.................::::::::::::::::::................................................................................................................................:::-------::::::::::::::::::::::::::----::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::........................................................................................................ .............................................................................::::::::::::...................................:::::--------:::::::...................::::--------::::............................................................................................................................................................................................................................................................................................:::--=======================================---::............:::----=================---:::....................................................................................................................................................................................................................................................................................................=+:....=*....................................+%+ +##*-=+*#*:....:.:::::::::::::::-----------------::::::.....::::... ..:-:.........................................................................................................................................................................................................................................................................................................................................................::::---------------------------------------------------------:::::::::::::::::..................................................................................................................... .....................................................................................................................................................................::-----------===============------==============================+++++================+++++**********************####################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######################*******###################################################################################################################################################################################################################################################################################################################################################################################################**************************************************************************************************************************#################################################################################################################################*******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************####################################################################################***************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++========================================================---------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::....................................
------------------:::::::::::::::-----:::::::::..................:::::::::::::::::................................................................................................................................:::-------::::::::::::::::::::::::::----::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::........................................................................................................ .............................................................................:::::::::::....................................::::::--------::::::::.................::::--------::::............................................................................................................................................................................................................................................................................................:::---=======================================--:::..........:::----=================---:::....................................................................................................................................................................................................................................................................................................*%%#-..:##:..................................-%#- . :####*####*-.::::::=+++++=---------------------------------:::::::::.... .:::.........................................................................................................................................................................................................................................................................................................................................................::::---------------------------------------------------------::::::::::::::::::.................................................................................................................... . ....................................................................................................................................................................:::-----------=================---====================================================+++++**********************#################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######################*******####################################################################################################################################################################################################################################################################################################################################################################################################*************##############*********************************************************************************************##################################################################################################################################*********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************##############################################################################################****************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++=======================================================---------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::----------------:::::::::::::::::::::::::::::::::::::::::::....................................
-------------------:::::::::::::::----::::::::...................:::::::::::::::::................................................................................................................................:::-------:::::::::::::::::::::::::-----::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::........................................................................................................ ..............................................................................:::::::::......................................:::::----------:::::::................:::---------::::.............................................................................................................................................................................................................................................................................................:::--=======================================--::::........::::---==================--:::..........................................................................................................................................................................................................................................................................................*%=.......=#=-**..-#*:..................................*%+. == =**#****##*:..-+++*######+--------------------------------------:::::::... ::..........................................................................................................................................................................................................................................................................................................................................................::::---------------------------------------------------------::::::::::::::::::.................................................................................................................... . . ....................................................................................................................................................................::------------=========================================================================++++**********************################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######################*******######################################################################################################################################################################################################################################################################################################################################################################################################*******###################*******************************************************************************************####################################################################################################################################****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************###################################################################################################***************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++=======================================================---------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::------------------------:::::::::::::::::::::::::::::::::::::::::....................................
-------------------::::::::::::::::----:::::::....................::::::::::::::::................................................................................................................................:::-------:::::::::::::::::::::::::-----::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::........................................................................................................ ................................................................................::::::........................................:::::----------:::::::..............::::---------::::.............................................................................................................................................................................................................................................................................................:::--=======================================---:::.......:::----==================---:::.........................................................................................................................................................................................................................................................................................:%*%=...::.+*..-%=.=%*-................................ -%#: .##. :***#*-=###+..:+###**=+*##+---=------------------------------------------::. ::..........................................................................................................................................................................................................................................................................................................................................................::::---------------------------------------------------------:::::::::::::::::::................................................................................................................... ........ ...................................................................................................................................................................:::------:::---=========================================================================++++**********************#################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######################*******#################################################################################################################################################################################################################################################################################################################################################################################################################################******************************************************************************************####################################################################################################################################***************************************************************************************************************************************************************************************************************************************************************************************************************************************************************#####################################################################################################***************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++======================================================----------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--------------------------------:::::::::::::::::::::::::::::::::::::::....................................
------------:::::::::::::::::::::::::---::::::....................::::::::::::::::................................................................................................................................::--------::::::::::::::::::::::::-----:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::........................................................................................................ ...........................................................:::::..............................................................:::::------------::::::.............::::---------::::.............................................................................................................................................................................................................................................................................................:::---=======================================--:::......:::----==================---:::..........................................................................................................................................................................................................................................................................................+#.*#-.=##+#=.-+%+.=#+-..............:..................*#+ +##=::=*###+.*###=:--+###*=-+#*#+-=***=-----------------------------------------=-:....:..........................................................................................................................................................................................................................................................................................................................................................::::---------------------------------------------------------:::::::::::::::::::................................................................................................................... .......... ...................................................................................................................................................................:::------:::---=========================================================================+++++*********************###########################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######################********################################################################################################################################################################################################################################################################################################################################################################################################################################******************************************************************************+**********#####################################################################################################################################*****************************************************************************************************************************************************************************************************************************************************************************************************************###**************************************###########################################################################################################***************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++=====================================================----------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---------------------------------------:::::::::::::::::::::::::::::::::::::....................................
::::::::::::::::::::::::::::::::::::::::::::::....................:::::::::::::::.................................................................................................................................::--------::::::::::::::::::::::::-----::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::........................................................................................................ ..........................................................::::::::.............................................................:::::------------::::::............::::---------::::..............................................................................................................................................................................................................................................................................................:::--=======================================---:::...::::----===================--:::.......................................................................................................................................................................................................................................................................................=#%#%#.:##+###%#==%#%+.=#=-............-:..........::..... =##+:--=+*#***+**#****#####*+=+##*****#*#+=*#*#*=-----------------------------------------===-..:..........................................................................................................................................................................................................................................................................................................................................................::::---------------------------------------------------------:::::::::::::::::::.................................................................................................................. ............ . ...................................................................................................................................................................:::------::::---========================================================================+++++*********************#######################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######################********################################################################################################################################################################################################################################################################################################################################################################################################################################****************************************************************************************#######################################################################################################################################***************************************************************************************************************************************************************************************************************************************************************************************************************#####*****************************#***################################################################################################################**************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++=====================================================----------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::----------------------------------------------:::::::::::::::::::::::::::::::::::::...................................
::::::::::::::::::::::::::::::::::::::::::::::.....................::::::::::::::................................................................................................................................:::--------::::::::::::::::::::::::-----::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::........................................................................................................ .........................................................:::::::::.............................................................:::::-------------::::::...........::::---------::::..............................................................................................................................................................................................................................................................................................:::--=======================================---::::::::::---===================---:::.......................................................................................................................................................................................................................................................................*%-............+%*-=%%-=#%%%%%%%%%#+%+.+*=-.........:-=:.........:--:....:=############**##*#########*#*#**###*##*##+***#*#*-------------------------------------------=+==:... ......................................................................................................................................................................................................................................................................................................................................................::::---------------------------------------------------------:::::::::::::::::::.................................................................................................................. .............. ...................................................................................................................................................................:::------::::---=======================================================================++++++*********************######################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######################*********################################################################################################################################################################################################################################################################################################################################################################################################################################***************************************************************************************########################################################################################################################################**************************************************************************************************************************************************************************************************************************************************************************************************************#######*************************#######################################################################################################################**************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++=====================================================-----------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-------------------------===============-----------::::::::::::::::::::::::::::::::::::...................................
::::::::::::::::::::::::::::::::::::::::::::::.....................:::::::::::::.................................................................................................................................:::-------:::::::::::::::::::::::-------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::........................................................................................................ ........................................................:::::::::::.............................................................:::::-------------::::::..........::::---------::::..............................................................................................................................................................................................................................................................................................:::---=======================================---:::::::----===================---:::.......................................................................................................................................................................................................................................................................:%%#...........-%=...%%#%%%%%%%%%%%%%%#+*+--...::...-=-.........:--:....-*#########################################*****#*###=--------------------------------------------==+=:. ......................................................................................................................................................................................................................................................................................................................................................::::---------------------------------------------------------:::::::::::::::::::................................................................................................................ ............. ..................................................................................................................................................................:::------::::---=======================================================================++++++********************##################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########################********################################################################################################################################################################################################################################################################################################################################################################################################################################**************************************************************************************##########################################################################################################################################*************************************************************************************************************************************************************************************************************************************************************************************************************#######********************#############################################################################################################################***************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++=====================================================-----------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-------------------------=====================-----------::::::::::::::::::::::::::::::::::....................................
:::::::::::::::::::::::::::::::::::::::::::::.......................::::::::::::.................................................................................................................................:::-------:::::::::::::::::::::::-------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::........................................................................................................ ........................................................::::::::::::............................................................:::::--------------::::::.........:::-----------:::...............................................................................................................................................................................................................................................................................................:::--=======================================---::::::----===================---:::....................................................................................................................................................................................................................................................................-==:=###:..........*#:..-#%%%%%%%%%%%%%%%%%%%*=-..-=**++*=........:--:....=#%%%#######################################**#**##*###=-----------------------------------------------===:......................................................................................................................................................................................................................................................................................................................................................::::---------------------------------------------------------:::::::::::::::::::................................................................................................................ .............. ..................................................................................................................................................................::-------::::---=======================================================================+++++*********************#################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######################****+****################################################################################################################################################################################################################################################################################################################################################################################################################################**************************************************************************************##########################################################################################################################################************************************************************************************************************************************************************************************************************************************************************************************************************#########********************############################################################################################################################***************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++=====================================================-----------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::----------------------------========================----------:::::::::::::::::::::::::::::::::....................................
..................:::::::::::::::::::::::::::........................::::::::::..................................................................................................................................:::-------::::::::::::::::::::::-------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::...............................................................................................::........ .......................................................::::::--:::::.............................................................:::::--------------:::::........::::-----------::::..............................................................................................................................................................................................................................................................................................:::--========================================---::::----====================--::::...............................................................................................................................................................................................................................................................:.::*###*####:...::-::-=%*--=*%%%%%%%%%%%%%%%%%%%%%%#+==-=**+**=:..:-+=-:....-*%%%%%########################################*#*#######+---=--------------------------------------------==++=-::.................................................................................................................................................................................................................................................................................................................................................::::---------------------------------------------------------:::::::::::::::::::................................................................................................................ ............... ..................................................................................................................................................................::-------:::::--=======================================================================+++++*********************################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######################****+****################################################################################################################################################################################################################################################################################################################################################################################################################################************************************************************************************############################################################################################################################################************************************************************************************************************************************************************************************************************************************************************************************************************##########*****************###############################################################################################################################**************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++=====================================================-----------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-------------------------==================================---------:::::::::::::::::::::::::::::::::....................................
............................:::::::::::::::::.........................::::::::...................................................................................................................................:::-------:::::::::::::::::::::--------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::............................................................................................:..::........ .......................................................:::::----:::::............................................................:::::--------------::::::.......::::-----------::::..............................................................................................................................................................................................................................................................................................:::---=======================================----------====================---:::..............................................................................................................................................................................................................................................................+%%%%%#-.:*####-:--=+*++=+%++*#%%%%%%%%%%%%%%%%%%%%%%%%%#+-:+*=-+#***##*=...:-=#%%%%%%%%%%%%%%%%################################*#######+==+++--------------------------------------====++++++++++==-:............................................................................................................................................................................................................................................................................................................................................::::---------------------------------------------------------:::::::::::::::::::................................................................................................................ ............... ..................................................................................................................................................................::-------:::::--======================================================================++++++*********************################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########################****++***################################################################################################################################################################################################################################################################################################################################################################################################################################************************************************************************************############################################################################################################################################************************************************************************************************************************************************************************************************************************************************************************************************************###########**************#################################################################################################################################**************************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++====================================================-----------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::------------------------========================================---------::::::::::::::::::::::::::::::::....................................
..................................:::::::::::...........................::::.....................................................................................................................................:::-------:::::::::::::::::::::--------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::............................................................................................:.:::........ .......................................................:::::------::::.............................................................:::::--------------::::::......::::-----------::::...............................................................................................................................................................................................................................................................................................:::--========================================--------====================---:::..............................................................................................................................................................................................................................................................-%+.:*#%%*#%%%%#===+*#%%%##%#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#++*+--+##+=-::--===#%%%%%%%%%%%%%%%%%########################################+--==+=----------------------------------==+++++++++++===+++++=-:.........................................................................................................................................................................................................................................................................................................................................::::---------------------------------------------------------:::::::::::::::::::................................................................................................................ ......::....... .................................................................................................................................................................:::-------:::::--=====================================================================+++++++*********************#######################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########################****++***#################################################################################################################################################################################################################################################################################################################################################################################################################################***********************************************************************************############################################################################################################################################************************************************************************************************************************************************************************************************************************************************************************************************************###########***********####################################################################################################################################***************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++=====================================================----------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---------------------------==========================================----------:::::::::::::::::::::::::::::::....................................
......................................::::::.....................................................................................................................................................................:::-------:::::::::::::::::::::-------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::............................................................................................:::::........ .......................................................:::::------:::::............................................................:::::---------------::::::.....::::-----------::::...............................................................................................................................................................................................................................................................................................:::--==========================================----=====================---:::...............................................................................................................................................................................................................................................................+%-.=+.:*%*-#%%%*#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*=--**---======#%%%%%%%%%%%%%#############################################*=---++--------------------------------==++++++===================-::.....................................................................................................................................................................................................................................................................................................................................::::---------------------------------------------------------:::::::::::::::::::................................................................................................................ .....:::........ .................................................................................................................................................................:::-------:::::---====================================================================++++++**********************####################################################################%%%%%%%%%%%%%#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#########################****++***#################################################################################################################################################################################################################################################################################################################################################################################################################################***********************************************************************************############################################################################################################################################***********************************************************************************************************************************************************************************************************************************************************************************************************#############****###########################################################################################################################################**************************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++====================================================------------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---------------------------=============================================-=----------::::::::::::::::::::::::::::::....................................
.................................................................................................................................................................................................................:::------:::::::::::::::::::::::-----::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::............................................................................................:::::....... .......................................................:::::-------::::.............................................................:::::---------------::::::...:::::-----------::::...............................................................................................................................................................................................................................................................................................:::---==================================================================--:::........................................................................................................................................................................................................................................................:::.....+#-:=:...+-.*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%*=*#======--+%%%%%%%%%%%%###############################################**+=-=+=-----------------------------==+++=====-=====================--:::................................................................................................................................................................................................................................................................................................................................::::---------------------------------------------------------:::::::::::::::::::................................................................................................................ ......::::....... .................................................................................................................................................................:::-------:::::---===================================================================+++++++**********************###################################################################%%%%%%%%%%%%%############%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##########################****++***#################################################################################################################################################################################################################################################################################################################################################################################################################################************************************************************************************###########################################################################################################################################**********************************************************************************************************************************************************************************************************************************************************************************************************#############################################################################################################################################################***************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++====================================================------------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::----------------------------=====================================================--------:::::::::::::::::::::::::::::::...................................
.................................................................................................................................................................................................................:::------::::::::::::::::::::::::---:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::............................................................................................:::::....... .......................................................:::::--------::::............................................................:::::----------------::::::.::::::-----------::::................................................................................................................................................................................................................................................................................................:::--=================================================================--::::.......................................................................................................................................................................................................................................................=#%#+-:..+%::-...:-*#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%+--==---#%%%%%%%%#%###############%###############################*****+=-=+----------------------------==++===-==============================-::.............................................................................................................................................................................................................................................................................................................................::::---------------------------------------------------------:::::::::::::::::::................................................................................................................ ......::::........ .................................................................................................................................................................:::-------:::::---==================================================================+++++++**********************####################################################################%%%%%%%%%#%%##############%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###########################***+++***#################################################################################################################################################################################################################################################################################################################################################################################################################################************************************************************************************###########################################################################################################################################*********************************************************************************************************************************************************************************************************************************************************************************************************##############################################################################################################################################################***************************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++===================================================-------------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-------------------------==-=========================================================--------:::::::::::::::::::::::::::::::...................................
.................................................................................................................................................................................................................:::------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::...........................................................................................:::::::....... .......................................................:::::--------::::.............................................................:::::----------------::::::::::::-----------::::................................................................................................................................................................................................................................................................................................:::---===============================================================---:::.......................................................................................................................................................................................................................................................-%#**#%%+:+#-:::-+#%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%+:-----*%%%%%%%###################%%%%%##########################********+-+=--------------------------=+++==---=======--========================-::..........................................................................................................................................................................................................................................................................................................................:::----------------------------------------------------------::::::::::::::::::::............................................................................................................... .....:::::...... ................................................................................................................................................................::---==---::::::--===============-----============================================+++++++************************#####################################################################%%%%%%%%%##################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###########################***+++***##################################################################################################################################################################################################################################################################################################################################################################################################################################***********************************************************************************###########################################################################################################################################******************************************************************************************************************************************************************************************************************************************************************************************************#################################################################################################################################################################****************************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++===================================================------------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--------------------------==================================================================---------:::::::::::::::::::::::::::::::..................................
.................................................................................................................................................................................................................:::------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::...........................................................................................:::::::....... .......................................................:::::--------:::::.............................................................:::::---------------::::::::::::-----------::::..........:::....................................................................................................................................................................................................................................................................................:::---=============================================================---:::........................................................................................................................................................................................................................................................=#:...-*%%#%-:=*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#=::--*%%%%%##%####################%%%%%#########################****++**+====------------------------=++==----====-----------======================-:........................................................................................................................................................................................................................................................................................................................:::----------------------------------------------------------::::::::::::::::::::............................................................................................................... .....:::::...... ................................................................................................................................................................::---=----::::::--==============------=======================================+++++++++++*************************#####################################################################%%%%%%%%%##################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##############################***+++***##################################################################################################################################################################################################################################################################################################################################################################################################################################***********************************************************************************###########################################################################################################################################*****************************************************************************************************************************************************************************************************************************************************************************************************###################################################################################################################################################################***************************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++===================================================------------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-------------------------========================================================================--------:::::::::::::::::::::::::::::::..................................
.................................................................................................................................................................................................................::------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::...........................................................................................:::::::....... .......................................................:::::---------::::.............................................................:::::----------------:::::::::::-----------::::.........:::::...................................................................................................................................................................................................................................................................................:::---============================================================---:::.................................................................................................................................:.......................................................................................................................+#:.....:=#%*#%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#*+*%%%%%%#######################%%%%%%#######################****++++++++======-------------------=++=------==------------------===================-:......................................................................................................................................................................................................................................................................................................................:::----------------------------------------------------------::::::::::::::::::::............................................................................................................... .....:::::...... ................................................................................................................................................................::---=----::::::--==============-------===================================++++++++++++***************************#####################################################################%%%%%%%%%##################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%################################***+++***##################################################################################################################################################################################################################################################################################################################################################################################################################################***************************************************************************+++*****############################################################################################################################################***********************************************************************************************************************************************************************************************************************************************************************************************########################################################################################################################################################################***************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++===================================================-----------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---------------------------=============================================================================-------:::::::::::::::::::::::::::::::..................................
................................................................................................................................................................................................................:::------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::...........................................................................................:::::::....... .......................................................:::::---------::::..............................................................:::::----------------:::::::::::----------:::::........:::::....................................................................................................................................................................................................................................................................................:::---==========================================================---:::.................................................................................................................................-:...................................................................................................................:=+*#%+--:....*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####################################################***+++++++++++++=====---------------=++=------------------------------================+=-:...................................................................................................................................................................................................................................................................................................................::::----------------------------------------------------------:::::::::::::::::::................................................................................................................ .....:::::..... ................................................................................................................................................................::--==---:::::::---============--------================================++++++++++++++*********#######***********######################################################################%%%%%%%%###################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##################################***+++***##################################################################################################################################################################################################################################################################################################################################################################################################################################**************************************************************************++++****#############################################################################################################################################**************************************************************************************************************************************************************************************************************************************************************************************##################################################################################################################################################################################****************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++====================================================-----------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-----------------------------=================================================================================-------::::::::::::::::::::::::::::::::.................................
................................................................................................................................................................................................................:::------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::..........................................................................................::::::::....... .......................................................:::::---------::::..............................................................::::::----------------::::::::::----------:::::.......::::::.....................................................................................................................................................................................................................................................................................:::--=========================================================---:::.................................................................................................................................:=:...................................................................................................................-#+++##**+=:-*%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#%%%######%%%%%####################################################**++++++++++++++++++==-------------=++=----------------------------------===============+=-:.................................................................................................................................................................................................................................................................................................................::::----------------------------------------------------------::::::::::::::::................................................................................................................... .....:::::..... ................................................................................................................................................................::--==---:::::::---============-------=====+++=======================++++++++++++*********###############******########################################################################%###%%####################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####################################***+++***###################################################################################################################################################################################################################################################################################################################################################################################################################################************************************************************************+++++*****############################################################################################################################################***********************************************************************************************************************************************************************************************************************************************************************************#####################################################################################################################################################################################****************************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++====================================================----------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-------------------------=========================================================================================-------::::::::::::::::::::::::::::::::.................................
................................................................................................................................................................................................................:::------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::...........................................................................................::::::::....... ........................................................::::---------::::...............................................................:::::----------------:::::::::-----------:::::.......:::::::....................................................................................................................................................................................................................................................................................:::---=======================================================---:::..................................................................................................................................:-....................................................................................................................=*:..+#=--=*#%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#%%%##########%%##################################################*##**+++++++++++++++==++=------------=++=-------------------====---------------===============-:................................................................................................................................................................................................................................................................................................................::::----------------------------------------------------------::::::::::::::::................................................................................................................... .....:::::..... ...............................................................................................................................................................:::--==---:::::::---============-------===+++++++=================++++++++++++***********#########################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######################################***+++***###################################################################################################################################################################################################################################################################################################################################################################################################################################***********************************************************************++++++*****############################################################################################################################################*******************************************************************************************************************************************************************************************************************************************************************************#########################################################################################################################################################################################*****************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++====================================================-----------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-----------------------==============================================================================================------::::::::::::::::::::::::::::::::.................................
................................................................................................................................................................................................................:::-----::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::..........................................................................................:::::::::....... ........................................................::::---------::::................................................................:::::----------------:::::::::----------:::::.......:::::::.....................................................................................................................................................................................................................................................................................:::--======================================================---:::...................................................................................................................................::....................................................................................................................-#:..+%#=-*%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####################################################################***#**++++++++++++++=--=+=-----------==+=--------------------====---------------================-:...............................................................................................................................................................................................................................................................................................................::::----------------------------------------------------------::::::::::::::::................:.................................................................................................. .....::::::..... ...............................................................................................................................................................:::--==----::::::----===========------==++++++++++=============+++++++++++**********##############################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##############################################***+++***###################################################################################################################################################################################################################################################################################################################################################################################################################################***********************************************************************++++++*****############################################################################################################################################**************************************************************************************************************************************************************************************************************************************************************************###############################################################################################################################################################################################****************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++====================================================-----------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::----------------=======================================================================================================------::::::::::::::::::::::::::::::::.................................
................................................................................................................................................................................................................:::-----::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::..........................................................................................:::::::::...... ........................................................::::---------::::................................................................:::::-----------------::::::::----------:::::.......:::::::.....................................................................................................................................................................................................................................................................................::::--====================================================---:::......................................................................................................................................................................................................................................................:-::=#=..-%#=*%%%%%%%%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#############################*#######################################****#**++++++++++++++=--=+=-----------=+=---------------------------------------==================-:..............................................................................................................................................................................................................................................................................................................::::----------------------------------------------------------::::::::::::::::................:.................................................................................................. .....::::::..... ...............................................................................................................................................................:::--==----::::::----============----==++++++++++++==========++++++++++**********#################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%################################################***+++***###################################################################################################################################################################################################################################################################################################################################################################################################################################************************************************************************+**++*****############################################################################################################################################************************************************************************************************************************************************************************************************************************************************************************#################################################################################################################################################################################################****************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++=====================================================----------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-----------==============================================================================================================------::::::::::::::::::::::::::::::::.................................
................................................................................................................................................................................................................:::------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::..........................................................................................:::::::::...... .......................................................::::---------::::.................................................................:::::-----------------::::::-----------:::::......:::::::::.....................................................................................................................................................................................................................................................................................:::---======+===========================================---:::.......................................................................................................................................................................................................................................................+%###%=..:#*#%%%%%%%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###########################*###########################################**#****++++++++++++++=-==+=-----------++----------------------------====----------==----============:.............................................................................................................................................................................................................................................................................................................::::-----------------------------------------------------------:::::::::::::::................................................................................................................... .....::::::..... ..............................................................................................................................................................:::--==----::::::-----===========--===+++*****++++++++=+++++++++++++**********#####################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###################################################***+++***###################################################################################################################################################################################################################################################################################################################################################################################################################################*************************************************************************+++******############################################################################################################################################***********************************************************************************************************************************************************************************************************************************************************************##################################################################################################################################################################################################****************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++===================================================----------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::----------================================================================================================================-------:::::::::::::::::::::::::::::::.................................
................................................................................................................................................................................................................:::------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::..........................................................................................:::::::::...... .......................................................::::---------::::.................................................................:::::-----------------::::::-----------:::::......::::::::.......................................................................................................................................................................................................................................................................................:::---===============================================----:::........................................................................................................................................................................................................................................................=%#===:..:#%%%%%%%@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########################################*********########################*******+++++++++++++++==+==----------=+=========--------------------======----------------===========--:..........................................................................................................................................................................................................................................................................................................::::-----------------------------------------------------------:::::::::::::::................................................................................................................... .....::::::..... ..............................................................................................................................................................::---===---::::::-----===============+++********+++++++++++++++++*********#########################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###################################################**++++***###################################################################################################################################################################################################################################################################################################################################################################################################################################**********************************************************************************############################################################################################################################################**********************************************************************************************************************************************************************************************************************************************************************###################################################################################################################################################################################################*****************************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++====================================================---------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-----------==================================================================================================================-------:::::::::::::::::::::::::::::::.................................
................................................................................................................................................................................................................:::------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::..........................................................................................:::::::::...... .......................................................:::::-------::::...................................................................:::::-----------------:::::------------::::......::::::::........................................................................................................................................................................................................................................................................................:::--=======+===+==================================---::::.........................................................................................................................................................................................................................................................:=%+:.:..+%%%%%%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#########################################************#####################*******+++++++++++=+++==+=---------==+==============------------------========-------------============--.........................................................................................................................................................................................................................................................................................................::::-----------------------------------------------------------:::::::::::::::................................................................................................................... .....::::::..... ..............................................................................................................................................................::---===----:::::-----==============+++**********++++++++++++*********#############################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######################################################**++++***###################################################################################################################################################################################################################################################################################################################################################################################################################################**********************************************************************************############################################################################################################################################*******************************************************************************************************************************************************************************************************************************************************************#######################################################################################################################################################################################################*****************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++=====================================================---------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--------------====================================================================================================================--------::::::::::::::::::::::::::::::.................................
................................................................................................................................................................................................................:::-------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::..........................................................................................::::::::::...... .......................................................:::::-------::::...................................................................::::::-----------------:::-------------::::......::::::::........................................................................................................................................................................................................................................................................................:::---======+++++++++=============================---::::............................................................................................................................................................................................................................................................-##-.:+%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####################*##############*######************######################******+++++++++++=++++==------======+===============-------------------========------------=============-:..... ................................................................................................................................................................................................................................................................................................::::-----------------------------------------------------------:::::::::::::::...........:::..................................................................................................... .....::::::..... ..............................................................................................................................................................::---====--------------=============+++************+++++++*********###############################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###########################################################**++++***##################################################################################################################################################################################################################################################################################################################################################################################################################################***********************************************************************************############################################################################################################################################*******************************************************************************************************************************************************************************************************************************************************************#######################################################################################################################################################################################################******************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++=====================================================--------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---------------======================================================================================================================--------:::::::::::::::::::::::::::::.................................
................................................................................................................................................................................................................:::-------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::..........................................................................................::::::::::...... ........................................................:::::-------::::....................................................................:::::------------------::-------------::::......::::::::.........................................................................................................................................................................................................................................................................................:::---======++++++++============================---:::...............................................................................................................................................................................................................................................................:*#++%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######################%##*-*#######***###**************###############*****#******+++++++++++++++++------======+===================-------------------------------------========-----=-:. . ..... ..........................................................................................................................................................................................................................................................................................::::-----------------------------------------------------------:::::::::::::::..........::::::................................................................................................... .....::::::..... ..............................................................................................................................................................::--======-------------=============++**************************##################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%################################################################**++++***##################################################################################################################################################################################################################################################################################################################################################################################################################################************************************************************************************############################################################################################################################################****************************************************************************************************************************************************************************************************************************************************************##########################################################################################################################################################################################################*****************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++=====================================================---------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---------------========================================================================================================================--------:::::::::::::::::::::::::::::.................................
................................................................................................................................................................................................................:::-------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::..........................................................................................::::::::::...... .........................................................::::-------::::....................................................................::::::--------------------------------:::::.....:::::::::........................................................................................................................................................................................................................................................................................::::--======++++++++==========================----:::......... ....................................................................................................................................................................................................................................................+%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###################*#####=-+######**********************####******#***************++++++++++++=++++=---========+===================-------------------------------------========---------. ............................................................................................................................................................................................................................................................................................::::-----------------------------------------------------------::::::::::::::::......:.:::::::................................................................................................... .....::::::..... ..............................................................................................................................................................:::--======-------------=============++************************####################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####################################################################**++++***###################################################################################################################################################################################################################################################################################################################################################################################################################################***********************************************************************************############################################################################################################################################***************************************************************************************************************************************************************************************************************************************************************###########################################################################################################################################################################################################*****************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++======================================================--------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-----====================================================================================================================================--------::::::::::::::::::::::::::::.................................
................................................................................................................................................................................................................:::-------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.........................................................................................:::::::::::...... ..........................................................::::-------::::.....................................................................:::::--------------------------------:::::.....:::::::::.......................................................................................::::..............................................................................................................................................................................................::::--======+++++++=========================---::::........ .....................................................................................................................................................................................................................................................=%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######################*=--=#######**********************####*********************++++++++++++==+++============+===================------------------------=-------------=====------------:. .......................................................................................................................................................................................................................................................................................::::-----------------------------------------------------------::::::::::::::::......:::::::::::................................................................................................. .....::::::..... ..............................................................................................................................................................:::--=======-----------==============+++********##********#########################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######################################################################***++****###################################################################################################################################################################################################################################################################################################################################################################################################################################***********************************************************************************############################################################################################################################################***************************************************************************************************************************************************************************************************************************************************************###########################################################################################################################################################################################################******************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++======================================================--------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-----=======================================================================================================================================--------:::::::::::::::::::::::::::.................................
................................................................................................................................................................................................................:::-------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.........................................................................................:::::::::::...... ..........................................................::::-------::::.....................................................................::::::-------------------------------:::::....::::::::::......................................................................................:::::...............................................................................................................................................................................................:::---======++++++========================---::::........ ......................................................................................................................................................................................................................................................-#%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####################%#+----=#######***********************####*****##*************+++++++++++++=+=++==========+===================-----------------------====--=---------=====--------------. ......................................................................................................................................................................................................................................................................................::::-----------------------------------------------------------::::::::::::::::......:::::::::::................................................................................................. .....::::::..... ..............................................................................................................................................................::---========----------==============+++*****######################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######################################################################****+***####################################################################################################################################################################################################################################################################################################################################################################################################################################***********************************************************************************############################################################################################################################################**************************************************************************************************************************************************************************************************************************************************************############################################################################################################################################################################################################******************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++======================================================--------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--------==========================================================================================================================================--------::::::::::::::::::::::::::.................................
................................................................................................................................................................................................................:::-------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::..........................................................................................:::::::::::...... ..........................................................:::::-------::::....................................................................::::::------------------------------::::::....::::::::::.....................................................................................::::::................................................................................................................................................................................................:::---=====++++++++====================----::::........ ....................................................................................................................................................................................................................................................:#%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####################+-----=#######************************######*************#***+++++++++++++++==+==========+======================--------------------========---------===----------------:. ...................................................................................................................................................................................................................................................................................::::----------------------------------------------------------::::::::::::::::::....::::::::::::................................................................................................. .....::::::...... .............................................................................................................................................................:::---==========------=================++****#######################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###########################################################################********####################################################################################################################################################################################################################################################################################################################################################################################################################################***********************************************************************************############################################################################################################################################**************************************************************************************************************************************************************************************************************************************************************#############################################################################################################################################################################################################******************************************************************************************************************************+++++++++++++++++++++++++++++++++++++++=======================================================-------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---------=====+======================================================================================================================================--------:::::::::::::::::::::::::.................................
................................................................................................................................................................................................................:::-------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::..........................................................................................:::::::::::..... ...........................................................::::-------::::...................................................................:::::::------------------------------::::::....::::::::::....................................................................................:::::::................................................................................................................................................................................................::::--=====++++++++==================----::::........ ..............................................................................................................................................................................................................................................:---::+%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###################*------=#######***********************#########***************+++++++++++++++===+=================================--------------------=======--=-------=-------------------: . ..................................................................................................................................................................................................................................................................................::::----------------------------------------------------------::::::::::::::::::....::::::::::::................................................................................................. .....::::::..... ............................................................................................................................................................::::--==============================-===++****#######################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#############################################################################********####################################################################################################################################################################################################################################################################################################################################################################################################################################***********************************************************************************############################################################################################################################################**************************************************************************************************************************************************************************************************************************************************************#############################################################################################################################################################################################################******************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++======================================================-------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---------=====+++======================================================================================================================================-------:::::::::::::::::::::::::.................................
................................................................................................................................................................................................................::--------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::..........................................................................................::::::::::...... ...........................................................::::-------::::............................................................:::::::::::::::-----------------------------::::::...:::::::::::...................................................................................::::::::.................................................................................................................................................................................................:::---====++++++++=================----:::........ .........................................................................................................................................................................................................................................:-=+##%%%##%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##################=-----=#######*********************#############*************+++++++++++++++===+==================================------------------------=---=----------------------------:. ................................................................................................................................................................................................................................................................................::::----------------------------------------------------------::::::::::::::::::....::::::::::::................................................................................................. ....::::::..... ............................................................................................................................................................:::---=============================----==++**########################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#################################################################################*******####################################################################################################################################################################################################################################################################################################################################################################################################################################***********************************************************************************#############################################################################################################################################************************************************************************************************************************************************************************************************************************************************************##############################################################################################################################################################################################################*******************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++======================================================-------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---==========+++++=======================================================================================================================================-------::::::::::::::::::::::::.................................
...............................................................................................................................................................................................................:::--------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.........................................................................................:::::::::::...... .............................................................::::------:::::..........................................................::::::::::::::::-----------------------------::::::..:::::::::::...................................................................................:::::::::.................................................................................................................................................................................................:::---====++++++++===============----::::........ .........................................................................................................................................................................................................................................-+*#%%%%@@@@@@@@@@%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#############%#%#+-----*#######*********************##############***********++++++++++++++++=======================================----------------------------------------------------------: ...............................................................................................................................................................................................................................................................................::::-----------------------------------------------------------:::::::::::::::::....::::::::::::................................................................................................. ....::::::..... ............................................................................................................................................................:::---=============================----==++**########################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##%####################################################################################*****#####################################################################################################################################################################################################################################################################################################################################################################################################################################************************************************************************************############################################################################################################################################************************************************************************************************************************************************************************************************************************************************************###############################################################################################################################################################################################################*******************************************************************************************************************************+++++++++++++++++++++++++++++++++++++++======================================================-------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---========++++++++=========================================================================================================================================-----::::::::::::::::::::::::.................................
...............................................................................................................................................................................................................::::-------:::::::::::::.::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.........................................................................................:::::::::::...... .............................................................:::::------::::.........................................................:::::::::::::::::-----------------------------:::::::.:::::::::::..................................................................................::::::::::................................................................................................................................................................................................::::---====+++++++===============----:::........ .....................................................................................................................................................................................................................:..................==+%%%%%%%@%@@@%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###############%#****########********************###*****######************++++++++++++++++==========================================--------------------------------------------------------:. ..............................................................................................................................................................................................................................................................................::::-----------------------------------------------------------:::::::::::::::::....::::::::::::................................................................................................ ....::::::..... ...........................................................................................................................................................:::---==============================-----=++**########################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##############################################################################################****#####################################################################################################################################################################################################################################################################################################################################################################################################################################**********************************************************************+*************############################################################################################################################################************************************************************************************************************************************************************************************************************************************************************###############################################################################################################################################################################################################********************************************************************************************************************************++++++++++++++++++++++++++++++++++++++=======================================================-------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--==+++++++++++++++==========================================================================================================================================----::::::::::::::::::::::::.................................
................................................................................................................................................................................................................:::-------:::::::::::.......:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.........................................................................................::::::::::::..... ..............................................................:::::-----:::::.......................................................:::::::::::::::::------------------------------::::::::::::::::::::.................................................................................::::::::::...............................................................................................................................................................................................::::---=====+++++++==============---::::........ ......................................................................................................................................................................................................................:.................*#+#%%%%%%%%%%%%%%%%@%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####################*###**********************************************++++++++++++++++===========================================---------------------------------------------------------. ............................................................................................................................................................................................................................................................................::::-----------------------------------------------------------:::::::::::::::::....::::::::::::................................................................................................ ....::::::..... ...........................................................................................................................................................:::---==============================-----=++**########################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#########################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################*********************************************************************+++************############################################################################################################################################*************************************************************************************************************************************************************************************************************************************************************##############################################################################################################################################################################################################********************************************************************************************************************************+++++++++++++++++++++++++++++++++++++++=======================================================-------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--=+++++++++++++++===========================================================================================================================================-----:::::::::::::::::::::::.................................
................................................................................................................................................................................................................::::---::::::::::::..........:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.........................................................................................:::::::::::::..... ..............................................................::::::----:::::.......................................................:::::::::::::::::------------------------------::::::::::::::::::::................................................................................:::::::::::..............................................................................................................................................................................................::::---=====++++++++=============---::::........ ......................................................................................................................................................................................................................:................+@%#%%%%%%%%%%%%%%%%@%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####################**********************************************++++++++++++++++============================================---------------------------------------------------------: ...........................................................................................................................................................................................................................................................................::::-----------------------------------------------------------:::::::::::::::::....::::::::::::................................................................................................ .....::::...... ..........................................................................................................................................................:::----==============================-----==+**#########################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%################################################################################################################################################################################################################################################################################################################################################################################################################************###########################################################################################################################********************************************************************++++************############################################################################################################################################**************************************************************************************************************************************************************************************************************************************************************#############################################################################################################################################################################################################*********************************************************************************************************************************+++++++++++++++++++++++++++++++++++++++======================================================-------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-==+++**++++++++++===========================================================================================================================================-----:::::::::::::::::::::::.................................
................................................................................................................................................................................................................:::::::::::::::::...............::::::::..::.......:.......................................:::::::::::::::::::::........................................................................................::::::::::::::..... ...............................................................::::::--::::::.......................................................::::::::::::::::-------------------------------::::::::::::::::::::................................................................................::::::::::.............................................................................................................................................................................................:::::---====++++++++++============---::::....... .......................................................................................................................................................................................................................................-%%%%%%%%%%%%%%%%%%%@@%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%############*########**********************************************++++++++++++++++===+=========================================----------------------------------------------------------. ..........................................................................................................................................................................................................................................................................::::-----------------------------------------------------------:::::::::::::::::....::::::::::::................................................................................................ .....::::...... ..........................................................................................................................................................:::---==============================------==+***########################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####################################################################################################################################################################################################################################################################################################################################################################################################################****************###########################################################################################################################*******************************************************************++++++************###########################################################################################################################################**************************************************************************************************************************************************************************************************************************************************************##############################################################################################################################################################################################################********************************************************************************************************************************+++++++++++++++++++++++++++++++++++++++=======================================================------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--==+++****+++++++=============================================================================================================================================----:::::::::::::::::::::::.................................
.................................................................................................................................................................................................................:::::::::::::...............................................................................:::::::::::::::::::........................................................................................::::::::::::::..... ................................................................::::::::::::::.......................................................:::::::------:-------------------------------:::::::::::::::::::::...............................................................................:::::::::::...........................................................................................................................................................................................:::::---=====+++++++++++===========---:::........ ........................................................................................................................................................................................................................................#%%%%%%%%%%%%%%%%%%@@%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###################**********************************************++++++++++++++++================================================--------------------------------------------------------: . ........................................................................................................................................................................................................................................................................::::-----------------------------------------------------------:::::::::::::::::....::::::::::::.............................................................................................. .....:::....... ...........................................................................................................................................................:::---==============================-------=++***######################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#############################################################################################################################################################################################################################################################################################################################################################################################################*****#********************##########################################################################################################################*******************************************************************++++++************############################################################################################################################################*************************************************************************************************************************************************************************************************************************************************************#############################################################################################################################################################################################################**********************************************************************************************************************************+++++++++++++++++++++++++++++++++++++++======================================================------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--==++*****+++++++=============================================================================================================================================----::::::::::::::::::::::..................................
...............................................................................:...................................................................................................................................::::::::....................................................................................::::::::::::::::.........................................................................................::::::::::::::..... .................................................................:::::::::::::.......................................................:::::::--------------------------------------:::::::::::::::::::::..............................................................................::::::::::::..........................................................................................................................................................................................::::----====+++++++++++++===========--:::....... ........................................................................................................................................................................................................................................+%%%%%%%%%%%%%%%%%%@@@%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%################**********************************************++++++++++++++++================================================---------------------------------------------------------: .......................................................................................................................................................................................................................................................................::::-----------------------------------------------------------:::::::::::::::::....::::::::::::.............................................................................................. ......::....... ..........................................................................................................................................................:::----==============================-------=++***######################################################*****###########################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#############################################################################################################################################################################################################################################################################################################################################################################################################****************************###########################################################################################################################******************************************************************++++++************############################################################################################################################################**************************************************************************************************************************************************************************************************************************************************************############################################################################################################################################################################################################**********************************************************************************************************************************+++++++++++++++++++++++++++++++++++++++======================================================-------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--==++*****++++++==============================================================================================================================================----::::::::::::::::::::::..................................
...............................................................................:................................................................................................................................................................................................................................::::::::::::::..........................................................................................::::::::::::::..... ...................................................................:::::::::::::.......................................................:::::::------------------------------------::::::::::::::::::::::..............................................................................:::::--:::::.............................................................:...........................................................................................................................::::---====+++++++++++++============--:::........ .......................................................................................................................................................................................................................................:+%%%%*#%%%%%%%%%%%%@@%%%%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###############**********************************************++++++===++++++===================================================---------------------------------------------------------. .....................................................................................................................................................................................................................................................................::::-----------------------------------------------------------:::::::::::::::::....::::::::::::.............................................................................................. .......:....... ..........................................................................................................................................................:::---===============================-------=++*****##############################################**************########################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#############################################################################################################################################################################################################################################################################################################################################################################################################******************************###########################################################################################################################******************************************************************++++++************############################################################################################################################################**************************************************************************************************************************************************************************************************************************************************************##################################################################################################################################################################################*########################***********************************************************************************************************************************+++++++++++++++++++++++++++++++++++++++=======================================================------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--==++*****++++++==============================================================================================================================================----::::::::::::::::::::::..................................
.................................................................................:...............................................................................................................................................................................................................................::::::::::::..........................................................................................:::::::::::::::..... ....................................................................:::::::::::.........................................................:::::::-----------------------------------::::::::::::::::::::::..............................................................................::::---:::::............................................................::.........................................................................................................................::::---====++++++++++++++============---::....... ......................................................................................................................................................................................................................................=%%%%%*+%%%%%%%%%%%%%@%%%%@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###############*******************************************++=++==============+==================================================-------------------------------------------------------. ....................................................................................................................................................................................................................................................................::::-----------------------------------------------------------:::::::::::::::::....:::::::::::.............................................................................................. .............. ..........................................................................................................................................................:::---===============================------==++********#######################################********************######################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%############################################################################################################################################################################################################################################################################################################################################################################################################*******************************###########################################################################################################################******************************************************************+++++++***********############################################################################################################################################****************************************************************************************************************************************************************######****************************************************************************************###############################################################################################################################################################################*****#######################************************************************************************************************************************************+++++++++++++++++++++++++++++++++++++++======================================================------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--==++*****++++++==============================================================================================================================================----::::::::::::::::::::::..................................
.................................................................................::...............................................................................................................................................................................................................................:::::::::...........................................................................................::::::::::::::::..... .......................................................................::::::::...........................................................::::::::--------------------------------:::::::::::::::::::::::.............................................................................:::::----::::............................................................::........................................................................................................................::::---===+++++++++++++++=============--:::...... ......................................................................................................................................................................................................................................+%%%%%%*#%%%%%%%%%%%@@%%%@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######%%######******************************************++=================+====================================================------------------------------------------------------. ...................................................................................................................................................................................................................................................................::::-----------------------------------------------------------:::::::::::::::::....::::::::::.............................................................................................. .............. ..........................................................................................................................................................:::---===============================------==++************#################################**********************#####################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###########################################################################################################################################################################################################################################################################################################################################################################################################*********************************##########################################################################################################################******************************************************************+++++++***********############################################################################################################################################*************************************************************************************************************************************************************###########**************************************************************************************##############################################################################################################################################################################******######################*************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++=====================================================-------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--==+++***++++++===============================================================================================================================================-----:::::::::::::::::::::..................................
..................................................................................::.................................................................................................................................................................................................................................:::.............................................................................................:::::::::::::::::..... ...........................................................................................................................................::::::::------------------------------::::::::::::::::::::::::............................................................................:::::-----::::............................................................::......................................................................................................................::::---====+++++++++++++++=============---::...... .....................................................................................................................................................................................................::..............................=%%%%%%%%%%%%%%%%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####%%#########****************************************++======================+++==============================================------------------------------------------------------: ..................................................................................................................................................................................................................................................................::::-----------------------------------------------------------::::::::::::::::.....::::::::::.............................................................................................. .............. ..........................................................................................................................................................::---================================------==+***************#############################*************************###################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#############################################################################################################################################################################################################################################################################################################################################################################################################*********************************##########################################################################################################################******************************************************************++++++++*********#############################################################################################################################################*********************************************************************************************************************************************************###############**************************************************************************************############################################################################################################################################################################*********####################***************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++=====================================================-------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--==+++**+++++++===============================================================================================================================================-----:::::::::::::::::::::..................................
...................................................................................:::..............................................................................................................................................................................................................................................................................................................................::::::::::::::::::..... ..............................................................................................................................................::::::::---------------------------::::::::::::::::::::::::.............................................................................::::------::::............................................................::......................................:::............................................................................::::---===++++++++++++++++==============--:::..... ......................................................................................................................................................................................................==............................:=#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#############*************************************++========================+===============================================------------------------------------------------------: ................................................................................................................................................................................................................................................................::::-----------------------------------------------------------::::::::::::::::....:::::::::::.............................................................................................. ............ ..........................................................................................................................................................::---================================------=++*****************###########################*************************###################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%################################################################################################################################################################################################################################################################################################################################################################################################################*********************************##########################################################################################################################******************************************************************++++++++*********##############################################################################################################################################*****************************************************************************************************************************************************##################***************************************************************************************##########################################################################################################################################################################**********###################****************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++=====================================================-------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--==++++++++++++================================================================================================================================================-----:::::::::::::::::::::..................................
....................................................................................:::.............................................................................................................................................................................................................................................................................................................................::::::::::::::::::..... ...............................................................................................................................................:::::::::------------------------:::::::::::::::::::::::::.............................................................................::::------::::............................................................::.....................................::::...........................................................................::::---===++++++++++++++++===============--::..... ...............................................................................................................................................................................:-==-:.................--...........................:=#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##############************************************+==========================================================================------------------------------------------------------: ...............................................................................................................................................................................................................................................................::::-----------------------------------------------------------::::::::::::::::....:::::::::::............................................................................................. ............ ..........................................................................................................................................................::---================================-----==+++*****************##########################**************************#################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#################################################################################################################################################################################################################################################################################################################################################################################################################*********************************##########################################################################################################################*****************************************************************+++++++++********###############################################################################################################################################*************************************************************************************************************************************************#######################**************************************************************************************#########################################################################################################################################################################***********##################*****************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++=====================================================--------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---==+++++++++++=================================================================================================================================================-----:::::::::::::::::::::..................................
.....................................................................................:::..........................................................................................................................................................................................................................................................................................................................::::::::::::::::::::..... .................................................................................................................................................::::::::::---------------------::::::::::::::::::::::::::............................................................................:::::-----:::::...........................................................:::....................................:::::.........................................................................::::---===++++++++++++++++======---=======---::..... ...............................................................................................................................................................................=#%%%%#+:...........................................:=+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#############*********************************++===========================================================================------------------------------------------------------: ..............................................................................................................................................................................................................................................................::::-----------------------------------------------------------:::::::::::::::::....::.:::::::........................................................................................... ............ .. ...........................................................................................................................................................::---================================-----==+++******************#########################*************************###################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##################################################################################################################################################################################################################################################################################################################################################################################################################********************************###########################################################################################################################*****************************************************************+++++++++*******################################################################################################################################################********************************************************************************************************************************************############################***************************************************************************************##########################################################################################################################################################################*********#################********************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++=======================================================------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::----==+++++++++++=================================================================================================================================================-----::::::::::::::::::::::.................................
.....................................................................................:::::.......................................................................................................................................................................................................................................................................................................................:::::::::::::::::::::..... ...................................................................................................................................................:::::::::::----------------::::::::::::::::::::::::::::............................................................................::::------:::::...........................................................:::....................................:::::........................................................................::::---===++++++++++++++++====------=======---::..... .............................................................................................................................................................................:*%@@@@@@@%*=-.........................................-*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##############********************************++==========================++++++==+=++=====================================-------------------------------------------------------: ..............................................................................................................................................................................................................................................................::::-----------------------------------------------------------:::::::::::::::::....::::::::::.......................................................................................... ........... . ...........................................................................................................................................................::---================================------==++******************##########################************************###################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####################################################################################################################################################################################################################################################################################################################################################################################################################********************************###########################################################################################################################*****************************************************************+++++++++******#################################################################################################################################################****************************************************************************************************************************************################################***************************************************************************************####################################################################################################################################################################*****************########***************************************************************************************************************************************************+++++++++++++++++++++++++++++++++++++++======================================================------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---===+++++++++++=================================================================================================================================================-----::::::::::::::::::::::.................................
......................................................................................:::::....................................................................................................................................................................................................................................................................................................................:::::::::::::::::::::::..... ......................................................................................................................................................::::::::::::::---------:::::::::....:::::::::::::::::...........................................................................:::::------::::...........................................................::::...................................::::::.......................................................................::::---===++++++++++++++++====-------=======---::.... .............................................................................................................................................................................=@@@@@%%%@@@@%*+-:.....................................-#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#%%############******************************++=================================+=+++++++=================================--------------------------------------------------------: .............................................................................................................................................................................................................................................................::::-----------------------------------------------------------:::::::::::::::::....::::::::::.......................................................................................... ........... ..........................................................................................................................................................::---================================------==+++*****************##########################************************####################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%#######################################################################################################################################################################################################################################################################################################################################################################################################################********************************###########################################################################################################################*****************************************************************+++++++++*****##################################################################################################################################################*************************************************************************************************************************************###################################***************************************************************************************################################################################################################################################################################********************************************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++=====================================================------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---==+++++++++++==================================================================================================================================================-----::::::::::::::::::::::.................................
.......................................................................................::::::.................................................................................................................................................................................................................................................................................................................::::::::::::::::::::::::..... ...........................................................................................................................................................::::::::::::::--:--::::::::::.....:::::::::::::::::...........................................................................:::::------::::..........................................................:::::......................::::.........::::::.....................................................................::::---===+++++++++++++++++===---------========--::.... .............................................................................................................................................................................:#@%%%%%%%%%%@@@@%#=-...................................+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#############****************************+============================+====++=+=++====================================---------------------------------------------------------: ...........................................................................................................................................................................................................................................................::::-----------------------------------------------------------:::::::::::::::::....:::::::::.......................................................................................... ........... ..........................................................................................................................................................::---=================================-----===++++**************############################***********************####################################################################################################%%%%%%%%%%%%%%%%%%%#############################################################################################################################################################################################################################################################################################################################################################################################################################********************************###########################################################################################################################*****************************************************************+++++++++*****###################################################################################################################################################*********************************************************************************************************************************######################################***************************************************************************************###########################################################################################################################################################**************************************************************************************************************************************************************************************+++++++++++++++++++++++++++++++++++++++======================================================------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---==+++++++++++==================================================================================================================================================-----::::::::::::::::::::::.................................
........................................................................................::::::................................................................................................................................................................................................................................................................................................................::::::::::::::::::::::::..... ..............................................................................................................................................................:::::::::::::::::::::::::.......::::::::::::::::::..........................................................................::::-------::::..........................................................::::......................::::::.......:::::::....................................................................::::---===++++++++++++++++===----::::---========--::.... .............................................................................................................................................................................-%@@%%%%%%%%%%%@@@@@%*-:................................#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#############************************++=+=========================+===+==========================================------------------------------------------------------------: ..........................................................................................................................................................................................................................................................::::-----------------------------------------------------------:::::::::::::::::....::::::::........................................................................................... ........... ..........................................................................................................................................................::---=================================-----====++++*************############################************************####################################################################################################%%%%%%%%%%%%%%#################################################################################################################################################################################################################################################################################################################################################################################################################################********************************###########################################################################################################################*****************************************************************++++++++++****###################################################################################################################################################******************************************************************************************************************************#########################################***************************************************************************************########################################################################################################################################################******************************************************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++======================================================-------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---==++++++++++===================================================================================================================================================-----::::::::::::::::::::::.................................
........................................................................................:::::::...............................................................................................................................................................................................................................................................................................................::::::::::::::::::::::::..... .................................................................................................................................................................:::::::::::::::::::::........::::::::::::::::::.........................................................................:::::-------::::.........................................................:::::....................::::::::......::::::::...................................................................::::--====++++++++++++++++===---::::::---========--::.... .............................................................................................................................................................................-@@%%%@%%%%%%%%%%%@@@@%#+=:............................=%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%############***********************++=+================================+===-=-================================--------------------------------------------------------------: ........................................................................................................................................................................................................................................................::::-----------------------------------------------------------:::::::::::::::::....::::::::........................................................................................... ........... ...........................................................................................................................................................::---==================================----=====++++************#############################***********************########################################################################################################%%%%%#%####################################################################################################################################################################################################################################################################################################################################################################################################################################********************************###########################################################################################################################*****************************************************************++++++++++****###################################################################################################################################################**********************************************************************************************************************#################################################***************************************************************************************###################################################################################################################################################***********************************************************************************************************************************************************************************************+++++++++++++++++++++++++++++++++++++++======================================================------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---==+++++++++====================================================================================================================================================-----::::::::::::::::::::::.................................
.........................................................................................:::::::.............................................................................................................................................................................................................................................................................................................:::::::::::::::::::::::::..........................................................................................................................................................................:::::::::::::::::........:::::::::::::::::::.........................................................................:::::------:::::.........................................................:::::...................:::::::::.....:::::::::..................................................................:::---===++++++++++++++++===---:::::::::--========--::.... .............................................................................................................................................................................-%@%%%%%%%%%%%%%%%%%@@@@@@#=........................::+%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%################**********************+++===========================++======-----============================------------------------------------------------------------------: ........................................................................................................................................................................................................................................................::::-----------------------------------------------------------:::::::::::::::::....::::::::......................................................................................... .. .......... ...........................................................................................................................................................::---====================================--======++++***********#############################***********************###################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################********************************###########################################################################################################################*****************************************************************++++++++++****###################################################################################################################################################**********************************************************************************************************############################################################****************************************************************************************#################################################################################################################################################*************************************************************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++=====================================================------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::----==++++++++====================================================================================================================================================-----::::::::::::::::::::::.................................
..........................................................................................::::::::..........................................................................................................................................................................................................................................................................................................::::::::::::::::::::::::::............................................................................................................................................................................:::::::::::::..........:::::::::::::::::::.........................................................................:::::------:::::........................................................::::::..................::::::::::.....:::::::::.................................................................:::---===+++++++++++++++====---::::..::::--========--::.... ..............................................................................................................................................................................:%@%%%%%%%%%%%%%%%%%%%@@@@@%*:...................-+*#%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%#################*********************+++=============================+==-==----------=======-------------=---------------------------------------------------------------------. .......................................................................................................................................................................................................................................................::::-----------------------------------------------------------:::::::::::::::::....::::::::............................................................................................ ......... ...........................................................................................................................................................::---=============================================++++**********##############################**********************###################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################********************************###########################################################################################################################*****************************************************************++++++++++*****###################################################################################################################################################**************************************************************************************************###################################################################****************************************************************************************################################################################################################################################################***************************************************************************************************************************************************************************************************+++++++++++++++++++++++++++++++++++++++======================================================------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---==+++++++=====================================================================================================================================================-----::::::::::::::::::::::.................................
...........................................................................................::::::::........................................................................................................................................................................................................................................................................................................:::::::::::::::::::::::::::...............................................................................................................................................................................:::::::.............:::::::::::::::::::........................................................................::::::-------::::........................................................::::::..................:::::::::.....::::::::::................................................................:::---===++++++++++++++====---::::....::::--========--::.... ..............................................................................................................................................................................:%@%%%%%%%%%%%%%%%%%%%%%@@@@@%*+++********:.....-#%%%%%%%%%%%%%@@@@@@@@@@@@@@@%%@@@@@@%%%%%%%%%%%%%@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%################********************++++++===========================+=-==--------------=--------------------------------------------------------------------------------------. ......................................................................................................................................................................................................................................................::::-----------------------------------------------------------:::::::::::::::::.......::::::........................................................................................... ......... ..........................................................................................................................................................::---==============================================++++*********##############################**********************####################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################********************************##########################################################################################################################*****************************************************************+++++++++++****###################################################################################################################################################**********************************************************************************************#######################################################################****************************************************************************************########################################################################################################################################***********************************************************************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++======================================================-----------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---==+++++++=====================================================================================================================================================-----:::::::::::::::::::::..................................
............................................................................................::::::::.......................................................................................................................................................................................................................................................................................................:::::::::::::::::::::::::::...................................................................................................................................................................................................:::::::::::::::::::........................................................................:::::-------:::::.......................................................:::::::.................::::::::::....:::::::::::...............................................................:::---===+++++++++++++====----::::......:::--=========-::.... ................................................................................................................................................................................%@%%%%%%%%%%%%%%%%%%%%%%@@@@@@@%%#######%*:...-#%%%%%%%%%%%@@@@@@@@@%%%%%%%%%%%@@@%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##################*******************++++++++========================+=====-----------------------------------------------------------------------------------------------------. .....................................................................................................................................................................................................................................................::::-----------------------------------------------------------:::::::::::::::::........::::............................................................................................ ......... ..........................................................................................................................................................::---===============================================++++********##############################**********************####################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################********************************##########################################################################################################################*****************************************************************+++++++++++****###################################################################################################################################################********************************************************************************************#########################################################################****************************************************************************************####################################################################################################################################****************************************************************************************************************************************************************************************************************+++++++++++++++++++++++++++++++++++++++======================================================-----------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--===+++++======================================================================================================================================================-----:::::::::::::::::::::..................................
.............................................................................................::::::::.....................................................................................................................................................................................................................................................................................................::::::::::::::::::::::::::::...................................................................................................................................................................................................:::::::::::::::::::........................................................................:::::-------::::::......................................................:::::::................:::::::::::...:::::::::::...............................................................:::---===+++++++++++=====----::::........:::-==========--:.... ................................................................................................................................................................................%@%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@%%#######%#***%%%%%%%%%%%@@@%%%%%%%%%%%%%%%%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#%%%%%%%%###################*******************++++++++++=====================++=++==--------------=-------------------------------------------------------------------------------------: ....................................................................................................................................................................................................................................................::::------------------------------------------------------------::::::::::::::::........::::............................................................................................ .... .. ..........................................................................................................................................................::---================================================++++********##############################**********************###################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################********************************##########################################################################################################################*****************************************************************+++++++++++****###################################################################################################################################################******************************************************************************************###########################################################################****************************************************************************************##############################################################################################################################***********************************************************************************************************************************************************************************************************************+++++++++++++++++++++++++++++++++++++++=====================================================------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---==+++++======================================================================================================================================================-----:::::::::::::::::::::..................................
..............................................................................................::::::::...................................................................................................................................................................................................................................................................................................:::::::::::::::::::::::::::::...................................................................................................................................................................................................:::::::::::::::::::.......................................................................::::::--------:::::......................................................:::::::................::::::::::....:::::::::::...............................................................:::--=====+++++++======----::::..........::--==========--:.... ................................................................................................................................................................................:@%*@%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@%#######%@%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%@@@%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######################******************++++++++++====================++=---==--------------=-------------------------------------------------------------------------------------: ...................................................................................................................................................................................................................................................::::------------------------------------------------------------::::::::::::::::........................................................................................................ . ..........................................................................................................................................................::---=================================================++++*******##############################**********************###################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################********************************##########################################################################################################################*****************************************************************+++++++++++*****##################################################################################################################################################*****************************************************************************************############################################################################****************************************************************************************######################################################################################################################***********************************************************************************************************************************************************************###******************************************************+++++++++++++++++++++++++++++++++++++++=====================================================-------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---==+++++======================================================================================================================================================-----:::::::::::::::::::::..................................
................................................................................................:::::::.................................................................................................................................................................................................................................................................................................::::::::::::::::::::::::::::::...................................................................................................................................................................................................:::::::::::::::::::.......................................................................:::::---------:::::.....::..............................................::::::::...............:::::::::::...::::::::::::..............................................................::::--=====+++=======----:::::............::--==========--:.... .................................................................................................................................................................................:@%.*@%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@%%####%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########################*******************+++++++++++=================+++-:-==---------------=-------------------------------------------------------------------------------------: ..................................................................................................................................................................................................................................................::::------------------------------------------------------------::::::::::::::::......................................................................................................... ..........................................................................................................................................................::---==================================================++++******###############################*********************###################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################*********************************#########################################################################################################################*****************************************************************++++++++++++*****##################################################################################################################################################***************************************************************************************#############################################################################*****************************************************************************************##############################################################################################################****************************************************************************************************************************************************************************#############***********************************************+++++++++++++++++++++++++++++++++++++++====================================================--------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---==++++==================================================================================================================================-----================-----::::::::::::::::::::::.................................
.................................................................................................:::::::................................................................................................................................................................................................................................................................................................::::::::::::::::::::::::::::::...................................................................................................................................................................................................:::::::::::::::::::.......................................................................:::::---------:::::...::::::............................................::::::::...............::::::::::....::::::::::::..............................................................::::--===========------:::::..............::--==========--:.... ..................................................................................................................................................................................:@%.+@%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@%%##%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%@@@%%%%%%%%%%%%%%%%@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#%%%%%%##########################*******************+++++++++++===============+++=:--=----------------==------------------------------------------------------------------------------------. ..................................................................................................................::::..........................................................................................................................::::------------------------------------------------------------::::::::::::::::......................................................................................................... ...........................................................................................................................................................::---===================================================++++*****###############################*********************###################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################*********************************#########################################################################################################################*****************************************************************++++++++++++******#################################################################################################################################################**************************************************************************************##############################################################################*****************************************************************************************#########################################################################################################******************************************************************************************************************************************************************************###################*********************************************++++++++++++++++++++++++++++++++++++++====================================================--------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---==++++================================================================================================================================----------=============-----::::::::::::::::::::::.................................
..................................................................................................::::::::............................................................................................................................................................................................................................................................................................::::::::::::::::::::::::::::::::...................................................................................................................................................................................................:::::::::::::::::::.......................................................................:::::---------::::::::::::::::..........................................:::::::...............:::::::::::....::::::::::::..............................................................::::----=====-------::::::................::--==========--:... ...................................................................................................................................................................................:@@##@%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@%%%%%%%%%%%%%@@@%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#########################*******************+++++++++++==============+*=---==-----------------=------------------------------------------------------------------------------------. ..............................................................................................................:::::::::........................................................................................................................::::-----------------------------------------------------------:::::::::::::::::......................................................................................................... ...........................................................................................................................................................::---===================================================++++******###############################********************###################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################*********************************#########################################################################################################################*****************************************************************+++++++++++++******################################################################################################################################################**************************************************************************************##############################################################################*****************************************************************************************####################################################################################################***********************************************************************************************************************************************************************************###################*********************************************++++++++++++++++++++++++++++++++++++++====================================================--------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---==+++================================================================================================================================------------============-----::::::::::::::::::::::.................................
...................................................................................................::::::::..........................................................................................................................................................................................................................................................................................:::::::::::::::::::::::::::::::::...................................................................................................................................................................................................:::::::::::::::::::.......................................................................::::-:-------:::::::::::::::::.........................................::::::::..............:::::::::::.....::::::::::::...............................................................::::-----------::::::::..................::--==========-::... ....................................................................................................................................................................................#@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@%%%%%%%%%%%@@@@@%%%%%%%%%%%%%%@@@%%%%%%%%%%%%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%#########################*********************++++++++++============+*+-:-==-----------------==------------------------------------------------------------------------------------ ............................................................................................................::::::::::........................................................................................................................::::-----------------------------------------------------------:::::::::::::::::......................................................................................................... ...........................................................................................................................................................::---=====================================================+++*****###############################********************###################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################*********************************#########################################################################################################################*****************************************************************++++++++++++++******#########**#####################################################################################################################################*************************************************************************************##############################################################################*****************************************************************************************##############################################################################################**************************************************************************************************************************************************************************************#######################*********************************************++++++++++++++++++++++++++++++++++++++====================================================-------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---==+++================================================================================================================================-------------===========-----::::::::::::::::::::::.................................
.....................................................................................................::::::::.............................................................................................................................................................::..........................................................................................................................::::::::::::::::::::::::::::::::...................................................................................................................................................................................................::::::::::::::::::.......................................................................::::::--------::::::::::::::::::........................................::::::::..............::::::::::::...:::::::::::::................................................................::::::---::::::::::.....................::--=========--::... .....................................................................................................................................................................................=@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@%%%%%%@@%%%@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%%%%%%%%%##########################**********************++++++++==++========+*+---+=-------------------=-----------------------------------------------------------------------------------: ...........................................................................................................::::::::::::.......................................................................................................................::::------------------------------------------------------------::::::::::::::::......................................................................................................... ..........................................................................................................................................................::---=====================================================++++****################################*******************###################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################************###*******************########################################################################################################################****************************************************************+++++++++++++++++*****########***#################################################################################****##*####################################*#######************************************************************************************################################################################################****************************************************************************************##########################################################################################*******************************************************************************************************************************************************************************************######################**********************************************++++++++++++++++++++++++++++++++++++======================================================-------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---===++==============================================================================================================================---------------===========-----:::::::::::::::::::::::................................
......................................................................................................::::::::........................................................................................................................................................::::::::.....................................................................................................................:::::::::::::::::::::::::::::::::::...................................................................................................................................................................................................::::::::::::::::::.......................................................................::::::--------::::::::::::::::::.......................................::::::::..............::::::::::::....:::::::::::::................................................................:::::::::::::::.........................::--=========--:.... .....................................................................................................................................................................................:@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@%%%%%%%%%%@@@@@@@%%%%%%%%%%%%%%%%%%%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#%%%%#############################**********************+++++++++==+======+++--=+---------------------=-----------------------------------------------------------------------------------: ..........................................................................................................:::::::::::::......................................................................................................................::::------------------------------------------------------------::::::::::::::::.......................................................................................................... ..........................................................................................................................................................:::--======================================================+++*****###############################*******************###################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################************###*******************########################################################################################################################*****************************************************************+++++++++++++++++****#######****############################################################################************##################################****######************************************************************************************################################################################################****************************************************************************************#######################################################################################**********************************************************************************************************************************************************************************************######################**********************************************+++++++++++++++++++++++++++++++++++++=====================================================-------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---===++=============================================================================================================================-----------------==========-----:::::::::::::::::::::::................................
......................................................................................................::::::::::.....................................................................................................................................................::::::::::...................................................................................................................::::::::::::::::::::::::::::::::::::...................................................................................................................................................................................................::::::::::::::::::.......................................................................::::::--------:::::::::::::::::::......................................::::::::..............::::::::::::....:::::::::::::...................................................................:::::::..............................::--========--::... .......................................................................................................................................................................................*@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@%%%%%%%@@@@@@%%%%%%%%%%%%%%%%%@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##%###############################**********************+++++++++++=====+++--+=----------------------==----------------------------------------------------------------------------------. .........................................................................................................:::::::::::::......................................................................................................................::::------------------------------------------------------------::::::::::::::::........................................................................................................... ..........................................................................................................................................................:::--=======================================================+++****###############################*******************###################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################************####******************########################################################################################################################*****************************************************************++++++++++++++++++****######****#######################################################################******************#################################****######************************************************************************************################################################################################****************************************************************************************####################################################################################*************************************************************************************************************************************************************************************************#####################***********************************************+++++++++++++++++++++++++++++++++++++======================================================------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---==++=============================================================================================================================------------------==========-----:::::::::::::::::::::::................................
........................................................................................................:::::::::...................................................................................................................................................::::::::::...................................................................................................................:::::::::::::::::::::::::::::::::::::....................................................................................................................................................................................................:::::::::::::::::.......................................................................:::::::------::::::::::::::::::::......................................::::::::.............:::::::::::::...::::::::::::::........................................................................................................::--========--:.... ......................................................................................................................................................................................-@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@%%%%%%@@@@@%%%%%%%%%%%%%%%%%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#################################***********************+++++++++++==+++===------------------------==---------------==----------------------------------------------------------------- ........................................................................................................:::::::::::::......................................................................................................................::::------------------------------------------------------------::::::::::::::::............................................................................................................. ..........................................................................................................................................................:::--========================================================+++****###############################******************###################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################*************###******************########################################################################################################################*****************************************************************+++++++++++++++++++****####******###########################################################******************************################################****#######***********************************************************************************################################################################################****************************************************************************************################################################################################*****************************************************************************************************************************************************************************************************#####################***********************************************+++++++++++++++++++++++++++++++++++++======================================================--------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--====+=============================================================================================================================------------------==========-----:::::::::::::::::::::::................................
.........................................................................................................::::::::::.................................................................................................................................................::::::::::..................................................................................................................::::::::::::::::::::::::::::::::::::::....................................................................................................................................................................................................::::::::::::::::........................................................................:::::::::--:::::::::::::::::::::::....................................:::::::::.............:::::::::::::...::::::::::::::........................................................................................................::--=======--::.... ......................................................................................................................................................................................:%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@%%%@@@@%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###################################************************+++++++++=++++==--------------------------==------------=====----------------------------------------------------------------: ....................................................................................:::...............::::::::::::::......................................................................................................................::::-----------------------------------------------------------:::::::::::::::::.............................................................................................................. ..........................................................................................................................................................:::--=========================================================+++***################################*****************###################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################*************####*****************########################################################################################################################*****************************************************************+++++++++++++++++++*****###******########################################################*********************************################################*****######***********************************************************************************################################################################################****************************************************************************************##########################################################################***********************************************************************************************************************************************************************************************************####################*************************************************+++++++++++++++++++++++++++++++++++++======================================================-------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--====+=============================================================================================================================----------:::------=========-----:::::::::::::::::::::::................................
..........................................................................................................::::::::::.................................................................................................................................................::::::::..................................................................................................................:::::::::::::::::::::::::::::::::::::::.....................................................................................................................................................................................................::::::::::::::.........................................................................::::::::::::::::::::::::::::::::::....................................:::::::::.............::::::::::::....::::::::::::::........................................................................................................::--======--::.... .......................................................................................................................................................................................+@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%#%%%%%####################################*************************+++++++++***+----------------------------===--------==+=+=====--------------------------------------------------------------. .................................................................................:::::..............::::::::::::::......................................................................................................................::::----------------------------------------------------------::::::::::::::::::.............................................................................................................. ..........................................................................................................................................................:::--==========================================================+++***###############################*****************###################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################*************####*****************########################################################################################################################*****************************************************************++++++++++++++++++++*************#####################################################*************************************##############################******######***********************************************************************************################################################################################****************************************************************************************#####################################################################****************************************************************************************************************************************************************************************************************####################*************************************************+++++++++++++++++++++++++++++++++++++=======================================================-------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--==================================================================================================================================---------:::::------========-----:::::::::::::::::::::::................................
...........................................................................................................::::::::::.................................................................................................................................................:::::...................................................................................................................::::::::::::::::::::::::::::::::::::::::................................................................................................................. .....................................................................................:::::::::::..........................................................................:::::::::::::::::::::::::::::::::::...................................:::::::::............:::::::::::::....:::::::::::::.........................................................................................................::--======--::... .....................................................................................................................................................................................-@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@%%@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%###%#####################################**************************+++++++***=-----------====---------------=-------=++==++======------------------------------------------------------------- ...............................................................................:::::::.............::::::::::::::......................................................................................................................::::----------------------------------------------------------::::::::::::::::::................................................................................................................. ..........................................................................................................................................................:::--===========================================================+++***##############################*****************###################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################*************####*****************########################################################################################################################******************************************************************+++++++++++++++++++*************####################################################**************************************##############################******######***********************************************************************************################################################################################****************************************************************************************##################################################################*******************************************************************************************************************************************************************************************************************###################***************************************************++++++++++++++++++++++++++++++++++++========================================================------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--=================================================================================================================================----------::::::-----========-----:::::::::::::::::::::::................................
............................................................................................................::::::::::........................................................................................................................................................................................................................................................................::::::::::::::::::::::::::::::::::::::::........................................................................................................................................................................................................::::::::............................................................................:::::::::::::::::::::::::::::::::::...................................::::::::::...........:::::::::::::....:::::::::::::.........................................................................................................::--=====--::... ....................................................................................................................................................................................:%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%#######################################***************************++++****------===+********+=------------==---=++===============----------------------------------------------------------: ...............................................................................:::::::.............::::::::::::::......................................................................................................................::::----------------------------------------------------------::::::::::::::::::...................................................................................................................... ..........................................................................................................................................................:::--============================================================++***##############################*****************###################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################*************#####****************########################################################################################################################******************************************************************++++++++++++++++++++************####################################################**************************************###############################****#######***********************************************************************************################################################################################****************************************************************************************###############################################################**********************************************************************************************************************************************************************************************************************###################***************************************************++++++++++++++++++++++++++++++++++++========================================================------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--=================================================================================================================================----------::::::-----=======-----::::::::::::::::::::::::................................
.............................................................................................................:::::::::::.....................................................................................................................................................................................................................................................................:::::::::::::::::::::::::::::::::::::::::............................................................................................................................................................................................................................................................................................:::::::::::::::::::::::::::::::::::....................................::::::::............:::::::::::::....:::::::::::::.........................................................................................................::--====--::.... ....................................................................................................................................................................................+@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%##%%%#####################################***************************+++***+--==*****************+=-----:------==+========++========----------------------------------------------------------. .....................................................................:........:::::::::............:::::::::::::::.....................................................................................................................::::----------------------------------------------------------::::::::::::::::::.....................................................................................................::::...................... ...........................................................................................................................................................:::---============================================================++***#############################*****************###################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################**************####*****************#######################################################################################################################*******************************************************************+++++++++++++++++++*************###################################################***************************************##############################*****######***********************************************************************************################################################################################****************************************************************************************###########################################################****************************************************************************************************************************************************************************************************************************##################****************************************************+++++++++++++++++++++++++++++++++++++=====================================================------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--================================================================================================================================-----------:::::::----------------::::::::::::::::::::::::................................
..............................................................................................................:::::::::::...................................................................................................................................................................................................................................................................::::::::::::::::::::::::::::::::::::::::::............................................................................................................................................................................................................................................................................................:::::::::::::::::::::::::::::::::::.....................................::::::::..........::::::::::::::....:::::::::::::........................................................................................................:::--===--::.... ...................................................................................................................................................................................-@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@%%%%%%%%%%%%##########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%#%%######################################**************************++****++***********************+=-------===+=====================--------------------------------------------------------: ...................................................................:::.......:::::::::............:::::::::::::::.....................................................................................................................::::----------------------------------------------------------::::::::::::::::::...................................................................................................:::::::::..................... .. ... ...........................................................................................................................................................:::---=======================================================--====++**#############################*****************###################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################*************#####*****************#######################################################################################################################*******************************************************************+++++++++++++++++++*************###################################################***************************************###############################**########***********************************************************************************################################################################################****************************************************************************************#######################################################********************************************************************************************************************************************************************************************************************************##################****************************************************+++++++++++++++++++++++++++++++++++++=====================================================------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--================================================================================================================================-----------:::::::----------------::::::::::::::::::::::::................................
................................................................................................................:::::::::::................................................................................................................................................................................................................................................................:::::::::::::::::::::::::::::::::::::::::::............................................................................................................................................................................................................................................................................................::::::::::::::::::::....::::::::::......................................:::::::::.........::::::::::::::...::::::::::::::........................................................................................................:::--==---:.... ..........................................................................................................................................:-:.....................................%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@%%%%%%%%%%%%#############%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%##%%#%%########################################**************#*********++******************************++==----==+===+=======================----------------------------------------------------. ..................................................................::::.....::::::::::............:::::::::::::::.....................................................................................................................::::----------------------------------------------------------:::::::::::::::::...................................................................................................::::::::::::....................... ...........................................................................................................................................................:::---=======================================================---===++***#############################****************###################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################*************#####*****************#######################################################################################################################********************************************************************+++++++++++++++++***************###################################################**************************************#########################################***********************************************************************************###############################################################################*****************************************************************************************##############################################***************************************************************************************************************************************************************************************************************************************####################****************************************************+++++++++++++++++++++++++++++++++++++=====================================================------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--===============================================================================================================================-----------:::::::::--------------:::::::::::::::::::::::::................................
.................................................................................................................:::::::::::.............................................................................................................................................................................................................................................................:::::::::::::::::::::::::::::::::::::::::::::............................................................................................................................................................................................................................................................................................:::::::::::::::::::.......::::::.........................................::::::::........:::::::::::::::...::::::::::::::........................................................................................................:::------::.... .........................................................................................................................................=%*-:...................................+@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@%%%%%%%%%%%%%################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%%%%%#%%%%#########################################**********####*****************************************++++=========+=======----==-=======--------------------------------------------------------. .................................................................::::.....::::::::::............:::::::::::::::.....................................................................................................................::::----------------------------------------------------------::::::::::::::::...................................................................................................::::::::::::::::..................... . ............................................................................................................................................................:::---========================================================--====++**#############################****************###################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################*************#####*****************#######################################################################################################################*********************************************************************++++++++++++++++***************###################################################**************************************#########################################***********************************************************************************###############################################################################*****************************************************************************************###################################************************************************************************************************************************************************************************************************************************************************#######################***************************************************++++++++++++++++++++++++++++++++++++++=====================================================------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--================================================================================================================================----------:::::::::-------------::::::::::::::::::::::::::................................
..................................................................................................................:::::::::::...........................................................................................................................................................................................................................................................::::::::::::::::::::::::::::::::::::::::::::::................................................................................................................................................................................................. .......................................................................................::::::::::::::::::......................................................::::::::.......:::::::::::::::....::::::::::::::........................................................................................................:::-----::.... ........................................................................................................................................=%@@#=:.................................-@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@%%%%%%%%%%%%%############***###%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%%%%%%%%%###########################################*******#####*#***+=+*********************************+++++============----------====-----------------::-----------------------------------------: . ................................................................::::.....::::::::::............:::::::::::::::.....................................................................................................................::::----------------------------------------------------------::::::::::::::::...................................................................................................:::::::::::::::::::::...................... ..............................................................................................................................................................:::---=========================================================-====++***############################****************###################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################*************#####*****************#######################################################################################################################**********************************************************************+++++++++++++++***************###################################################**************************************#########################################***********************************************************************************##############################################################################******************************************************************************************#################################**************************************************************************************************************************************************************************************************************************************************#########################*************************************************++++++++++++++++++++++++++++++++++++++=====================================================------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--================================================================================================================================----------::::::::::------------:::::::::::::::::::::::::::...............................
....................................................................................................................::::::::::.........................................................................................................................................................................................................................................................:::::::::::::::::::::::::::::::::::::::::::::::................................................................................................................................................................................................. ....... ...........................................................................:::::::::::::::::.......................................................::::::::::..::::::::::::::::::....::::::::::::::........................................................................................................:::----::.... .......................................................................................................................................:+@@@@%*-:..............................:%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@%%%%%%%%%%%%%%%###########****######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%%%%%%%%###########################################******#####*#*+=--=##*******************************++*++=========--------------------------------------::::::----------------------------------: . ...............................................................::::....:::::::::::...........::::::::::::::::....................................................................................................................:::::----------------------------------------------------------::::::::::::::::...................................................................................................::::::::::::::::::::::::::................... ................................................................................................................................................................:::---==============================================================++***#############################***************###################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################*************#####*****************#######################################################################################################################**********************************************************************+++++++++++++++****************##################################################**************************************#########################################************************************************************************************############################################################################********************************************************************************************###########################*****************************************************************************************************************************************************************************************************************************************************###########################**************************************************++++++++++++++++++++++++++++++++++++++=====================================================-----------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--==============================================================================================================================-----------:::::::::::::--------:::::::::::::::::::::::::::::...............................
.....................................................................................................................::::::::::.......................................................................................................................................................................................................................................................:::::::::::::::::::::::::::::::::::::::::::::::::............................................................................................................................................................................................... . ..... ........................................................................::::::::::::::::.......................................................::::::::::::::::::::::::::::::....::::::::::::::........................................................................................................::::--:::.... ...............................................................................................................................:::::::.:+%@@@@@#+:.............................*@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%%%%%%%%%%%%%%%%%%%%########*****########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%%%%@%%%%%%%%%%#############################################***########*----=##*******************************++*++=======-------------------------------:::---------------------------------------------:-... ................................................................::...::::::::::::...........::::::::::::::::....................................................................................................................:::::----------------------------------------------------------::::::::::::::::........................::........................................................................:::::::::::::::::::::::::::::::............................................... ..................................................................................................................................:::---==============================================================+++***############################***************###################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################**************####******************######################################################################################################################***********************************************************************+++++++++++++*****************##################################################***************************************#########################################***********************************************************************************###########################################################################***********************************************************************************************###################********************************************************************************************************************************************************************************************************************************************************###############################***************************************************++++++++++++++++++++++++++++++++++++=====================================================------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--=============================================================================================================================------------:::::::::::::::---::::::::::::::::::::::::::::::::...............................
......................................................................................................................::::::::::.....................................................................................................................................................................................................................................................::::::::::::::::::::::::::::::::::::::::::::::::::............................................................................................................................................................................................... .. .......................................................................::::::::::::::........................................................:::::::::::::::::::::::::::::....:::::::::::::::........................................................................................................::::::::.... ...........................................................................................................................::--====++=--=*%@@@@@%#=:..........................-@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####************###%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%%%%%%%@%%%%%%%%##############################################*##########=---=##*******************************+*+++=======------------------------------------::::::::::::--:-------------------------------.. ....................................................................::::::::::::...........::::::::::::::::....................................................................................................................:::::----------------------------------------------------------::::::::::::::::........................:::.......................................................................::::::::::::::::::::::::::::::::::............................................ .................................................................................................................................:::---===============================================================++***############################***************###################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################**************####******************######################################################################################################################***********************************************************************+++++++++++++*****************##################################################***************************************#########################################***********************************************************************************##########################################################################*************************************************************************************************##########*###***********************************************************************************************************************************************************************************************************************************************************################################***************************************************++++++++++++++++++++++++++++++++++++=====================================================------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--=============================================================================================================================------------::::::::::::::::::::::::::::::::::::::::::::::::::...............................
.......................................................................................................................:::::::::::...................................................................................................................................................................................................................................................::::::::::::::::::::::::::::::::::::::::::::::::::................................................................................................................................................. ............................................. .. ..............................................................::::::::::::.........................................................::::::::::::::::::::::::::::::...:::::::::::::::........................................................................................................:::::::.... .......................................................................................................................:=*#####%%%%#+===+#%@@@@@@%#+-.......................:%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###*****************###%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#%%###%%%#################################################*--=*##********************************++++=======-------------------------------------:::::::::::::--:-----------------------------:.. ....................................................................::::::::::::...........:::::::::::::::::..................................................................................................................:::::-----------------------------------------------------------:::::::::::::::.......................:::::::.....................................................................::::::::::::::::::::::::::::::::::::::........................................ .................................................................................................................................:::---===============================================================+++***###########################***************####################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################*************####******************######################################################################################################################*************************************************************************+++++++++++*****************##################################################***************************************#########################################*****************************************++++*************************************#########################################################################************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************#####################################***************************************************++++++++++++++++++++++++++++++++++++=====================================================------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--============================================================================================================================------------:::::::::::::::::::::::::::::::::::::::::::::::::::...............................
........................................................................................................................:::::::::::................................................................................................................................................................................................................................................::::::::::::::::::::::::::::::::::::::::::::::::::::......................................................................................................................................... ............................................. ...............................................................::::::::::.........................................................:::::::::::::::::::::::::::::::...:::::::::::::::........................................................................................................:::::::.... ....................................................................................................................:-*#%%%%@%%%%%%%**##%%@@@@@@@@@@%#+-....................:%@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##*********************######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%#%%###%##%%%%################################################+=*###********************************++++========-------------------------------------::::::::::::::::-----------------------------.. ...................................................................::::::::::::...........::::::::--:::::::.............................................................................................:::::::::::::.......::::::-----------------------------------------------------------:::::::::::::::......................:::::::::....................................................................::::::::::::::::::::::::::::::::::::::::::.................................... .................................................................................................................................:::---===============================================================+++****###########################**************####################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################*************####******************######################################################################################################################**************************************************************************++++++++++*****************##################################################***************************************#########################################****************************************++++++************************************#######################################################################**************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************#####################################****************************************************+++++++++++++++++++++++++++++++++++=====================================================------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--=================================================================----=======================================================------------:::::::::::::::::::::::::::::::::::::::::::::::::::...............................
..........................................................................................................................::::::::::..............................................................................................................................................................................................................................................:::::::::::::::::::::::::::::::::::::::::::::::::::::...................................................................................................................................... ............................................ ................................................................:::.............................................................:::::::::::::::::::::::::::::::...:::::::::::::::........................................................................................................::::::.... ..........................................................................................................::-==****#%%@@%%%%%@%%%%%%%%@@@@@@@@@@@@@@@@%#+-.................=@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##**************************####%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#%%#####%%%%%%#############################################*+####*******************************+++++========-------------------------------------:::::::::::::::::----------------------------::. ..................................................................:::::::::::............:::::::----::::::........................................................................................:::::::::::::::::::::::::::::::-----------------------------------------------------------:::::::::::::::......................:::::::::....................................................................::::::::::::::::::::::::::::::::::::::::::::.................................. ................................................................................................................................:::---================================================================++****###########################**************####################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################**************###******************######################################################################################################################**************************************************************************++++++++++******************##################################################**************************************#########################################****************************************++++++************************************#####################################################################***************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************#####################################*****************************************************++++++++++++++++++++++++++++++++++++=====================================================-----------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--=====+==========================================================------=====================================================------------:::::::::::::::::::::::::::::::::::::::::::::::::::::..............................
...........................................................................................................................:::::::::.............................................................................................................................................................................................................................................::::::::::::::::::::::::::::::::::::::::::::::::::::::..................................................................................................................................... ........................................... ......................................................................................................................:::::::::::::----::::::::::::::..::::::::::::::::.........................................................................................................::::.... ......................................................................................................::-+*#%%%@@@@@@@%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@%#+-:............-%@@@@@@%%%%%%%%%%%%%%%%##%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#******************************###%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%%######%%%%%%##################################################**********++++****************++++++========--------------------------------------:::::::::::::::::----------------------------:: ................................................................::::::::::::............::::::-----::::::....................................................................................::::::::::::::::::::::::::::::::::------------------------------------------------------------:::::::::::::::.....................::::::::::....................................................................::::::::::::::::::::::::::::::::::::::::::::::................................ ................................................................................................................................:::---================================================================+++****##########################**************####################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################**************####*****************######################################################################################################################***************************************************************************+++++++++******************##################################################**************************************#########################################***************************************++++++++***********************************###################################################################****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************######################################******************************************************+++++++++++++++++++++++++++++++++++======================================================-----------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--====++=========================================================-------====================================================------------::::::::::::::::::::::::::::::::::::::::::::::::::::::..............................
............................................................................................................................::::::::::.........................................................................................................................................................................................................................................:::::::::::::::::::::::::::::::::::::::::::::::::::::::::................................................................................................................................... ........................................... .................................................................................................................::::::::::-------:::::::::::::...::::::::::::::::................................................................................................................. .................................................................................................:-=+*#%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%%%%@@@@@@@@@@@@%%#+-:......-*%%%%@@@@@%%%%%%%%%%%%%%%%###%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#*******************************###%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##%#####%%%%%%##############################################*##*********++++++***************++++++========--------------------------------------::::::::::::--::::---------------------------::. ...............................................................::::::::::::............::::::-----:::::::.................................................................................::::::::::::::::::::::::::::::::::::------------------------------------------------------------:::::::::::::::.....................::::::::::....................................................................::::::::::::::::::::::::::::::::::::::::::::::................................ ................................................................................................................................:::---================================================================+++****##########################**************####################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################**************####*****************######################################################################################################################***************************************************************************+++++++++******************##################################################**************************************#########################################***************************************++++++++++**********************************################################################################******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************######################################******************************************************++++++++++++++++++++++++++++++++++++=====================================================-----------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--====++==========================================================----====================================================-------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::..............................
.............................................................................................................................::::::::::.....................................................................................................................................................................................................................................::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.................................................................................................................................. ............................................ ........................................................................................................::::::-----------:::::::::::::...::::::::::::::::................................................................................................................. ..............................................................................................:-=+#%%%@%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%@@@@@@@@@@@@@%##**=-*%%%%%%@@@@@@%%%%%%%%%%%%%%%%%###%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#********************************###%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%%%%%%%###%###%%%%%%%############################################*###********++++++++**************++++++=========-------------------------------------::::::::::::--:::::---------------------------:: . ..............................................................:::::--:::::............:::::-------::::::...............................................................................::::::::::::::::::::::::::::::::::::::------------------------------------------------------------:::::::::::::::.....................:::::::::::...................................................................::::::::::::::::::::::::::::::::::::::::::::::.................................. ................................................................................................................................:::---================================================================++++****#########################***************###################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################*************######****************######################################################################################################################**************************************************************************++++++++++************+*****##################################################*************************************##########################################***************************************+++++++++++**********************************##############################################################******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************#######################################*******************************************************+++++++++++++++++++++++++++++++++++=====================================================-----------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--===++++=================================================================================================================------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::..............................
..............................................................................................................................:::::::::....................................................................................................................................................................................................................................:::::::::::::::::::::::::::::::::::::::::::::::::::----::::::................................................................................................................................ ............................................. .....................................................................................................::::-------------:::::::::::::..:::::::::::::::::................................................................................................................. ..........................................................................................:--=+#%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%%%%%@@@@@@@@@@@@@%%@%%%%@%%%%%@@@@@%%%%%%%%%%%%%%%%%%##%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#********************************####%%%%%%%%%%%#####%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########%%%%%%%###################################%##########********+++++++++************+++++++==========-------------------------------------:::::::::::::::::::--------------------------::. :. ............................................................:::::---:::::............:::::-------::::::..............................................................................::::::::::::::::::::::::::::::::::::::-------------------------------------------------------------:::::::::::::::.....................:::::::::::....................................................................:::::::::::::::::::::::::::::::::::::::::::::......................................................................................................................................................................:::---=================================================================+++****##########################**************###################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################*************######****************######################################################################################################################**************************************************************************++++++++++************++****##################################################************************************###########################################***************************************+++++++++++**********************************#############################################################******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************#######################################********************************************************++++++++++++++++++++++++++++++++++++=====================================================----------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--===+++++===========================================================================================================---------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::..............................
...............................................................................................................................:::::::::...................................................................................................................................................................................................................................:::::::::::::::::::::::::::::::::::::-----::::::::-----::::::................................................................................................................................ ............................................. ...................................................................................................::::-------------:::::::::::::..:::::::::::::::::................................................................................................................. ........................................................................................:-====+%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%%%%%%@@@@@@@@@@@%%%%%%%%%%%%%@@@@@@%%%%%%%%%%%%%%%%%%#%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#********************************###########%%%##*****###%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######%%%%%%%################*##################%%##%######********++++++++++***********+++++++==========-------------------------------------::::::::::::::::::::--------------------------::. .-. ............................................................:::::---:::::............:::::-------::::::..............................................................................::::::::::::::::::::::::::::::::::::::-------------------------------------------------------------:::::::::::::::.....................:::::::::::....................................................................:::::::::::::::::::::::::::::::::::::::::::::......................................................................................................................................................................:::---=================================================================++++***##########################**************###################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################*************######*****************#####################################################################################################################*************************************************************************+++++++++++***********+++****##################################################**********************************#############################################***************************************+++++++++++**********************************#############################################################******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************#######################################********************************************************+++++++++++++++++++++++++++++++++++++====================================================----------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--===+++++======================--------=============================================================================--------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::..............................
................................................................................................................................:::::::::.................................................................................................................................................................................................................................:::::::::::::::::::::::::::::::::::::--------------------:::::................................................................................................................................ ................................................ .................................................................................................::::--------------:::::::::::::..:::::::::::::::::.................................................................................................................. ......................................................................................-==++*#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@%%%%%%%%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#*************************+*+***##############**#*******##%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######%%%%@@%%%%%%%%%%#######%%%%%%%############*+++**################%%#%#######******++++++++++++**********++++++++=====+=-==------------------------------------:::::::::::::::::::::------------------------:::: :- ...........................................................:::::---:::::............::::::-----::::::::..............................................................................:::::::::::::::::::::::::::::::::::::------------------------------------------------------------:::::::::::::::......................:::::::::::.....................................................................::::::::::::::::::::::::::::::::::::::::::::......................................................................................................................................................................:::---=================================================================++++****#########################**************###################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################*************#######****************#####################################################################################################################**************************************************************************++++++++++**********++++*****#################################################********************************###############################################***************************************++++++++++++*********************************###########################################################******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************##########################################*********************************************************+++++++++++++++++++++++++++++++++++===================================================-----------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--===+++++=========--==------------------==============================================-=========================-----------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::..............................
.................................................................................................................................:::::::::..............................................................................................................................................................................................................................::::::::::::::::::::::::::::::::::::::---------------------:::::................................................................................................................................ ................................................ ............................................................................................::::--------------:::::::::::::..:::::::::::::::::.................................................................................................................. ....................................................................................:=++*##%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@%%%%%%%%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####************+++++++++++++**#############***#******+****###%%%%%%%%%%%%%%%%%%%%%%%%%#*******##%%@%%%%%%%@%%#######%%%%%%###########**++++++*##############%%%%%######******++++++++++++++********++++++++==========------------------------------------:::::::::::::::::::::--------------------------::. :: ..........................................................::::----::::.............::::::-----::::::::................................................................................:::::::::::::::::::::::::::::::::::------------------------------------------------------------:::::::::::::::......................:::::::::::.....................................................................::::::::::::::::::::::::::::::::::::::::::::......................................................................................................................................................................:::---==================================================================+++****#########################*************####################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################*************#######****************#####################################################################################################################**************************************************************************++++++++++**********++++*****#################################################**********************#########################################################***************************************++++++++++++**********************************##########################################################*******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************########################################**********************************************************+++++++++++++++++++++++++++++++++++====================================================----------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--===++++++========-----------------------==--============================================================----------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::..............................
..................................................................................................................................:::::::::............................................................................................................................................................................................................................::::::::::::::::::::::::::::::::::::::----------------------:::::............................................................................................................................. ................................................... .........................................................................................::::-------------:::::::::::::...:::::::::::::::::................................................................................................................... ..................................................................................:=+*#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@%%%%%%%%%%%@@@@@@%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######*+++**++++++++++++++++++**#############****+*##***********######%%%%%%%%%%%%%%%%%%%%%##******##%@%%%%%%%%%#######%%%%%%##########*++++*+++*#############%%%%%%#####******++++++++++++++********++++++++======+===------------------------------------::::::::::::::::::::::-------------------------::: -. ........................................................:::::---:::::.............:::::::----::::::::...................................................................................::::::::::::::::::::::::::::::::------------------------------------------------------------:::::::::::::::......................:::::::::::......................................................................:::::::::::::::::::::::::::::::::::::::::::......................................................................................................................................................................:::---==================================================================++++***#########################**************####################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################*************######****************#####################################################################################################################*************************************************************************+++++++++++**********+++++****##################################################*****************#############################################################***************************************+++++++++++++*********************************##########################################################*******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************######################################*************************************************************++++++++++++++++++++++++++++++++++====================================================-----------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---==++++++=======------------------------------=======================================------==-=---=------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::..............................
..................................................................................................................................::::::::::.......................................................................................................................................................................................................................::::::::::::::::::::::::::::::::::::::::::----------------------::::............................................................................................................................. ........................................................ ... .........................................................................................::::------------:::::::::::::....:::::::::::::::::.................................................................................................................... ................................................................................-+*#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@%%%%%%%%%@@@@@@@%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@%%%%%%%%%%%%#######*+++++++++++++++++++++****############***++*#*##*****+*******######%%%%%%%%%%%%%%%%%%#%###****#%@%%%%%%%%%#######%%%%%%%########**+*+++*++*#############%%%%%%####*******++++++++++++++*******++++++++======+=-==-----------------------------------:::::::::::::::::::::::--------------------------:. .: .......................................................:::::---:::::.............::::::::---::::::::.......................................................................................::::::::::::::::::::::::::::------------------------------------------------------------:::::::::::::::......................:::::::::::......................................................................:::::::::::::::::::::::::::::::::::::::::::......................................................................................................................................................................:::---==================================================================++++****########################******************################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################*************######****************#####################################################################################################################************************************************************************++++++++++++**********+++++****##################################################*************#################################################################***************************************+++++++++++++*********************************##########################################################**********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************##################################**************************************************************+++++++++++++++++++++++++++++++++++====================================================----------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---==++++++========-------------------------------==============================------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::..............................
...................................................................................................................................::::::::::....................................................................................................................................................................................................................:::::::::::::::::::::::::::::::::::::::::::-----------------------::::............................................................................................................................. ........................................................ ...... .......... ...................................................................................:::::-----------::::::::::::......:::::::::::::::::...................................................................................................................... ..............................................................................:+*#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@%%%%@@@@@@@%%%%%%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%@%@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%#########*++++++++++++++++++++**##*############**+++****##**++++++*******#####%%%%%%%%%%%%%##%%#%%%%##**#%@@%%%#%%%%#######%%%%%%#########**++*+++++*############%%%%%%%%##*******+++++++++++++++******++++++++=======+===-----------------------------------:::::::::::::::::::::::---------------------------: .. ......................................................::::----:::::.............:::::::::::::::::::............................................................................................:::::::::::::::::::::::------------------------------------------------------------::::::::::::::.......................:::::::::::......................................................................:::::::::::::::::::::::::::::::::::::::::::......................................................................................................................................................................:::---==================================================================++++****########################*********************#############################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################*************#######***************#####################################################################################################################***********************************************************************+++++++++++++**********+++++****##################################################**********####################################################################****************************************+++++++++++++********************************###########################################################*****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************##########################***************************************************************++++++++++++++++++++++++++++++++++++===================================================----------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--===++++++=======-------------------------------==============================-------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::..............................
....................................................................................................................................::::::::::..........................................................................................................................................................................................................:::::::::::::::::::::::::::::::::::::::::::::::::::------------------------::::............................................................................................................................ ........................................................ ........ ........................... ..................................................................................::::------------::::::::..........:::::::::::::::::........................................................................................................................ .............................................................................-*#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%@%%%%%%%%%%%%%@@@@@@@@@@%%%%%%%%%%%%%%%########################*+++++++++++++++++++*######*#*########*++=*#*******++++++++++*****######%%%%%%%%%%%%%#%%%%%%##***#%%%%%%%%%%%######%%%%%%#########**+++***+**############%%%%%%%%##******++++++++++++++++*****++++++++=======+===-----------------------------------::::::::::::::::::::::::---------------------------: .....................................................:::::----:::::.............:::::::::::::::::::................................................................................................:::::::::::::::::::------------------------------------------------------------::::::::::::::.......................:::::::::::......................................................................:::::::::::::::::::::::::::::::::::::::::::......................................................................................................................................................................:::---==================================================================++++****########################***********************###########################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################*************#######***************#####################################################################################################################**********************************************************************++++++++++++++*********++++++*****##################################################******#######################################################################****************************************+++++++++++++********************************############################################################************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************#################*****************************************************************+++++++++++++++++++++++++++++++++++===================================================----------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---===+++++=======---------------------------------====================-----===---------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::..............................
.....................................................................................................................................:::::::::................................................................................................................................................................................................:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--------------------------::::......................................................................................................................... .................................................... ............ ................................... .. ................................................................................:::::-----------:::::::............:::::::::::::::::......................................................................................................................... ..........................................................................:=##%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%####%#################+++++++++++++++++++*########**##***#***+=+*#*******+++++++++++++*****#######%%##%%%%%%##%%###%##****##%%%%%%%%%##***#%%%%%##########**+*+++**############%%%%%%%%##******+++++++++++++++++****++++++++===========-----------------------------------:::::::::::::::::::::::::--------------------------:. ....................................................:::::---:::::::::.........:::::::::::::::::::.....................................................................................................:::::::::::::::------------------------------------------------------------::::::::::::::.......................:::::::::::......................................................................:::::::::::::::::::::::::::::::::::::::::::......................................................................................................................................................................:::---===================================================================++++***#######################**************************#########################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################*************#######***************#####################################################################################################################*********************************************************************+++++++++++++++*********++++++*****##################################################***##########################################################################****************************************++++++++++++++********************************###########################################################*************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************##############*******************************************************************+++++++++++++++++++++++++++++++++++===================================================-----------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---====++++=======----------------------------------===============----------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::..............................
......................................................................................................................................:::::::::............................................................................................................................................................................................:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---------------------------:::.......................................................................................................................... ................................................ ....................................................................... ................................................................................:::::----------:::::::..............:::::::::::::::........................................................................................................................... .........................................................................-+##%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########**********+++++++++++++++++*#########**##*******+=++##********++++++++++++++******############%#%##%########**+**##%%%%%%%##*++*#%%%############*++*++*############%%%%%%%%####****++++++++++++=++++*****+++++++========+==------:----------------------------::::::::::::::::::::::::::--------------------------: ....................................................::::----:::::::::::::::..::::::::::::::::::::.......................................:::::::::...........................................................:::::::::------------------------------------------------------------::::::::::::::.......................:::::::::::......................................................................:::::::::::::::::::::::::::::::::::::::::::......................................................................................................................................................................:::---===================================================================++++***#######################***************************########################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################*************#######****************####################################################################################################################*********************************************************************+++++++++++++++*********++++++*****###################***************#############################################################################################****************************************++++++++++++++*********************************##*########################################################*************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************############********************************************************************++++++++++++++++++++++++++++++++++++==================================================-----------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---=====+========------------------------------------=============-------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::...............................
......................................................................................................................................::::::::::........................................................................................................................................................................................:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---------------------------::::.......................................................................................................................... ................................................ ........................................................................................................................................................::::::------:::::::::::..............:::::::::::::::............................................................................................................................. ........................................................................-*##%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#########*********++++++++++++++++*#####*#####*******#***+=+*#**********++++++++++++++++******#############%%###****####*+***#%%%%%###*++*##%#############**++**#############%%%%%%%%####****+++++++=====++=++***++++++++========+==-------------------------------------::::::::::::::::::::::::---------------------------. ..................................................:::::----:::::::::::::::::::::::::::::::::::::.....................................:::::::::::::............................................................:::::::-----------------------------------------------------------::::::::::::::.......................:::::::::::......................................................................::::::::::::::::::::::::::::::::::::::::::.......................................................................................................................................................................:::---====================================================================+++****#####################****+++++********************#######################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################*************########***************####################################################################################################################******************************************************************++++++++++++++++++*********+++++++*****###############******************##############################################################################################***************************************+++++++++++++++****************************************######***#*########################################**********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+++++++++++++++++++++++++++++++++++===================================================----------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::----==============--------------------------------------======-------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::..............................
.......................................................................................................................................::::::::::.......................................................................................................................................................................................::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---------------======-------::::.......................................................................................................................... ................................................. ................................................................................... .. ..............................................................::::::------:::::::::::..............:::::::::::::::.............................................................................................................................. .......................................................................-*##%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########***********+++++++++++++***#####**#######******#*+==+*************+++++++++++++++++*******############%%%##**+**###****#%%%%%###**+**#%#############****##############%%%%%%%%####****++++++=======+=+++**++++++++============------------------------------------:::::::::::::::::::::::::--------------------------: ..................................................:::::---:::::::::::::::::::::::::::::::::::::.....................................:::::::::::::::.............................................................:::::------------------------------------------------------------:::::::::::::.......................:::::::::::......................................................................::::::::::::::::::::::::::::::::::::::::::.......................................................................................................................................................................:::---====================================================================+++****#####################****+++++++*******************######################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################*************########***************####################################################################################################################****************************************************************++++++++++++++++++++*********+++++++******############*********************#############################################################################################***************************************++++++++++++++++**************************************************#########################################*********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++==================================================----------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::----=============-----------------------------------------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::..............................
........................................................................................................................................::::::::::......................................................................................................................................................................................::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--------------===========------:::........................................................................................................................ .................................................. ................................................................................... ..............................................................::::::-----:::::::::::::.............:::::::::::::::................................................................................................................................ ......................................................................-*##%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######************+++++++++++**####*##########*********+==+*#*************+=++++++++++++++++********###########%%%###********#%%%%%%%###**++*#%##############################%%%%%%%%#####***++++++=======+==+++*++++++++=============-:--------------------------------::::::::::::::::::-::::::::--------------------------. ................................................::::::---:::::::::::::::::::::::::::::::::::::...................................:::::::::::::::::::............................................................::::------------------------------------------------------------:::::::::::::.......................:::::::::::......................................................................::::::::::::::::::::::::::::::::::::::::::.......................................................................................................................................................................:::---====================================================================++++***#####################***+++===++++++***************######################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################*************########***************####################################################################################################################****************+**********************************************+++++++++++++++++++++*********+++++++********#######*************************############################################################################################****************************************++++++++++++++++**************************************************#######################################***********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++==================================================----------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::----============-----------------------------------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::..............................
.........................................................................................................................................::::::::::................................................................................................................................................................................::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::------------===============-----:::...................................................................................................................... .................................................. .........................................................................................................::..............................................::::::---:::::::::::::::::::::::......:::::::::::::................................................................................................................................... ......................................................................-*##%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###########**********+++++++++*####**###**#####**********+=+*#**************++++++++++++++++++++********###########%%%##******#%%%%%%%%%####*+*################################%%%%%%%%######**+++++============+++++++++++==========--==-:-------------------------------:::::::::::::::::---::::-:::------------------------:-. ................................................::::::---:::::::::::::::::::::::::::::::::::::..................................:::::::--------::::::...........................................................:::::-----------------------------------------------------------:::::::::::::........................::::::::::.....................................................................:::::::::::::::::::::::::::::::::::::::::::............. .........................................................................................................................................................:::---====================================================================++++****####################***++======++++++++++++********#####################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################*************########***************####################################################################################################################****************++******************************************++++++++++++++++++++++++*********+++++++****************************************############################################################################################****************************************++++++++++++++++**************************************************######################################************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++==================================================-----------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-----==========-----------------------------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::..............................
.......................................................................................................................:..................:::::::::.............................................................................................................................................................................::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-----------==================----:::...................................................................................................................... ................................................... ........................................................................................................::::::::..........................................::::::::-:::::::::::::::::::::::::......:::::::::::..................................................................................................................................... .....................................................................-*##%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##############****##**++++++*#################**###*****+=+*#*****************++++++++++++++++++++*********###########%%#******#%%%%%%%%#####***###############################%%%%%%%%######***++++=============++++++++++==========---==--------------------------------::::::::::::::::-===-:::::::--------------------------: ...............................................::::::---::::::::::::::::::::::::::::::::::::::.................................::::::------------:::::...........................................................::::-----------------------------------------------------------:::::::::::::........................::::::::::.....................................................................:::::::::::::::::::::::::::::::::::::::::::.......................................................................................................................................................................:::---=====================================================================+++****#####################**++=======++++++++++++++******####################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################**************#######***************####################################################################################################################****************++++************************************++++++++++++++++++++++++++++*********+++++++***************************************#############################################################################################****************************************+++++++++++++++++*************************************************#####################################**************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+++++++++++++++++++++++++++++++++++===================================================----------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-----========--------------------------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.............................
.......................................................................................................................:::................::::::::::..........................................................................................................................................................................::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::------------=========+++++======----::....................................................................................................................... ...... ......................................... ......................................................................................................::::::::::..........................................:::::::::::::::::::::::::::::::::::......:::::::::......................................................................................................................................... .....................................................................:+##%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####################*******##################***##***#**+=********************++=++++++++++++++++++++********###########%#******#%%%%%%%########################################%%%%%%%#######**+++++=============+++++++++==========----+----------------------------------::::::::::::::-==--::::::::------------------------:-. ..............................................::::::---:::::::::::::::::::::::::::::::::::::.................................::::::--------------:::::..........................................................::::----------------------------------------------------------::::::::::::::........................::::::::::....................................................................::::::::::::::::::::::::::::::::::::::::::::.......................................................................................................................................................................:::---=====================================================================++++***#####################**++==---====+++++++++++++******###################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################**************#######****************###################################################################################################################****************+++++*************++++++++++++++++++++++++++++++++++++++++++++++++++*********+++++++**************************************##############################################################################################****************************************+++++++++++++++++*************************************************###############################********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++==================================================----------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-----=======------------------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.............................
.......................................................................................................................::::................::::::::::.......................................................................................................................................................................:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-----------=========++++++++======---::........................................................................................................................ . ...................................... ....................................................................................................:::::------:::..........................................:::::::::::::::::::::::::::::::::::.......::::.............................................................................................................................................. ......................................................................=*#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%#######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%############################################*#######*####*++*#*******************++++++++++++++++++++++++*********########%%#**+****%%%%%%%#######################################%%%%%%%#######**+++++==============+++=++++===========---==-------:--------------------------:::::::::::::-=-::-:::::::---------------------------. . .............................................::::::----:::::::::::::::::::::::::::::::::::::................................::::::----------------::::..........................................................::::----------------------------------------------------------:::::::::::::.........................::::::::::...................................................................::::::::::::::::::::::::::::::::::::::::::::::......................................................................................................................................................................:::---=====================================================================++++****####################***+==----====+++++++++++++******##################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################**************#######****************###################################################################################################################****************+++++++********+++++++++++++++++++++++++++++++++++++++++++++++++++++*********+++++++*************************************###############################################################################################****************************************++++++++++++++++++************************************************######################******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++==================================================---------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::----------------------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.............................
.......................................................................................................................:::::................:::::::::......................................................................................................................................................................:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-----------=======+++++++++++++=====--:::........................................................................................................................... ................................... ..................................................................................................:::::---------::..........................................::::::::::::::::::-:::::::----:::::............................................................................................................................................................ .....................................................................-*##%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%##########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######################################################**#*************************+=++++==++===+++++++++++++********##########***+***%%%%%########################################%%%%%%%#######***++++===================++============---==---::---:-------------------------:::::::::::::-=---:::::::::--------------------------: .. .............................................::::::----:::::::::::::::::::::::::::::::::::::................................:::::------------------::::.........................................................::::----------------------------------------------------------:::::::::::::.........................::::::::::..................................................................:::::::::::::::::::::::::::::::::::::::::::::::......................................................................................................................................................................:::---======================================================================+++****####################***+==-----=====++++++++++++*****##################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################**************#######****************###################################################################################################################****************++++++++*****+++++++++++++++++++++++++++++++++++++++++++++++++++++++*********+++++++*********************************#####################################################****##########################################****************************************++++++++++++++++++*************************************************#############**************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++===================================================--------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---------------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.............................
........................................................................................................................:::::...............::::::::::..................................................................................................................................................................:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-----------======++++++++++++++++====---::.................................................................................................................................... ..................................... ................................................................................................:::::------==---:::.........................................:::::::::::::::::::------------:::::.............................................................................................................................................................. ......................................................................:+##%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%######################################################################################################*###***********************+=+=++==+=====+++++++++++++++*****##########*+++***#%%%%###############**#######################%%%%%%########**+++++================================----=-:--::-::--------------------------::::::::::::-=-::::::::::::--------------------------: : ............................................::::::-----::::::::::::::::::::::::::::::::::::::..............................::::::------------------:::::.........................................................:::----------------------------------------------------------:::::::::::::..........................::::::::::................................................................:::::::::::::::::::::::::::::::::::::::::::::::.......................................................................................................................................................................:::---======================================================================++++***#####################**++=------========+++++++++*****##################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################*************########***************###################################################################################################################****************+++++++++++**+++++++++++++++++++++++++++++++++++++++++++++++++++++++*********+++++++*******************************################################################*************########################################****************************************+++++++++++++++++++***********************************************#########********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++===================================================---------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::............................
........................................................................................................................::::::...............::::::::::................................................................................................................................................................:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-----------======++++++++++++++++++====--::.................................................................................................................................... .................................. ..............................................................................................:::::-----======--:::..........................................:::::::::::::::::-------------:::::.................................................................................................................................................................. .......................................................................=*#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%##################################################%%#####################################################*************************+====+==+===========+++++++++++****#########*+*+***#%%##*#############****#####################%%%%%%########**+++++================================---==-:::::::::---------------------------:::::::::::=--::::::::::::--------------------------. .: ............................................::::::-----:::::::::::::::::::::::::::::::::::::::............................::::::--------::::--------::::.........................................................:::----------------------------------------------------------:::::::::::::..........................::::::::::................................................................:::::::::::::::::::::::::::::::::::::::::::::::.......................................................................................................................................................................:::---======================================================================++++****####################**++==-----===========+++++++*****#################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################*************########***************###################################################################################################################****************++++++++++****++++++++++++++++++++++++++++++++++++++++++++++++++++++*********++++++++***************************##############################################*******************#######################################****************************************+++++++++++++++++++*****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++==================================================---------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--------::----------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::............................
.........................................................................................................................:::::................::::::::::.............................................................................................................................................................::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-----------======++++++++++++++++++++===--::...................................................................................................................................... .. ................... .............................................................................................::::----=========--:::...........................................::::::::::::::::-------------:::::..............................................................................................................................................................................................................................................:+#%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%#####################################################%%%###%%#############%%%%###########################*************************+=+===================+++++++++++***#########++++++*##*************####*****####################%%%%%########**++++++================================--==-::::::::::----------------------------:::::::::---:::::::::::::--------------------------. :. ..........................................::::::::------:::::::::::::::::::::::::::::::::::::::...........................:::::-------:::::::-------:::::........................................................:::----------------------------------------------------------:::::::::::::..........................::::::::::...............................................................::::::::::::::::::::::::::::::::::::::::::::::::.......................................................................................................................................................................:::---======================================================================++++****####################***+==------============++++++****#################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################*************########***************###################################################################################################################***************+++++++++*********+++++++++++++++++++++++++++++++++++++++++++++++++++*********++++++++***********************##############################################************************######################################****************************************++++++++++++++++++++****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+++++++++++++++++++++++++++++++++++++=================================================---------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::............................
..........................................................................................................................::::::..............:::::::::::..........................................................................................................................................................:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-----------======++++++++++++++++++++++===-:::...................................................................................................................................... ... .................. .............:::::::........................................................................::::----===========--:::............................................:::::::::::::::--------------::::..............................................................................................................................................................................................................................................-*%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@%%%%%%%%%%%%%%%%%%%###########################################################%%%%##%%##########%%%%%%%%%%%%####################**************************+==+==+=================++++++++++**########*++++++*****************##******####################%%%%########***++++++===============================-==--:::::::::::-----------------------------:::::::--:::::::::::::::-------------------------: .: ..........................................:::::::--------::::::::::::::::::::::::::::::::::::::.........................:::::::------:::::::::-------::::........................................................:::----------------------------------------------------------:::::::::::::...........................:::::::::...............................................................:::::::::::::::::::::::::::::::::::::::::::::::::......................................................................................................................................................................:::---======================================================================++++****####################***++==-----=============++++++****################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################*************########***************###################################################################################################################***************+++++++++*************+++++++++++++++++++++++++++++++++++++++++++++++*********++++++++*******************##############################################****************************#######################################****************************************+++++++++++++++++++*****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++==================================================---------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::............................
..........................................................................................................................::::::................::::::::::......................................................................................................................................................::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::------------======+++++++++++++++++++++++===--::...................................................................................................................................... ..... .................. ............::::::::::....................................................................::::----=============--:::.............................................::::::::::::::-------------:::::.............................................................................................................................................................................................................................................:+#%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%###################################################################%%%%####%#########%%%%%%%%%%%%%%%##############***************************+=++====================++++++++++***#######*++++++**************++**********###########***######%%########***+++++++=================================-:::::::::::::------------------------------:::::::::::::::::::::::-------------------------: :: ........................................::::::::--------:::::::::::::::::::::::::::::::::::::::::::::::::::...:::::::::::::::-------::::::::::------:::::.......................................................:::---------------------------------------------------------::::::::::::::............................::::::::..............................................................::::::::::::::::::::::::::::::::::::::::::::::::::......................................................................................................................................................................:::---=======================================================================++++***#####################**++===----===============++++****################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################*************########***************###################################################################################################################****************++++++++********************++++++++++++++++++++++++++++++++++++++++*********++++++++****************#############################################*********************************######################################*****************************************+++++++++++++++++++****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+++++++++++++++++++++++++++++++++++++=================================================---------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::............................
...........................................................................................................................::::::...............:::::::::::.....................................................................................................................................................::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-------------=====+++++++++++++++++++++++++===--::................................................................................................................................................ ................. .............::::::::::::.................. .............................................::::----==============--:::.............................................::::::::::::::-------------::::.............................................................................................................................................................................................................................................:=*%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%#######%%%%############################################################%%%%%%##########%%%%%%%%%%%%%%################**************************+=========================++++++++*****#####*+++++++************+++++++++++**#####*#********##############***++++++++================================-::::::::::::::------------------------------::::::::::::::::::::::--------------------------..-. ........................................:::::::---------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::------:::::::::::-------::::.......................................................:::---------------------------------------------------------::::::::::::::............................::::::::..............................................................::::::::::::::::::::::::::::::::::::::::::::::::::......................................................................................................................................................................:::---=======================================================================++++***#####################***++====-================+++++****################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################************########***************###################################################################################################################****************++++++++*************************************+++++++++++++++++++++++*********++++++++**************##########################################**************************************#######################################*****************************************++++++++++++++++++*****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++==================================================---------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::............................
............................................................................................................................::::::...............:::::::::::...................................................................................................................................................::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-------------======+++++++++++++++++++++++++===--::................................................................................................................................................ ............................::::::::::::::............... ..........................................::::----================--:::...............................................::::::::::::-----------::::::...........................................................................................................................................................................................................................................-+*#%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@%%%%%%%%%%%%%%%%%%%#####%%%%%%################################################################%%%%%#######%%%%%%%%%%%%%%#################**************************+==========================++++++******#**#*+++++++++**********++++++++++++****#************#############***+++++++++================================-:::::::::::::--------------------------------:::::::::::::::::::::--------------------------.:- ........................................::::::-----------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-------::::::.:::::-------:::.......................................................:::---------------------------------------------------------::::::::::::::............................:::::::::.............................................................::::::::::::::::::::::::::::::::::::::::::::::::::......................................................................................................................................................................::---========================================================================++++****####################***++======================+++++****###############################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################************########***************###################################################################################################################****************++++++++****************************************++++++++++++++++++++*********++++++++************######################################********************************************#######################################******************************************++++++++++++++++++****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++==================================================---------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::............................
............................................................................................................................:::::::...............::::::::::.................................................................................................................................................::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::------------======++++++++++++++++++++++++++===--::................................................................................................................................................ ..........................:::::-----::::::........... .. .........................................::::----================---:::................................................:::::::::::::::---::::::::::.........................................................................................................................................................................................................................................:+%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%@@%%%%%%%%%%%%%%%%%%######%%%%%###################################################################%%%########%%%%%%%%%%%%###################**************************===========================++++++*********#*++++++++++********+++++++++++++********++*******#####*#**###****++++++++================================--:::::::::::::---------------------------------:::::::::::::::::::--------------------------:.-: ........................................::::::-----------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-------:::::...::::-------::::......................................................:::---------------------------------------------------------::::::::::::::.............................::::::::.............................................................::::::::::::::::::::::::::::::::::::::::::::::::::............:::......................................................................................................................................................:::---========================================================================++++****#####################**++=======================++++****###############################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################************########***************###################################################################################################################****************+++++++*****************************************+++++++++++++++++++++********++++++++***********################################***************************************************#######################################*******************************************++++++++++++++++++****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+++++++++++++++++++++++++++++++++++==================================================---------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::............................
.............................................................................................................................:::::::..............:::::::::::..............................................................................................................................................:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::------------======+++++++++++++++++++++++++++===--::.................................................................................................................................................... ........................::::--------:::::........... ............................................::::---==================--:::..................................................::::::::::::::--:::::::::::........................................................................................................................................................................................................................................:#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%@@%@%%%%%%%%%%%%%%%%%##################################################################################%%%%####%%%%%%%%%%#####################*************************+===========================+++++************++=+++++++****+++++++++++++++++*******+=++****************#****++++++++=================================-:::::::::::::::-------------------------------::::::::::::::::::::-------------------------:::-. ........................................::::::------------::::::::::::::::----::::::::::::::::::::::::::::::::::::::::::::::-------:::::...:::::------::::......................................................:::---------------------------------------------------------:::::::::::::..............................::::::::............................................................:::::::::::::::::::::::::::::::::::::::::::::::::::...........:::::.....................................................................................................................................................::---==========================================================================++++***#####################**++=======================+++++****##############################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################************#########**************###################################################################################################################****************+++++++*********************************************+++++++++++++++++********++++++++************#######################************************************************************#######################################*******************************************++++++++++++++++++****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************++++++++++++++++++++++++++++++++++===================================================--------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::............................
..............................................................................................................................::::::...............:::::::::::............................................................................................................................................:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::------------======++++++++++++++++++++++++++++===-:::.................................................................................................................................................... ........................::::----------::::......................................................::::----===================--:::..................................................::::::::::::::::::::::::::.........................................................................................................................................................................................................................................*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%######################################################################################%#####%%%%%##########################**************************================+++========++++*************++=++++++++++++++++++++++++++++*******==+*********************+++++++++================================-::::::::::::::::::-----------------------------::::::::::::::::::::--------------------------:-- ........................................::::::-------------::::::::------------:::::::::::::::::::::::::::::::::::::::::::::-------::::.....::::-------:::......................................................:::---------------------------------------------------------::::::::::::................................::::::.............................................................:::::::::::::::::::::::::::::::::::::::::::::::::::...........::::::...................................................................................................................................................:::---==========================================================================++++***#####################***++=======================+++++****#############################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################************#########**************###################################################################################################################*****************++++++*********************************************+++++++++++++++++********+++++++++*************#############********************************************************************#######################################********************************************+++++++++++++++++****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************++++++++++++++++++++++++++++++++++===================================================--------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::............................
..............................................................................................................................:::::::...............::::::::::................................................................................................................................:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-----------======+++++++++++++++++++++++++++++==--::..................................................................................................................................................... .......................::::-----------:::::...................................................:::----=====================--:::..................................................::::::::::-::::::::::::::....................................::::.................................................................................................................................................................................................+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%@@@%%%%%%%%%%%%%%%%%%#########################################################################################%%##%%%###########################**************************+============++*****++====++*****************+==++++++++++++++++++++++===+++******===+********************+++++++++================================-:::::::::::::::::::-----------------------------:::::::::::::::::::-----------------------------: ........................................::::::---------------:::---------------:::::::::::::::::::::::::::::::::::::::::::::------:::::.....::::-------::::.................................:...................:::---------------------------------------------------------::::::::::::................................::::::.............................................................::::::::::::::::::::::::::::::::::::::::::::::::::::..........:::::::.................................................................................................................................................:::---===========================================================================++++***#####################***++========================+++++*****###########################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################************#########**************####################################################################################################################****************++++++*********************************************+++++++++++++++++********+++++++++**********************************************************************************************#######################################*********************************************++++++++++++++++*****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+++++++++++++++++++++++++++++++++===================================================--------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::............................
...............................................................................................................................:::::::...............::::::::::.............................................................................................................................::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-----------======++++++++++++++++++++++++++++++==--::..................................................................................................................................................... ......................::::------------:::::.................................................:::---======================--:::..................................................:::::::::::-::::::::::::......................................::::................................................................................................................................................................................................=@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%############################################################################################################################*************************+=========+**********+===+*******************+==+++=++++++++++++==========+******+===+*******************++++++++++===============================-:::::::::::::::::::::----------------------------:::::::::::::::::::-----------------------------. ........................................::::::----------------------------------::::::::::::::::::::::::::::::::::::::::::::------::::......::::--------:::................................:::........... .....:::---------------------------------------------------------::::::::::::.................................:::::.............................................................:::::::::::::::::::::::::::::::::::::::::::::::::::::........::::::::.................................................................................................................................................::---============================================================================++++***#####################***++=========================++++*******#########################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################************#########**************#####################################################################################################################***************++++++*********************************************++++++++++++++++*********+++++++++**********************************************************************************************#######################################**********************************************+++++++++++++++++***************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************++++++++++++++++++++++++++++++++++===================================================--------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::............................
...............................................................................................................................::::::::...............::::::::::............................................................................................................................::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::----------======+++++++++++++++++++++++++++++++==--::..................................................................................................................................................... ....................:::--------------::::..............................................::::---=======================--:::..................................................:::::::::::::::::::::........................................::::::...........................................................................................................................................................................................:--=%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%###################################################################################################%%%########################************************+======+*************+==*********************+=++++==+++++++==============+*****+====+******************++++++++++===============================-::::::::::::::::::::::----------------------------:::::::::::::::::::-----------------------------. .......................................::::::----------------------------------::::::::::::::::::::::::::::::::::::::::::::-----:::::......::::--------:::................................::::.......... .....:::----------------------------------------------------------:::::::::::....................................................................................................::::::::::::::::::::::::::::::::::::::::::::::::::::........::::::::................................................................................................................................................:::---============================================================================++++***######################**+++=========================+++++*******#######################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################************#########**************#####################################################################################################################***************++++++**********************************************++++++++++++++**********+++++++++***********************************************************************************************#######################################***********************************************++++++++++++++++***************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+++++++++++++++++++++++++++++++++===================================================--------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::............................
................................................................................................................................:::::::...............:::::::::::.........................................................................................................................:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::----------======++++++++++++++++++++++++++++++++==--::..................................................................................................................................................... ....................:::---------------::::............................................::::---========================--:::.................................................:::::::::::::::::::::.........................................:::::::.........................................................................................................................................................................................:===#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########################################################################################################*#####################************************+====+**************+==**********************+=++++==+++==================+****+====++******************++++++++++==============================-:::::::::::::::::::::::----------------------------:::::::::::::::::::----------------------------: .......................................:::::------------------------------------:::::::::::::::::::::::::::::::::::::::::::----::::::......::::--------:::................................:::::........ .....:::----------------------------------------------------------:::::::::::....................................................................................................:::::::::::::::::::::::::::::::::::::::::::::::::::::......:::::::::................................................................................................................................................::---=============================================================================++++***######################***++==========================+++++*******######################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################************##########*************######################################################################################################################***************+++++**********************************************+++++++++++++***********+++++++++***********************************************************************************************#######################################************************************************++++++++++++++++**************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+++++++++++++++++++++++++++++++++====================================================--------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::............................
.................................................................................................................................:::::::...............:::::::::::......................................................................................................................::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::----------======+++++++++++++++++++++++++++++++++==--::..................................................................................................................................................... ...........:::----------------::::..........................................::::---========================--:::..............................................:.:::::::::::::-:::::::::........................................::::::::.........................................................................................................................................................................................-==+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#################################################################################################################################**********************+==+****************+=***********************+***+========================+***+=====+******************++++++++++===============================-:::::::::::::::::::::::----------------------------:::::::::::::::::::----------------------------: .......................................:::::------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::......::::--------:::................................:::::........ .....:::----------------------------------------------------------:::::::::::.....................................................................................................::::::::::::::::::::::::::::::::::::::::::::::::::::::...::::::::::...............................................................................................................................................:::---=============================================================================++++***######################***++===========================++++++*******####################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################************##########*************#########################################################################################################################************+*+++**********************************************+++++++++***************+++++++++***********************************************************************************************#######################################*************************************************+++++++++++++++**************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************++++++++++++++++++++++++++++++++++===================================================--------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::...........................
.................................................................................................................................::::::::...............:::::::::::.................................................................................................................:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::----------======+++++++++++++++++++++++++++++++++===--::..................................................................................................................................................... ..........:::-----------------::::........................................::::---=========================--:::..............................................:::::::::::::::--:::::::.........................................:::::::::........................................................................................................................................................................................===*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#################################################################################################################################**********************++******************++***************************+=======================+***+======+******************++++++++++==============================-::::::::::::::::::::::::---------------------------::::::::::::::::::::----------------------------. .......................................:::::------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::.......::::--------:::................................::::::....... .....:::-----------------------------------------------------------::::::::::.....................................................................................................:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::...............................................................................................................................................:::--===============================================================================+++***######################***++============================++++++++******##################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################************##########*************#############################################################################################################################**********+++***********************************************++++++******************+++++++++**********************************************************************************************#######################################*************************************************++++++++++++++++**************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************++++++++++++++++++++++++++++++++++==================================================--------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::..........................
..................................................................................................................................::::::::...............:::::::::::................................................................................................................:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-----------======++++++++++++++++++++++++++++++++++===--::................................................................................................................................................... . . ........:::------------------::::......................................::::---=========================---:::.................................................::::::::::::::::::::::........................................:::::::::.......................................................................................................................................................................................:===#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##########%%%%%%%%%%##############################################################################################################*******************************************************************+++=======================+**+======+******************++++++++++==============================-:::::::::::::::::::::::::----------------------------::::::::::::::::::----------------------------- ........................................::::--------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::........:::::-------:::.......................... .....::::::....... .....:::-----------------------------------------------------------::::::::::......................................................................................................::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::...............................................................................................................................................::---===============================================================================+++****######################**+++============================++++++++******#################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################*************#########*************##############################################################################################################################************************************************************+*++*******************+++++++++**********************************************************************************************#######################################****************************************************++++++++++++++**************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+++++++++++++++++++++++++++++++++===================================================--------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.:...........................
...................................................................................................................................::::::::...............::::::::::................................................................................................................::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-----------======+++++++++++++++++++++++++++++++++++===-:::................................................................................................................................................... ........:::-------------------::::.....................................:::---==========================--:::...................................................:::::::::--:::::::::::......................................::::::::::........................:::::::::......................................................................................................................................................-===#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#############################################################################*################################*****************************************************************+==++======================+***=======+*****************+++++++++++=============================-::::::::::::::::::::::::::---------------------------:::::::::::::::::::----------------------------: ......................................:::::--------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::........:::::-------::::................................::::::....... .....:::-----------------------------------------------------------::::::::::.........................................................................................................:::::::....................::::::::::::::::::::::::::::::::::::...............................................................................................................................................::---===============================================================================+++****######################**+++==============================++++++++******###############################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################*************#########*************##############################################################################################################################***********************************************************++*************##*******+++++++++***********************************************************************************************######################################****************************************************++++++++++++++**************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************++++++++++++++++++++++++++++++++++==================================================--------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.:...........................
...................................................................................................................................::::::::................::::::::::...........................................................................................................::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::------------======++++++++++++++++++++++++++++++++++++==--::.................................................................................................................................................... .......:::--------------------:::...................................::::---==========================---:::...................................................:::::::::-::::::::::::......................................::::::::::....................::::::::::::::::::.................................................................................................................................................-===#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##############################################################################**################################***************************************+************************+===++======================+**=======+******************+++++++++++=============================::::::::::::::::::::::::::::--------------------------:::::::::::::::::::----------------------------. ......................................:::::---------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::.........:::::-------::::................................::::::....... ......:::-----------------------------------------------------------::::::::::.......................................................................................................................................:::::::::::::::::::::::::::::::::...............................................................................................................................................::---===============================================================================+++****######################**+++================================+++++++******##############################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################*************#########*************###############################################################################################################################*********************************************************++**********#######******+++++++++***********************************************************************************************######################################******************************************************+++++++++++++*************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************++++++++++++++++++++++++++++++++++==================================================--------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.:...........................
....................................................................................................................................::::::::................:::::::::........................................................................................................::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::------------======+++++++++++++++++++++++++++++++++++++==--::.................................................................................................................................................... .......:::---------=======-----:::.................................::::---===========================--:::....................................................::::::::::::::::::::::......................................:::::::::::.................::::::::::::::::::::::::::...........................................................................................................................................-===#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%################################################################################+*#################################**************************************+=+**********************+====+*=====================++*+=======+*****************+++++++++++=============================-::::::::::::::::::::::::::::--------------------------::::::::::::::::::::--------------------------: ....................................:::::::----------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::.........::::::-------:::::...............................:::::::...... ......:::-----------------------------------------------------------:::::::::..........................................................................................................................................:::::::::::::::::::::::::::::::...............................................................................................................................................::---===============================================================================++++***######################***++=================================++++++++******############################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################*************#########*************###############################################################################################################################**********+********************************************************##########******++++++++************************************************************************************************#####################################*******************************************************+++++++++++++*************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+++++++++++++++++++++++++++++++++===================================================--------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::...........................
.....................................................................................................................................::::::::...............::::::::::.....................................................................................................::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-------------======++++++++++++++++++++++++++++++++++++++==--::.................................................................................................................................................... ......:::--------=========-----:::................................:::---============================--:::.....................................................:::::::::::::::::::.......................................::::::::::::................:::::-----:::::::::::::::::::::..............................................................................................::::.....................................-===*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###############################################################################**###################################*************************************+=+*********************+=====+*=====================+*+========+****************+++++++++++=============================-:::::::::::::::::::::::::::::--------------------------:::::::::::::::::::::-------------------------. ..................................:::::::-----------------------------------------::::::::::::::::::::::::::::::::::::::::::::::..........::::::--------:::::..............................::::::::..... ......::::----------------------------------------------------------:::::::::.....................................................................................................................................................::::::::::::::::::::...............................................................................................................................................::--================================================================================++++***######################***++===================================+++++++******###########################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################*************#########**************##############################################################################################################################******************************************************************############*****++++++++*************************************************************************************************#####################################*******************************************************++++++++++++*************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************++++++++++++++++++++++++++++++++++==================================================--------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::...........................
.....................................................................................................................................:::::::::...............::::::::::.................................................................................................:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-------------=======+++++++++++++++++++++++++++++++++++++++==--::................................................................................................................................................... .....:::------=============----:::..............................:::---============================--::::.....................................................:::::::::::::::::.........................................::::::::::::...............::::----------:::::::::::::::::::::::.........................................................................................:::::....................................:===+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%############%%%%###############################################################################*+####################################*************************************===+*******************+======+*====================+*+========+****************++++++++++++=============================::::::::::::::::::::::::::::::-------------------------::::::::::::::::::::::::-----------------:-----. ...............................::::::::------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::..........:::::::-------:::::::::::::......................::::::::............::::----------------------------------------------------------:::::::::.......................................................................................................................................................::::::::::::::::::...............................................................................................................................................::--================================================================================++++***######################***++=====================================+++++++*****##########################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################*************#########**************###############################################################################################################################****************************************************************##############****++++++++*****#*******************************************************************************************#####################################*********************************************************++++++++++**************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+++++++++++++++++++++++++++++++++===================================================--------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::...........................
......................................................................................................................................:::::::::...............:::::::::.................................................................................................::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---------------=======+++++++++++++++++++++++++++++++++++++++===--::................................................................................................................................................... .....:::------==============----:::...........................::::---============================---:::.......................................................::::::::::::::...........................................::::::::::::..............:::------------::::::::::::::::::::::::::::....................................................................................:::::....................................:====#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##################%%%%%##############################################################################*+*####################################************************************+====******************+=======++====================+*=========+***************+++++++++++++===========================-:::::::::::::::::::::::::::::::-------------------------:::::::::::::::::::::::::---------::----:-----:. .................:..........:::::::::-------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::...........:::::::--------::::::::::::::::::::::............:::::::::...........::::----------------------------------------------------------:::::::::.........................................................................................................................................................::::::::::::::::...............................................................................................................................................::--================================================================================++++****#####################***+++======================================++++++******########################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################*************##########*************###############################################################################################################################***************************************************************################****+++++++****#####****************************************************************************************#####################################**********************************************************++++++++***************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+++++++++++++++++++++++++++++++++====================================================-------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::...........................
.......................................................................................................................................:::::::::..............:::::::::.................................................................................................:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::----------------======++++++++++++++++++++++++++++++++++++++++===--::................................................................................................................................................... ....:::------===============---::::..........................:::---=============================--:::.........................................................::::::::::::...................:::::::.................::::::::::::::............:::----------------::::::::::::::::::::::::::::.................................................................................::::::...................................:====+%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##################%%%%###############################################################################+*######################################***********************************=====+****************+========++===================+*+========+***************+++++++++++++===========================-::::::::::::::::::::::::::::::::-------------------------::::::::::::::::::::::::------::::::-:--::----. .................:.......::::::::::--------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::...........:::::::---------:::::::::::::::::::::::..........:::::::::...........:::::---------------------------------------------------------:::::::::..........................................................................................................................................................:::::::::::::::...............................................................................................................................................::--================================================================================++++****######################**+++=======================================+++++++*****#######################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################*************##########*************###############################################################################################################################***************************************************************################****+++++++***########**************************************************************************************#####################################***********************************************************++++++*****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************++++++++++++++++++++++++++++++++====================================================--------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::...........................
........................................................................................................................................::::::::...............:::::::::..............................................................................................::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-----------------=======+++++++++++++++++++++++++++++++++++++++++===--::................................................................................................................................................... .....::-----=================---:::.........................:::---=============================---:::..........................................................::::::::::....................::::::::.:..............::::::::::::::...........:::----====----------::::::::::::::::::::::::::::::::::...........................................................................:::::....................................-====#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%##################%%%%%##############################################################################++#######################################**********************************+=====+****************+========++==================+*+=========+**************+++++++++++++++=========================-:::::::::::::::::::::::::::::::::------------------------:::::::::::::::::::::::::::::::::::::::::--:--: .................:.....:::::::::::----------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::...........::::::::----------------::::::::::::::::.........::::::::::..........:::::---------------------------------------------------------:::::::::...........................................................................................................................................................::::::::::::::..............................................................................................................................................:::--================================================================================++++*****#####################**+++========================================+++++++*****######################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################*************##########*************################################################################################################################################************************************************************###################***++++++****#########**************************************************************************************####################################*************************************************************++*******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+++++++++++++++++++++++++++++++++===================================================--------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::..........................
........................................................................................................................................:::::::::...............::::::::..............................................................................................::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::------------------=======++++++++++++++++++++++++++++++++++++++++++===--::.................................................................................................................................................. ....::-----=================----:::.......................:::---==============================--:::...........................................................:::::::::.......................::::::::..............::::::::::::::..........:::----=====-----------::::::::::::::::::::::::::::::::::::::.......................................................................::::....................................:===+%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###################%%%%##############################################################################*+########################################**********************************=======+***************+========+*==================++==========**************++++++++++++++++========================-:::::::::::::::::::::::::::::::::-------------------------::::::::::::::::::::::::::::::::::::::::::----. ................:...::::::::::::----------------------------------------------:::::::::::::::::..:::::::::::::::::::::::::::...........::::::::----------------------:::::::::::........::::::::::...........:::::--------------------------------------------------------:::::::::............................................................................................................................................................:::::::::::::..............................................................................................................................................:::--================================================================================++++******####################***++===========================================+++++*****#####################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################*************##########*************################################################################################################################################*********************************************########******####################****+++++****#########*************************************************************************************#####################################**********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+++++++++++++++++++++++++++++++++====================================================-------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::..........................
.........................................................................................................................................:::::::::..............:::::::::............................................................................................:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-------------------=======+++++++++++++++++++++++++++++++++++++++++++===--::.................................................................................................................................................. ....:::----===================---:::.....................:::---==============================---:::.............................................................:::::...........................::::::::::.........:::::::::::::::.........:::----=======------------:::::::::::::::::::::::::::::::::::::::::...........................................................................................................-==*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###################%%%%#############################################################################*+*########################################*********************************+=======+***************+========++=================+===========+**********+***+++++++++++++++++======================-::::::--::::::::::::::::::::::::::-------------------------:::::::::::::::::::::::::::::::::::::::::::---.................::::::::::::::------------------------------------------------:::::::::::::::.......:::::::::::::::::::::::............:::::::::----------------------------::::::......:::::::::::..........::::::-------------------------------------------------------:::::::::............................................................................................................................................................:::::::::::::..............................................................................................................................................::---================================================================================+++++*******##################***++============================================++++++*****###################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################*************##########*************################################################################################################################################****************************************#######################################*****+++****###########************************************************************************************#####################################***********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+++++++++++++++++++++++++++++++++===================================================--------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::..........................
..........................................................................................................................................:::::::::..............::::::::...........................................................................................::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--------------------=======++++++++++++++++++++++++++++++++++++++++++++===-:::.................................................................................................................................................. ....:::----====================---:::...................::::--==============================---:::...............................................................................................:::::::::::::::::::::::::::::::::........::::---========-------------:::::::::::::::::::::::::::::::::::::::::::::......................................................................................................:=+%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##################%%%%##############################################################################+*#########################################*********************************========+***************+========++=============================*******+++++**++++++++++++++++++=====================:::::::--::::::::::::::::::::::::::::------------------------:::::::::::::::::::::::::::::::::::::::::--:-: ................::::::::::::-------------------------------------------------::::::::::::::..........:::::::::::::::::::::............:::::::::::---------------------------::::::::..:::::::::::::..........:::::------------------------------------------------------::::::::::.............................................................................................................................................................:::::::::::::.............................................................................................................................................::---================================================================================+++++**********###############***+++=============================================+++++*****###########################################################################################################################################################################################################################################################################################################************#**########################################################################################################################################################################*************###########*************###############################################################################################################################**************************************##########################################**********#############***********************************************************************************######################################**********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+++++++++++++++++++++++++++++++++===================================================--------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::..........................
..........................................................................................................................................::::::::::.............:::::::::......................................................................................:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---------------------========+++++++++++++++++++++++++++++++++++++++++++++==--:::.................................................................................................................................................. ....:::---=====================---:::...................:::---==============================--:::...................................................................................................:::::::::::::::::::::::::::::::......::::---=========--------------:::::::::::::::::::::::::::::::::::::::::::::::::::................................................................................................:+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%@%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##################%%%%#############################################################################++##########################################********************************+========+***************++=======+*============================+*****+++++++++++++++++++++++++++====================::::::::::::::::::::::::::::::::::::::------------------------::::::::::::::::::::::::::::::::::::::::-:--:.................::::::::::::-------------------------------------------------:::::::::::::...........:::::::::::::....::::............:::::::::::::--------------------------::::::::::::::::::::::...........:::::-----------------------------------------------------:::::::::...............................................................................................................................................................::::::::::::.............................................................................................................................................::---=================================================================================++++***********###############**+++==============================================+++++*****######################################################################################################################################################################################################################################################################################################********************#######################################################################################################################################################################*************###########*************###############################################################################################################################*************************************############################################*********#############**********************************************************************************#######################################***********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************++++++++++++++++++++++++++++++++====================================================-------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::..........................
...........................................................................................................................................:::::::::..............::::::::......................................................................................:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::----------------------========++++++++++++++++++++++++++++++++++++++++++++++==--:::.................................................................................................................................................... .....:::---======================---:::.................:::---==============================---:::.....................................................................................................::::::::::::::::::::::::::::::....::::---=========----------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::...........................................................................................:*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%@@@%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##################%%%#############################################################################*+*##########################################********************************=========++***************++======+*+===========================***++++++++++++++++++++++++++++++===================-::::::::::::::::::::::::::::::::::::::------------------------:::::::::::::::::::::::::::::::::::::::::---: ...............:::::::::::--------------------------------------------------::::::::::::.............:::::::::::.......:.............::::::::::::::---------------------------:::::::::::::::::::::..........:::::----------------------------------------------------::::::::::................................................................................................................................................................:::::::::::.............................................................................................................................................::---=================================================================================+++++***********##############**+++================================================++++*****################################################################################################################################################################################################################################################################################################**************************######################################################################################################################################################################*************###########*************###############################################################################################################################************************************##############################################******###############*********************************************************************************########################################************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************++++++++++++++++++++++++++++++++===================================================--------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::..........................
............................................................................................................................................:::::::::.............::::::::..................................................................................:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::----------------------=========+++++++++++++++++++++++++++++++++++++++++++++++==--:::...................................................................................................................................................... ...... . .....:::---=======================---:::...............:::---===============================--:::.........................................................................................................::::::::::::::::::::::::::::..::::---==========---------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.....................................................................................-#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##################%%%%#############################################################################+*##########################################********************************+=========++****************++=====+*+==========================+**+++++++++++++++++++++++++++++++==================---:::::::::::::::::::::::::::::::::::::------------------------:::::::::::::::::::::::::::::::::::::::-:-:-.................::::::::::--------------------------------------------------::::::::::...............:::::::::::......................:::::::::::::----------------------------:::::::::::::::::::::.........:::::----------------------------------------------------:::::::::.................................................................................................................................................................::::::::::::............................................................................................................................................::---=================================================================================++++++***********#############***++=================================================+++++****#############################################################################################################################################################################################################################################################*###########################************************************##################################################################################################################################################################*************###########**************##############################################################################################################################***********************************#####################################################################*****************************************************************************###########################################************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************++++++++++++++++++++++++++++++++===================================================--------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::..........................
............................................................................................................................................::::::::::.............:::::::..............................................................................:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::----------------------=========+++++++++++++++++++++++++++++++++++++++++++++++++==--:::............................................................................................................................................................... ... .....:::---========================--:::...............::---===============================---:::..........................................................................................................:::::::::::::::::::::::::::::::::---==========--------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::...............................................................................=%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###################%%%#############################################################################++###########################################********************************===========+*****************+=====+*+==========================**++++++++++++++++++++++++++++++++==================---:::::::::::::::::::::::::::::::::::::-----------------------::::::::::::::::::::::::::::::::::::::::::--:................::::::::::-------------------------------------------------:::::::::.................::::::::::.........................::::::::::::---------------------------:::::::::::---::::::::........:::::---------------------------------------------------:::::::.....................................................................................................................................................................:::::::::::............................................................................................................................................::--==================================================================================+++++++***********############***++==================================================+++++****############################################################################################################################################################################################################################################################***#####################****************************************##################################################################################################################################################################*************###########**************#############################################################################################################################***********************************######################################################################*******************************************************************#####################################################************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************++++++++++++++++++++++++++++++++====================================================-------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::..........................
.............................................................................................................................................::::::::::............::::::::..............................................................................:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---------------------==========+++++++++++++++++++++++++++++++++++++++++++++++++===--:::.......................................................................................................................................................................... ......:::---========================---:::.............:::--================================--:::............................................................................................................:::::::::::::::::::::::::::::::---===========--------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::..........................................................................*%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###################%%%#############################################################################*+*##########################################********************************+===========+*****************++====+*+=========================+*++++++++++++++++++++++++++++++++++==================---------::::::::::::::::::::::::::::::-----------------------::::::::::::::::::::::::::::::::::::::::::::................:::::::::::------------------------------------------------:::::::....................::::::::..............................::::::::------------------------------::::::::::::::::::::::.....:::::---------------------------------------------------:::::.......................................................................................................................................................................:::::::::::............................................................................................................................................::--==================================================================================++++++++++*********############**+++==================================================+++++****##########################################################################################################################################################################################################################################################*****###############**********************************************#################################################################################################################################################################*************###########**************###########################################################################################################################************************************#######################################################################**************************************************************##########################################################************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+++++++++++++++++++++++++++++++++====================================================-------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::..........................
..............................................................................................................................................::::::::::...........::::::::.........................................................................:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::----------------------===========++++++++++++++++++++++++++++++++++++++++++++++++++===--:::........................................................................................................................................................................... .......::---=========================--:::............:::---===============================--::::.............................................................................................................:::::::::::::::::::::::::::::----===========---------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::......................................................................:#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####################%%%############################################################################*+*##########################################********************************+============+*****************++====++*=========================*++++++++++++++++++++++++++++++++++++++=======================--:::::::::::::::::::::::::::::-----------------------::::::::::::::::::::::::::::::::::::::::::::................::::::::::------------------------------------------------:::::......................::::::::.................................::::::-------------------------------::----------::::::::::..::::::---------------------------------------------------::::........................................................................................................................................................................:::::::::::............................................................................................................................................::--==================================================================================+++++++++++++******############**+++====================================================++++****#################################################################################################################################################################################################################**######################################******#########****************************************************################################################################################################################################################################*************###########**************########################################################################################################################**************************************########################################################################******************************************************##################################################################************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+++++++++++++++++++++++++++++++++====================================================-------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::..........................
..............................................................................................................................................:::::::::::...........:::::::........................................................................:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-----------------------============+++++++++++++++++++++++++++++++++++++++++++++++++++===--:::............................................................................................................................................................................ ........:::--=========================---::............:::--===============================---::...............................................................................................................::::::::::::::::::::::::::::----============---------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::...................................................................=%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###################%%%#############################################################################+*##########################################*********************************+============+******************++===+**========================+*+++++++++++++++++++++++++++++++++++++=========+++============--:::::::::::::::::::::::::::::----------------------::::::::::::::::::::::::::::::::::::::::::::.................:::::::::------------------------------------------------::::.......................::::::::...................................::::----------::::-:---------------------------::::::::::::::::::--------------------------------------------------::::..........................................................................................................................................................................:::::::::::...........................................................................................................................................::--===================================================================================++++++++++++++*****###########***++=====================================================++++*****###############################################################################################################################################################################################################***#####################################*********#*********************************************************################################################################################################################################################################*************###########**************####################################################################################################################*****************************************#########################################################################*********************************************############################################################################************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************++++++++++++++++++++++++++++++++====================================================-------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::..........................
...............................................................................................................................................::::::::::...........:::::::.......................................................................::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::------------------------=============+++++++++++++++++++++++++++++++++++++++++++++++++++===--:::............................................................................................................................................................................ ...........:::--==========================--:::..........:::--===============================---:::................................................................................................................::::::::::::::::::::::::::-----============---------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::...............................................................+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####################%%%############################################################################++##########################################*********************************+==============+*****************+++===+*========================*+==++++++++++++++++++++++++++++++++++=========+++++============-:::::::::::::::::::::::::::::----------------------::::::::::::::::::::::::::::::::::::::::::-: ................::::::::-----------------------------------------------:::::.......................:::::::....................................::::--------:::::::::::::---------------------:::::::::::::::::::---------::---------------------------------------::::..........................................................................................................................................................................:::::::::::...........................................................................................................................................::--===================================================================================+++++++++++++++*****###########**++======================================================++++*****##############################################################################################################################################################################################################****###################################*********************************************************************###############################################################################################################################################################*************###########***************##########################################################################################################*************************************************##########################################################################******************************************###############################################################################************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************++++++++++++++++++++++++++++++++====================================================-------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::..........................
................................................................................................................................................::::::::::...........:::::::....................................................................::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::------------------------==============++++++++++++++++++++++++++++++++++++++++++++++++++++===--:::............................................................................................................................................................................. .................:::--===========================--:::........:::---===============================--:::.................................................................................................................:::::::::::::::::::::::::------============--------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::..........................................................:#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####################%%%############################################################################*=*########################################***********************************===============+********************+==**=======================+*===++++++++++++++++++++++++++++++++=========++++++++===========-:::::::::::::::::::::::::::::----------------------:::::::::::::::::::::::::::::::::::::::::::.................:::::::::----------------------------------------------::::........................::::::......................................::::------::::::::::::::::-------------------:::::::::::::::::::-----::::::::-------------------------------------:::...........................................................................................................................................................................::::::::::::..........................:::............................................................................................................:::--====================================================================================++++++++++++++******##########**++=============================================-==========++++****##############################################################################################################################################################################################################**####################################**********************************************************************##############################################################################################################################################################*************###########***************#####################################################################################################*****************************************************##########################################################################*************************************#####################################################################################*************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************++++++++++++++++++++++++++++++++====================================================------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::..........................
.................................................................................................................................................::::::::::..........:::::::....................................................................:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-----------------------===============+++++++++++++++++++++++++++++++++++++++++++++++++++++===--:::............................................................................................................................................................................. ....................:::---==========================--:::........:::--===================++++========---::..................................................................................................................:::::::::::::::::::::::::-----=============--------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::........................................................-%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####################%%%%###########################################################################*+*########################################***********************************================+********************===+*=======================*+==++++++++++++++++++******+++++++++==++++++++++++++============-:::::::::::::::::::::::::::::----------------------::::::::::::::::::::::::::::::::::::::::::: ................::::::::----------------------------------------------::::........................:::::.......................................::::-----::::::::::::::::::::::::::------------::::::::::::::::::---::::::::::::---------------------------------::::...........................................................................................................................................................................::::::::::::::........................::::...........................................................................................................:::--====================================================================================+++++++++++++++******#########**++=========================================================++++****###################################################################################################################################################################################################################################################**********************************************************************##############################################################################################################################################################*************############**************###############################################################################################**********************************************************###########################################################################***********************************#######################################################################################*************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************++++++++++++++++++++++++++++++++====================================================-------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::..........................
.................................................................................................................................................:::::::::::..........:::::::................................................................:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-----------------------=================++++++++++++++++++++++++++++++++++++++++++++++++++++++===--:::............................................................................................................................................................................. .......................:::---===========================--::.......:::--==============++++++++++++======--:::..................................................................................................................:::::::::::::::::::::::::-----=============-------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.......................................................+%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####################%%%%###########################################################################++########################################***********************************==================*******************+===**======================+*===++++++++++++++++*********++++++++++++++++++++================-:::::::::::::::::::::::::::::----------------------::::::::::::::::::::::::::::::::::::::::::.................:::::::::---------------------------------------------::::........................::::........................................::::----::::::::::::::::::::::::::::::---------:::::::::::::::::::::::::::::::::::-------------------------------::::...........................................................................................................................................................................::::::::::::::........................::::...........................................................................................................:::--====================================================================================++++++++++++++++******########**+++=========================================================++++****#################################################################################################################################################################################################################################################************************************************************************#############################################################################################################################################################*************############***************##########################################################################################************************************************************#############################################################################******************************############################################################################################**************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+++++++++++++++++++++++++++++++====================================================-------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::..........................
..................................................................................................................................................:::::::::::.........:::::::............................................................:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-----------------------==================+++++++++++++++++++++++++++++++++++++++++++++++++++++++===--:::............................................................................................................................................................................. ........................::---===========================--:::......:::--=======+=+++++++++++++++++=====--:::...................................................................................................................:::::::::::::::::::::::::-----============-------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::----:::::::::......................................................:*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######################%%%###########################################################################+=########################################***********************************+==================+******************====+*======================*+==++++++++++++++++********=-:-+++++++++++=+++===================-:::::::::::::::::::::::::::::-----------------::--:::::::::::::::::::::::::::::::::::::::::::.................::::::::---------------------------------------------::::........................::::........................................::::----::::::.....:::::::::::::::::::::::::::::::::::::::::::-::::::::::::::::::::-----------------------------:::::............................................................................................................................................................................:::::::::::::.......................::::::..........................................................................................................::---=====================================================================================++++++++++++++++******#######***++============================================-=============++++****################################################################################################################################################################################################################################################************************************************************************#############################################################################################################################################################*************############***************######################################################################################***************************************************************##############################################################################************************##################################################################################################**************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+++++++++++++++++++++++++++++++====================================================-------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::..........................
...................................................................................................................................................::::::::::.........:::::::........................................................::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::----------------------===================++++++++++++++++++++++++++++++++++++++++++++++++++++++++===--:::.................................................................................................................................................................................. .............................::---===========================---::.....:::--=====+++++++++++++++++++++++===---::....................................................................................................................:::::::::::::::::::::::::-----============------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-----------:::::.....................................................:#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%@%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####################%%%%##########################################################################*=*###*##*#######**######################************************************+===================+****+************+====**=====================+*+=+++++++++++++++*********-::::=++++++===========================:::::::::::::::::::::::::::::::-----------------:::::::::::::::::::::::::::::::::..::::::::::.................:::::::::--------------------------------------------:::..........................::.........................................::::----::::::...........::::::::::::::::::::::::::::::::::::::::::-::::::::::::::::----------------------------:::::............................................................................................................................................................................:::::::::::::.......................::::::..........................................................................................................::---======================================================================================++++++++++++++++******######***++============================================================+++****###############################################################################################################################################################################################################################################*************************************************************************############################################################################################################################################################*************############***************######################################################################################************************************************************################################################################################*********************#######################################################################################################**************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+++++++++++++++++++++++++++++++====================================================-------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.........................
...................................................................................................................................................:::::::::::........:::::::........................................................::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-----------------------====================++++++++++++++++++++++++++++++++++++++++++++++++++++++++===--:::................................................................................................................................................................................. .............................:::--============================--:::...:::--=====+++++++++++++++++++++++====--:::....................................................................................................................:::::::::::::::::::::::::-----============------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::------------::::.....................................................=%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####################%%%%##########################################################################*++#*##*#**##******######################************************************+===================+******************+====+*=====================++==+++++++++++++++*******+-:::::=+++++===========================-::::::::::::::::::::::::::::::------------::::::::::::::::::::::::::::::::::::::: ::::::::::. ...............::::::::::------------------------------------------::::..........................:..........................................::::----:::::...............:::::::::::::::::::::::-:::::::::::--::-::::::::::::::::::--------------------------:::::............................................................................................................................................................................::::::::::::::......................::::::..........................................................................................................::--=======================================================================================+++++++++++++++++******#####***++=============================================================+++****##############################################################################################################################################################################################################################################*************************************************************************############################################################################################################################################################*************############***************##################################################################################***************************************************************################################################################################*******************##########################################################################################################**************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+++++++++++++++++++++++++++++++====================================================--------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.........................
....................................................................................................................................................:::::::::::.......::::::::.....................................................::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::----------------------=======================++++++++++++++++++++++++++++++++++++++++++++++++++++++++===--:::..................................................................................................................................................................................................................:::--============================--:::::::::--====++++++++++++++++++++++++===--:::....................................................................................................................::::::::::::::::::::::::::-----============-----------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::------------::::.....................................................+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####################%%%###########################################################################++#*##**#**************#################************************************+====================+******************+====+*====================+*+=+++++++++++++++*******+-:-=+++++++=============================::::::::::::::::::::::::::::::::-------:-:::::::::::::::::::::::::::::::::::::::: .::::::::::.................::::::::::-----------------------------------------::::..........................:..........................................:::::---:::::..................::::::::::::::::::::-:::::::::::--:--::::::::::::::::::-------------------------::::::............................................................................................................................................................................::::::::::::::......................::::::..........................................................................................................::--========================================================================================+++++++++++++++++*****#####***++==============================================================++++***#############################################################################################################################################################################################################################################*************************************************************************############################################################################################################################################################*************############***************##############################################################################***************************************************************####################################################################################****************#############################################################################################################***************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+++++++++++++++++++++++++++++++===================================================--------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.........................
.....................................................................................................................................................::::::::::::.....::::::::..................................................::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-----------------------=========================++++++++++++++++++++++++++++++++++++++++++++++++++++++++===--:::..................................................................................................................................................................................................................:::--=============================--:::::::--====+++++++++++++++++++++++++===--:::....................................................................................................................:::::::::::::::::::::::::::----============-----------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--------------:::....................................................:*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####################%%%%##########################################################################*=*####*#******************#############*************************************====================++******************+====**====================*+++++++++++++++++*******+--+++++++++=============================-:::::::::::::::::::::::::::::::---------::::::::::::::::::::::::::::::::::::::::: ::::::::::: ...............::::::::::-----------------------------------------::::......................................................................:::::--::::.....................:::::::::::::::::::::---::::::--::-::::::::...:::::::::--------------------:::::::::............................................................................................................................................................................::::::::::::::......................::::::..........................................................................................................::--=========================================================================================++++++++++++++++*****######**++===============================================================++++****###########################################################################################################################################################################################################################################*************************************************************************############################################################################################################################################################*************############****************###########################################################################**************************************************************#######################################################################################*************################################################################################################################***************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+++++++++++++++++++++++++++++++====================================================-------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.........................
......................................................................................................................................................::::::::::::.....:::::::..................................................::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-----------------------===========================+++++++++++++++++++++++++++++++++++++++++++++++++++++++====--:::...................................................................................................................................................................................................................::---===================++=======--::::::--====++++++++++++++++++++++++++===-:::.....................................................................................................................:::::::::::::::::::::::::::----============----------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--------------:::....................................................-#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###################%%%##########################################################################*++##*#*##********************#########**************************************+=================++++*****+*************+====**===================+*++++++++++++++++*******++++++++++++==============================-::::::::::::::::::::::::::::::::-------::::::::::::::::::::::::::::::::::::::::: .::::::::::.................::::::::::----------------------------------------::::......................................................................:::::---:::.........................::::::::::::::::::::--------::-:::::::......::::::::---------------:::::::::::::.............................................................................................................................................................................:::::::::::::.....................:::::::..........................................................................................................::--==========================================================================================++++++++++++++++*****#####**++=====================================================-===========++++****#########################################################################################################################################################################################################################################*************************************************************************############################################################################################################################################################*************############****************###############################################################***********************************************************************##########################################################################################**********####################################################################################################################***************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+++++++++++++++++++++++++++++++===================================================--------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.........................
.......................................................................................................................................................:::::--::::::...::::::::..............................................:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-----------------------============================++++++++++++++++++++++++++++++++++++++++++++++++++++++++====--:::...................................................................................................................................................................................................................::---==================++++++====----::----===++++++++++++++++++++++++++===--:::....................................................................................................................::::::::::::::::::::::::::::----============----------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---------------:::....................................................=%@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###################%%%%##########################################################################++*#*#*************************#######**************************************+================++++++*******************+====*+===================*++++++++++++++++*******++++++++++++==============================--::::::::::::::::::::::::::::::::-----::::::::::::::::::::::::::::::::::::::::::: .:::::::::: ...............:::::::::::---------------------------------------::::......................................................................::::::-:::::...........................::::::::::::::::::::-----::-:::::::.......:::::::::-----------::::::::::::::::............................................................................................................................................................................:::::::::::::.....................::::::::.........................................................................................................::--===============================================================================================++++++++++++****#####**++=====================================================-============++++*****#######################################################################################################################################################################################################################################*************************************************************************############################################################################################################################################################*************############****************################################################************************************************************************************#############################################################################################******#######################################################################################################################****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************++++++++++++++++++++++++++++++====================================================-------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.........................
.......................................................................................................................................................:::::---::::::::::::::::...........................................::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-----------------------=============================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++===---:::...................................................................................................................................................................................................................:::--===============+++++++++=====-------====+++++++++++++++++++++++++++===-:::...................................................................................................................::::::::::::::::::::::::::::::----============----------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--------------::::....................................................+%@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###################%%%##########################################################################*=*#*#**#************************#####***************************************+==============++++++++*****+*************+====*+==================+*+++++++++++++++*******+++++++++++++===============================-::::::::::::::::::::::::::::::::---:::::::::::::::::::::::::::::::::::::.....::. ::::::::::................:::::::::::---------------------------------------::::......................................................................::::::-:::::..............................::::::::::::::::::::::::::::::::........:::::::::::::::::::::::::::::::::::::::::::::::.................................................................................................................................................................::::::::::::.....................::::::::.........................................................................................................::--=================================================================================================+++++++++++****####**++====================================================================++++******####################################################################################################################################################################################################################################*************************************************************************############################################################################################################################################################*************############****************####################################**********************************************************************************************#############################################################################################################################*****##########################################################################################****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+++++++++++++++++++++++++++++++===================================================--------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.........................
........................................................................................................................................................::::---::::::::::::::::.........................................::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-----------------------==============================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===---:::...................................................................................................................................................................................................................:::--=============++++++++++++=====-----====++++++++++++++++++++++++++++==--::...................................................................................................................:::::::::::::::::::::::::::::::----============----------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--------------::::................:::::::::::.........................*@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###################%%%%#########################################################################*=*####*#************************####****************************************+============++++++++++*****++************+=====*+==================*++++++++++++++++******+++++++++++++===============================-:::::::::::::::::::::::::::::::::---:::::::::::::::::::::::::::::::::::.......:. .::::::::::................:::::::::::--------------------------------------::::......................................................................::::::::::::.................................::::::::::::::::::::::::::::...........:::::::::::::::::::::::::::::::::::::::::::::::::::::.........................................................................................................................................................::::::::::::.....................::::::::.........................................................................................................::--==================================================================================================++++++++++****####***+========================================================----=-=======+++++******##################################################################################################################################################################################################################################**************************************************************************###########################################################################################################################################################*************############****************#################################*************************************************************************************************############################################################################################################################*******#########################################################################################****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+++++++++++++++++++++++++++++++====================================================-------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.........................
........................................................................................................................................................:::::----:::::::::::::::........................................:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-----------------------===============================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===--:::....................................................................................................................................................................................................................:::--===========+++++++++++++++=============+++++++++++++++++++++++++++===-:::.................................................................................................................:::::::::::::::::::::::::::::::::----============---------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::----------------::::...............::::::::::::::......................:#@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####################%%%##########################################################################++##*#*###*******************************************************************=============++++++++++*****++************+====+*+=================+*+++++++++++++++*****+++++++++++++++==============================-::::::::::::::::::::::::::::::::::--:::::::::::::::::::::::::::::::::::.. .::. :::.::::::.........:.......:::::::::---------------------------------------::::.......................................................................::::::::::......................................::::::::::::::::::::::::............::::::::::::::::::::::::::::::::::::::::::::::::::::..::.....................................................................................................................................................::::::::::::.....................::::::::.........................................................................................................::--====================================================================================================++++++++****####***+========================================================-----==========+++++*******###############################################################################################################################################################################################################################************************************************************************#############################################################################################################################################################*************############*****************###########################*****************************************************************************************************############################################################################################################################********################################################################****######################****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+++++++++++++++++++++++++++++++====================================================-------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::........................
.........................................................................................................................................................::::-----::::::::::::::......................................:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-----------------------=================================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===--:::.....................................................................................................................................................................................................................::--==========+++++++++++++++++==========+++++++++++++++++++++++++++++==--::..................................................................................................................:::::::::::::::::::::::::::::::::----============---------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::----------------::::...............::::::::::::::::....................-%@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####################%%%##########################################################################++*###*###*******************************************************************+===========+++++++++++*****+++************+====+*+=================*+=++++++++++++++****+++++++++++++++===============================-::::::::::::::::::::::::::::::::::-:::::::::::::::::::::::::::::::::::.. .:. .::..::::::........:.......::::::::::--------------------------------------:::........................................................................::::::::::..........................................:::::::::::::::::::................::::::::::::::::::.........:::::::::::::::::::::::::::::...................................................................................................................................................:::::::::::.....................::::::::........................................................................................................:::--====================================================================================================+++++++++***####***++====================================================------------========+++++******###############################################################################################################################################################################################################################***********************************************************************#############################################################################################################################################################*************############*****************#######################*********************************************************************************************************############################################################################################################################*********############################################################*******######################****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+++++++++++++++++++++++++++++++====================================================-------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::........................
.........................................................................................................................................................:::::-----:::::::::::::....................................:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-----------------------==================================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++====--:::.....................................................................................................................................................................................................................::--==========++++++++++++++++++========+++++++++++++++++++++++++++++===-:::................................................................................................................:::::::::::::::::::::::::::::::::::---=============---------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::----------------::::..............::::--------:::::::.................:+@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####################%%%#############################################%###########################*=**##*####******************************************************************+==========+++++++++++++*****++*************=====+*+================+*+=++++++++++++++**+++++++++++++++++==============================--:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.. .:. .:. ::::::........:........:::::::::--------------------------------------:::........................................................................::::::::::.............................................:::::::::::::::........................:::::......................:::::::::::::::::::::::::::...............................................................................................................................................::::::::::.....................::::::::........................................................................................................:::--====================================================================================================+++++++++***####***++==================================================---------------=========+++++******#############################################################################################################################################################################################################################**********************************************************************##############################################################################################################################################################*************############******************###############***************************************************************************************************************#############################################################################################################################*********###########################################################********######################****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+++++++++++++++++++++++++++++++====================================================-------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::........................
..........................................................................................................................................................:::::-----:::::::::::::.............................::.:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::------------------------====================================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++====--:::.....................................................................................................................................................................................................................:::--=======++++++++++++++++++++++====+++++++++++++++++++++++++++++++==--::................................................................................................................::::::::::::::::::::::::::::::::::::---=============---------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-----------------::::.............::::-----------:::::::..............:=*@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####################%%%##########################################################################=+##########***************************+++***********************************==========+++++++++++++*****+++************+=====+*=================*+=++++++++++++++**+++++++++++++++++===============================--::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.. .:. :: .::::::.......::.......::::::::::-------------------------------------:::.........................................................................:::::::::................................................:::::::::::........................................................::::::::::::::::::::::::::::...........................................................................................................................................:::::::::.....................::::::::........................................................................................................::---=====================================================================================================++++++++****####**++================================================-------------------=========+++++******###########################################################################################################################################################################################################################**********************************************************************##############################################################################################################################################################*************############*******************#########*******************************************************************************************************************##############################################################################################################################*********########################################################***********######################*****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************++++++++++++++++++++++++++++++=====================================================-------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::........................
..........................................................................................................................................................:::::------:::::::::::::...........................:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-------------------------====================================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===---:::.....................................................................................................................................................................................................................:::--=====++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==--::.................................................................................................................::::::::::::::::::::::::::::::::::::---=============---------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::------------------::::......::...:::::--------------::::::::::::......-=+#@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####################%%%#############################################%###########################++###########**************************+==++*********************************+=========++++++++++++++*****++++***********+=====**================+*+=+++++++++++++++++++++++++++++++++===============================-:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::..:::::... .:. .:. ::::::. ......:........:::::::::------------------------------------::::..........................................................................::::::::......................................................................................................................::::::::::::::::::::::::::::::......................................................................................................................................:::::::::.....................::::::::........................................................................................................::---======================================================================================================+++++++****####**++================================================----------------------========++++++*****#########################################################################################################################################################################################################################*********************************************************************###############################################################################################################################################################*************############***********************************************************************************************************************************************##############################################################################################################################**********################################################******************######################******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************++++++++++++++++++++++++++++++====================================================-------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::........................
...........................................................................................................................................................:::::------::::::::::::..........................::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::------------------------=======================================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===---:::......................................................................................................................................................................................................................::--=====+++++++++++++++++++++++++++++++++++++++++++++++++++++++++===--::.................................................................................................................:::::::::::::::::::::::::::::::::::----=============---------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::------------------:::::..::::::::::::::---------------:::::::::::::-==++++%@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####################%%%#############################################%###########################*+*##########**************************+====+++******************************+=========+++++++++++++++*****+++***********+=====+*+================**==++++++++++++++++++++++++++++++++===============================-:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::...::::... .:: .: .::::::. .....:........:::::::::------------------------------------::::...........................................................................::::::...........................................................................................................................::::::::::::::::::::::::::::::..................................................................................................................................:::::::::.....................::::::::........................................................................................................::--=======================================================================================================+++++++****####**++==============================================-------------------------=========+++++******#######################################################################################################################################################################################################################********************************************************************#################################################################################################################################################################************############**********************************************************************************************************************************************###############################################################################################################################**********#########################################*************************######################******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************++++++++++++++++++++++++++++++====================================================--------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::........................
............................................................................................................................................................:::::------:::::::::::........................::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::------------------------=========================================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===---:::......................................................................................................................................................................................................................::---====+++++++++++++++++++++++++++++++++++++++++++++++++++++++++==--::.................................................................................................................::::::::::::::::::::::::::::::::::::----=============---------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::------------------::::::::::::::::::::--------------------::::::-=*%%@@%*+%@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####################%%%########################################################################*+*##########**************************+=======++*****************************======++++++++++++++++++******+++***********+=====+*+===============+*+++++++++++++++++++++++++++++++++++==============================-::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.....:::... .:. :. ::::::: ...............:::::::::-----------------------------------::::.............................................................................::.....................................................................................................................................::::::::::::::::::::::::::::............................................................................................................................:::::::::.....................::::::::........................................................................................................::--========================================================================================================+++++++***####**++============================================-----------------------------=========+++++******#####################################################################################################################################################################################################################*******************************************************************##################################################################################################################################################################************############*********************************************************************************************************************************************################################################################################################################################**********##################################********************************######################*******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+++++++++++++++++++++++++++++=====================================================-------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::........................
.............................................................................................................................................................:::::------:::::::::::.....................::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--------------------------=======================================+=+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===---::.......................................................................................................................................................................................................................:::--====++++++++++++++++++++++++++++++++++++++++++++++++++++++++==--:::................................................................................................................:::::::::::::::::::::::::::::::::::::----=============---------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::------------------::::::::::::::::::--------------------------:=*%@@@@@@@%%@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####################%%%#############################################%###########################++##########**************************+=========+****************************+==++++++++++++++++++++++*****+++++**********++====+*+===============+*=+++++++++++++++++++++++++++++++++==============================-:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.......::.... .:: .. .::::::................:::::::::-----------------------------------::::........................................................................................................................................................................................................................::::::::::::::::::::::::::..........................................................................................................................:::::::::.....................:::::::::.......................................................................................................::--========================================================================================================+++++++****###**++============================================-------------------------------=========+++++******###################################################################################################################################################################################################################******************************************************************###################################################################################################################################################################*************##########********************************************************************************************************************************************##################################################################################################################################**********##############################************************************######################*************************************************************##############****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+++++++++++++++++++++++++++++=====================================================-------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::........................
.............................................................................................................................................................::::::-------:::::::::.....................::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--------------------------==========================================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===--:::........................................................................................................................................................................................................................::--====+++++++++++++++++++++++++++++++++++++++++++++++++++++++==--:::.................................................................................................................:::::::::::::::::::::::::::::::::::::----============----------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---------------------::::::::-----------------------------------=%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####%%%%%%%%%%%%%%%%%@%%%%%%%%%%%%#%%%%%%%%%%%%%%%%%%%%%####################%%%%############################################%###########################++*#*#########************************+==========+***************************+++++++++++++++++++++++++******++++***********++=+=++*===============+*+++++++++++++++++++++++++++++++++++=======================--====-::::::::::::::::::::::::::::::::::::::::::::::::::::::::::... ........ ..::. . :::::::................::::::::-----------------------------------::::..........................................................................................................................................................................................................................:::::::::::::::::::::::::::.......................................................................................................................:::::::::....................::::::::::.......................................................................................................::--=========================================================================================================++++++****###**++=========================================------------------------------------=========+++++*****###################################################################################################################################################################################################################*****************************************************************####################################################################################################################################################################************#########*******************************************************************************************************************************************###################################################################################################################################***********######################********************************************######################**********************************************************##################****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+++++++++++++++++++++++++++++===================================================---------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.......................
..............................................................................................................................................................::::::-------::::::::...................:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--------------------------==========================================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++====--:::........................................................................................................................................................................................................................:::--===++++++++++++++++++++++++++++++++++++++++++++++++++++++==--::::.................................................................................................................:::::::::::::::::::::::::::::::::::::----============----------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::----------------------::::::------------------------------------+%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###%%%%%%%%%%%%%%%%%%@%%%%%%%%%%%###%%%%%%%%%%%%%%%%%%%%#####################%%%########################################################################*+*############************************==========+***************************+++++++=++++++++++++++++++******+++++**********++++=+*+===============+*=+++++++++++++++++++++++++++++++++=======================---===-:::::::::::::::::::::::::::::::::::::::::::::::::::::::::... ......... ..::: . .::::::. ..............::::::::--:--------------------------------::::..............................................................................................................................................................................................................................::::::::::::::::::::::::......................................................................................................................:::::::::....................::::::::::.......................................................................................................::--===========================================================================================================+++++********++===---===================================--------------------------------------========+++++******#################################################################################################################################################################################################################*****************************************************************##################################################################################**#################################################################################***********########******************************************************************************************************************************************#####################################################################################################################################***********################**************************************************######################********************************************************#####################***************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+++++++++++++++++++++++++++++===================================================---------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.......................
...............................................................................................................................................................:::::--------::::::::................:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--------------------------===========================================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++====--:::.........................................................................................................................................................................................................................::--===++++++++++++++++++++++++++++++++++++++++++++++++++++===--:::...................................................................................................................:::::::::::::::::::::::::::::::::::::----============----------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::----------------------:::::------------------------------------+%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%##%%%%%%%%%%%%%%%%%%%%%@%%%%%%%%%#####%%%%%%%%%%%%%%%%%%%%%####################%%%#############################################%##########################*++#############***********************+=========+*+**********+++*************++++++=+++++++++++++++++++*****+=+++***********++++=+*+==============+*+++++++++++++++++++==++++++++++++++======================----==-::::::::::::::::::::::::::::::::::::::::::::::::::::::::.... ........ ....::. .:::::::...............:::::::::-:--------------------------------::::....................................................................................................................................................................................................................................:::::::::::::::::::::...................................................................................................................:::::::::....................:::::-::::......................................................................................................:::--============================================================================================================+++++*******++==-----=================================----------------------------------------=========+++++******################################################################################################################################################################################################################****************************************************************##########################################################******################********############################################################################**********************************************************************************************************************************************************#########################################################################################################################################***********############******************************************************######################***************************************************############################*************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+++++++++++++++++++++++++++++====================================================---------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.......................
................................................................................................................................................................:::::--------:::::::...............:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---------------------------============================================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===---:::.........................................................................................................................................................................................................................::---==+++++++++++++++++++++++++++++++++++++++++++++++++++===--:::....................................................................................................................:::::::::::::::::::::::::::::::::::::----============---------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--------------------------:::------------------------------------=%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%###%%%%%%%%%%%%%%%%%%%%%@%%%%%%%%######%%%%%%%%%%%%%%%%%%%%%#####################%%%############################################%###########################++*#############**********************+==========+++*+++++++++++++***********++++++++++++++++++++++++++******++++***+***+***+++++=+*===============**=+++++++++++++++=====+++++++++++++=======================----==-:::::::::::::::::::::::::::::::::::.:::::::::::::::::...... .............:::: .::::::. ..............::::::::----------------------------------::::......................................................................................................................................................................................................................................::::::::::::::::::::::................................................................................................................::::::::::...................::::--::::......................................................................................................:::--=============================================================================================================+++++*****++===------================================------------------------------------------=========+++++******##############################################################################################################################################################################################################****************************************************************######################################################*************##########***********############################################################################********************************************************************************************************************************************************###########################################################################################################################################************##########*******************************************************######################***********************************************#################################*************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+++++++++++++++++++++++++++++===================================================---------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.......................
................................................................................................................................................................::::::--------:::::::...........:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--------------------------=============================================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++====---:::..........................................................................................................................................................................................................................::--===+++++++++++++++++++++++++++++++++++++++++++++++++===--:::......................................................................................................................::::::::::::::::::::::::::::::::::::----============---------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::------------------------------------------------------------------=#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%####%%%%%%%%%%%%%%%%%%%%%@%%%%%%%#######%%%%%%%%%%%%%%%%%%%%%#####################%%%########################################################################++*#############**********************+==========++++++++++++++++++**********++++++++++++++++++++++++++*******++++**++**+****++++=+*+============+=+*+++++++++++++++========+++++++++++========================----==-:::::::::::::::::::::::::::::::.::..::::::::::::::......... ............:::::. .:::::::...............::::::::----------------------------------::::.......................................................................................................................................................................................................................................:::::::::::::::::::::::::............................................................................................................::::::::::...................::::--::::......................................................................................................:::--================================================================================================================++++++++===---------==============================--------------------------------------------=========+++++*****##############################################################################################################################################################################################################**************************************************************#####################################################****************#######**************##########################################################################*******************************************************************************************************************************************************#############################################################################################################################################************#########********************************************************#######################******************************************#####################################*************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************++++++++++++++++++++++++++++++==================================================----------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.......................
.................................................................................................................................................................::::::-------:::::::........::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--------------------------==============================================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=====---:::..........................................................................................................................................................................................................................:::-===++++++++++++++++++++++++++++++++++++++++++++++++===--:::.......................................................................................................................::::::::::::::::::::::::::::::::::::---=============---------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---------------------------------------------------------------------*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%###%%%%%%%%%%%%%%##%%%%%%@%%%%%%#########%%%%%%%%%%%%%%%%%%%%%#####################%%%############################################%##########################*+*##############*********************++=========+*++++++++++++++++++********+++++++++++++++++++++++++++*******+++++*++++****+++++++*+============+=**+++++++++++++==========+++++++++++========================---===-::::::::::::::::::::::::::::::..:............::......:::.. .........:::::::: .::::::................:::::::----------------------------------::::........................................................................................................................................................................................................................................::::::::::::::::::::::::::::........................................................................................................::::::::::.........:.........::::--::::......................................................................................................::---===================================================================================================================++++===------------===========================-----------------------------------------------=========+++++*****#############################################################################################################################################################################################################***********************************************************######################################################*******************####**************##########################################################################******************************************************************************************************************************************************###############################################################################################################################################************#########********************************************************#######################*****************************************######################################**************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+++++++++++++++++++++++++++++==================================================----------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::......................
..................................................................................................................................................................::::::-------:::::::.....::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---------------------------===============================================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=====--::::...........................................................................................................................................................................................................................::--==+++++++++++++++++++++++++++++++++++++++++++++++==---:::........................................................................................................................:::::::::::::::::::::::::::::::::::----=============---------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::------------------------------------------------------------------------+%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%######%%%%%%%%%%%%%###%%%%%%%%%%%%#########%%%%%%%%%%%%%%%%%%%%%%#####################%%%############################################%##########################*++*##############********************++=========+*+++++++++++++++++++++++****++++++++++++++++++++++++++*******+++++*+++++++++++++=+*++===========+=+*+++++++++++++============+++++++++=======================------=--:::::::::::::::::::::::::::::....................:::::::. ........::::::::. .:::::::...............::::::::---------------------------------::::........................................................................................................................................................................................................................................:::::::::::.....::::::::::::::::....................................................................................................::::::::::.........::........::::--::::......................................................................................................::---========================================================================================================================-----------------========================------------------------------------------------==========++++++****###########################################################################################################################################################################################################**********************************************************######################################################**************************************######################################################################******************************************************************************************************************************************************###################################################################################################################################################*************#########*******************************************************#######################****************************************######################################****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+++++++++++++++++++++++++++++==================================================---------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::......................
...................................................................................................................................................................::::::------:::::::::...::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---------------------------================================================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=====---::::...........................................................................................................................................................................................................................:::--==+++++++++++++++++++++++++++++++++++++++++++++===--:::.........................................................................................................................:::::::::::::::::::::::::::::::::::----=============--------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-----------------------------------------------------------------------=%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%#######%%%%%%%%%%%%%%###%%%%%#%@%%%%#########%%%%%%%%%%%%%%%%%%%%%%#####################%%%############################################%###########################++*###############*******************++=========+*+++++++++++++++++++++++****+++++++++++++++++++++++++++*******+++*+*++**++++++++=++*+=======+==+=++**+=++++++++++============+++++++++======================--=-----=-::::::::::::::::::::::::::::::........ ....::::::::::.. ........::::::::: .::::::...............:::::::::--------------------------------::::.......................................................................................................................................................................................................................................:::::::::::..........::::::::::::::..................................................................................................::::::::::.........::........::::--::::......................................................................................................::---===============================================================================================================----------------------------=====================---------------------------------------------------===========+++++***##########################################################################################################################################################################################################*********************************************************#######################################################*************************************#################################################################**********************************************************************************************************************************************************#####################################################################################################################################################*************#########*******************************************************#######################***************************************######################################*****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+++++++++++++++++++++++++++++==================================================----------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::......................
...................................................................................................................................................................:::::::------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-----------------------------=================================================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++======----:::.............................................................................................................................................................................................................................::--===++++++++++++++++*++++++++++++++++++++++++++===--:::........................................................................................................................:::::::::::::::::::::::::::::::::::::----==============--------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-------------------------------------------------------------------------#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%######%%##%#%%%%%%#%%%###%%%%%%%@%%%####%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####################%%%#######################################################################*+*###############*******************+++========+*+++++++++++++++++++++++****+++++++++++++++++++++++++++********++++++++++++++++++=+**+=+=========+++*++++++++++++=============++++++++=====================-=--=-------::::::::::::::::::::....:....:...... ..:::::::::::.. ........:::::::::. .:::::::...............::::::::--------------------------------::::.......................................................................................................................................................................................................................................::::::::::..............:::::::::::::::..............................................................................................::::::::::.........::........::::--::::......................................................................................................::---==============================================================================================================----------:::::----------------=----------======--------------------------------------------------------==========++++****#################################################***#####################################################################################################################################################******************************************************########################################################************************************###########################################################******************************************************************************************************************************************##**##########################################################################################################################################################################*************#########*******************************************************######################***************************************####################################********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************++++++++++++++++++++++++++++==================================================----------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.......................
....................................................................................................................................................................::::::------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::----------------------------==================================================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=========---::::..............................................................................................................................................................................................................................::--==++++++++++++++++++++++++++++++++++++++++++===--:::.........................................................................................................................:::::::::::::::::::::::::::::::::::::----==============--------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::--------------------------------------------------------------------------+%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%######%%##%%%%%%%%##%%###%%%%%%%@%%%###%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####################%%%############################################%##########################*++################******************++++========+++++++++++=++++++++++++*****+++++++++++++++++++++++++++********++++++*++++++++++=++*+=+=+=======+++**+++++++++++==============+++++++=====================-----=------::::::::::::::::.................... ..:::::::::::.. ........:::::::::: :::::::...............::::::::--------------------------------::::.......................................................................................................................................................................................................................................:::::-::::................::::::::::::::::...........................................................................................::::::::::........:::........::::--::::......................................................................................................::---==============================================================================================================---:::::::::::::----------------------------====----------------------------------------------------------==========+++****##############################################********##################################################################################################################################################*****************************************************########################################################************************************########################################################************************************************************************************************************************************########################################################################################################################################################################################*************##########******************************************************######################****************************************#################################**********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************++++++++++++++++++++++++++++==================================================----------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.......................
.....................................................................................................................................................................:::::::----:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---------------------------====================================================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++=========-----::::..............................................................................................................................................................................................................................:::--==++++++++++++++++++++++++++++++++++++++++===--:::..........................................................................................................................::::::::::::::::::::::::::::::::::::-----==============--------:::::::::::::::::::::::::::::::::::::::::::::::::::::::---------------------------------------------------------------------------=%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%#######%%%##%%%%%%###%%###%%%%%%%@%%%##%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####################%%%###########################################%##########################*++*################*****************++++++======+++++++++++-=++++++++++++****+++++++++++++++++++++++++++*********++++++++++++++++=+=+*+++++++====++++*++++++++++++=============+++++++=====================-----==-----::::::::::::::...................... ..:::::::::::.. .........::::::::::. .:::::::..............::::::::--------------------------------::::......................................................................................................................................................................................................................................::::---:::.....................:::::::::::::::........................................................................................::::::::::........::::.......::::--::::......................................................................................................::--===============================================================================================================---:::::::::::::------------------------------------------------------------------------------------------------======+++***############################################***********################################################################################################################################################*****************************************************######################################################************************************##################################################*******************************************************************************************************************************####################################################################################################################################################################################################**************##########******************************************************######################*****************************************#############################**************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************++++++++++++++++++++++++++++=================================================-----------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.......................
.....................................................................................................................................................................::::::::----::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-----------------------------======================================================++++++++++++++++++++++++++++++++++++++++++++++++++++=============------::::...............................................................................................................................................................................................................................:::--==+++++++++++++++++++++++++++++++++++++++==--:::.......................................................................................................................::::::::::::::::::::::::::::::::::::::::----===============-------::::::::::::::::::::::::::::::::::::::::::::::::::::-------------------------------------------------------------------------------*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%########%%###%%%%%##%%####%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####################%%%###########################################%###########################++*################******************+++++======+*+++++++++=-=+++++++++++*****++++++++++++++++++++++++++**********+++++++++++**++++++*+=+=++++++==+++**+++++++++++==============++++++====================------===----::::::::::::....................... ...:::::::::::.. .........:::::::::::: .:::::::...............:::::::::------------------------------:::.......................................................................................................................................................................................................................................::::---:::........................:::::::::::::::.....................................................................................::::::::::.......:::::.......::::---:::......................................................................................................::--===============================================================================================================--::::.....::::::--------------------------------------------------------------------------------------------------====+++***###########################################************###############################################################################################################################################**************************************************######################################################**************************************########################################*************************************************************************************************************************##*##############################################################################################%%%%%%%#############################################################################################################**************###########*****************************************************######################******************************************########################******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************++++++++++++++++++++++++++++==================================================----------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.......................
......................................................................................................................................................................::::::::---:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-----------------------------=======================================================++++++++++++++++++++++++++++++++++++++++++++++++++=============-------:::::................................................................................................................................................................................................................................:::--==++++++++++++++****+++++++++++++++++++==--:::......................................................................................................................::::::::::::::::::::::::::::::::::::::::::----===============-------::::::::::::::::::::::::::::::::::::::::::::::::::--------------------------------------------------------------------------------=%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%########%%##%%%%####%%%%##%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####################%%%%%%#########################################%##########################*++################******************++++++=====+*+++++++++=--=+++++++++***********************++++++++++*********+++++++++++**+++++++*++=+++++====+++*+++++++++++==============++++++===================-------===----::::::::::::....................... .....:::::::::..............::::::::::::. .:::::::..............::::::::::-----------------------------:::.......................................................................................................................................................................................................................................:::----:::..........................:::::::::::::::...................................................................................::::::::::.......::::::......:::----:::......................................................................................................::--===============================================================================================================--::::......:::::--------------------------===-----------------------------------------------------------------------===+++****#########################################************###############################################################################################################################################**************************************************#######################################****************************************************#################################***********************************************************************************************************************########################################################################################################%%%%%%%%%%%############################################################################################################**************###########*****************************************************######################*******************************************#####################*********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************++++++++++++++++++++++++++++=================================================-----------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.......................
......................................................................................................................................................................:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-----------------------------=======================================================++++++++++++++++++++++++++++++++++++++++++++++++++=============-------::::::.................................................................................................................................................................................................................................::--===+++++++++++******++++++++++++++++++==--:::......................................................................................................................:::::::::::::::::::::::::::::::::::::::::::----===============--------::::::::::::::::::::::::::::::::::::::::::::::::---------------------------------------------------------------------------------+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%########%%##%%%####%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######################%%%%%%########################################%##########################*++*###############******************++++++=====+*+++++++++=---=+++++++*************************+++++++++**********+++++++*++**++++++=**+++++++====+++**++++++++++===============+++++==================--------===---::::::::::........................... .......:::::::..............::::::::::::: :::::::. ............:::::::::::---------------------------::::.......................................................................................................................................................................................................................................:::----:::.............................:::::::::::::::................................................................................:::::::::::......::::::......:::----:::......................................................................................................::--===============================================================================================================--:::.......::::::------------------------====-----------------------------------------------------------------------====+++****#########################################************##############################################################################################################################################*****************************************************###################********************************************************************##############################**********************************************************************************************************************##########################################################################################################%%%%%%%%%%%%%%############################################################################################################***************##########*****************************************************#######################*******************************************###################**********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************++++++++++++++++++++++++++++=================================================------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.......................
.......................................................................................................................................................................:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::------------------------------=========================================+++============+++++++++++++++++++++++++++++++++++++++++++++++++++===========--------:::::::..................................................................................................................................................................................................................................::--==++++++++++********+++++++++++++++===--:::....................................................................................................................:::::::::::::::::::::::::::::::::::::::::::::-----===============--------::::::::::::::::::::::::::::::::::::::::::::------------------------------------------------------------------------------------=%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%########%%##%%%####%%%%%%%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####################%%%%%%%#######################################%##########################*++*###############******************++++++=====++++++++++++-----+++++**************************+++++++++***********++++++*****+++++=++*++++++======+++*++++++++++===============+++++=================---------===----:::::............................... ...::::::::::::...:::......::::::::::::::. .:::::::..............::::::::::---------------------------::::......................................................................................................................................................................................................................................:::-----:::..............................:::::::::::::::::.............................................................................:::::::::::.....:::::::......:::----::::....................................................................................................::---===============================================================================================================---:::......::::::----------------------------------------------------------------------------------------------------====+++****#########################################***********#############################################################################################################################################*********************************************************************************************************************************************############################********************************************************************************************************************######################################################################################%%%%%%%%%%%%%%%%%%%%##%%%%%%%%%%%%%%%%%###########################################################################################################***************##########*****************************************************#######################********************************************#################************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************++++++++++++++++++++++++++++================================================-------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.......................
......................................................................................................................................................................::.:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-------------------------------========================================+++++============+++++++++++++++++++++++++++++++++++++++++++++++==============---------:::::::..................................................................................................................................................................................................................................:::--==+++++++++*********+++++++++++++===--:::.....................................................................................................................:::::::::::::::::::::::::::::::::::::::::::::----================--------:::::::::::::::::::::::::::::::::::::::::::-------------------------------------------------------------------------------------+@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%#########%##%%%####%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####################%%%%%%%#######################################%##########################+++###############******************++++++======+**++++++++=----=+++****************************++++++++***********++++++*****+++++++++*+++++=======++**+++++++++===============+++++=================---------===----::::................................ ..::::::::::::::::::::::..:::::::::::::::: .:::::::. ............:::::::::::--------------------------::::......................................................................................................................................................................................................................................:::-----:::..............................:::::::::::::::::::...........................................................................:::::::::::.....:::::::......:::----::::....................................................................................................::---===============================================================================================================---:::.......:::::----------------------------------------------------------------------------------------------------====++++****#########################################**********#############################################################################################################################################*********************************************************************************************************************************************############################***************************************************************************************************************############################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###########################################################################################################***************##########*****************************************************#######################*************************************************###########*************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************++++++++++++++++++++++++++++================================================-------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.......................
........................................................................................................................................................................:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::------------------------------========================================++++++++==========++++++++++++++++++++++++++++++++++++++++++++++++===========------------::::::....................................................................................................................................................................................................................................::--==+++++++++*******++++++++++++++===--:::....................................................................................................................:::::::::::::::::::::::::::::::::::::::::::::::----================---------::::::::::::::::::::::::::::::::::::::::---------------------------------------------------------------------------------------#@@@%%%@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%##############%%%####%%%%%%%%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##################%%%%%%%#######################################%##########################*++*#################***************+++++++=====+*+++++++++=----=+++*****************************+++++++************++++********+++++++++++++========++*++++++++++==============+++++================----------===----::::................................ ..::::::::::::::::::::::::::::::::::::::::. .:::::::.............::::::::::::--:----------------------::::......................................................................................................................................................................................................................................:::-----::...............................::::::::::::::::::::..........................................................................:::::::::::....:::::::::....::::----::::....................................................................................................::---===============================================================================================================---::::.....::::::-----------------------------------------------------------------------------------------------------====++++****#########################################*********###########################################################################################################################################************************************************************************************************************************************************#*****####################***********************************************************************************************************##########################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%############################################################################################################***************##########*****************************************************######################*******************************************************#####**************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+++++++++++++++++++++++++++++===============================================---------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::......................
.....................................................................................................................................................................::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-------------------------------=======================================++++++++++=========+++++++++++++++++++++++++++++++++++++++++++++++============-----------::::::::....................................................................................................................................................................................................................................:::--=+++++++++********++++++++++++===--::::...................................................................................................................::::::::::::::::::::::::::::::::::::::::::::::::----================---------::::::::::::::::::::::::::::::::::::::----------------------------------------------------------------------------------------=%@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%##########%##%%%##%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##################%%%%%%%#######################################%##########################*++*#################***************+++++++=====+++++++++++=----=+++****************#####*********+++++++***********+++*********++++===+++++==========+*++++++++++==============+++++================-----------=-----::::... ............................. ..::::::::::::::::::::::::::::::::::::::::. .:::::::. ...........::::::::::::--:----------------------::::......................................................................................................................................................................................................................................:::----:::...............................:::::::::::::::::::::::.......................................................................:::::::::::....:::::::::....::::----::::....................................................................................................::---================================================================================================================---:::.....::::::-----------------------------------------------------------------------------------------------------=====++++*****########################################********#####################################################################################################################################******************************************************************************************************************************########************************###################********************************************************************************************************###########################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#############################################################################################################***************##########*****************************************************#######################********************************************************###************#*************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+++++++++++++++++++++++++++++===============================================---------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::......................
...................................................................................................................................................................::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-------------------------------========================================++++++++++++=======+++++++++++++++++++++++++++++++++++++++++++++===============-----------::::::::....................................................................................................................................................................................................................................:::--==++++++++********+++++++++++==---:::...................................................................................................................:::::::::::::::::::::::::::::::::::::::::::::::::-----================----------:::::::::::::::::::::::::::::::::::------------------------------------------------------------------------------------------+@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%#########%%##%%##%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###################%%%%%%%######################################%##########################*+++##################**************++++++++====+++*+++++++=----=+++***************#######*********+++++++**********+++**********++======+++==========++*+++++++++==============+++++================----------==-----:::::. ........................... ...::::::::::::::::::::::::::::::::::::::::: ::::::::............:::::::::::::-:----------------------::::......................................................................................................................................................................................................................................:::----:::..............................::::::::::::::::::::::::::.....................................................................:::::::::::....:::::::::....::::----::::....................................................................................................::---================================================================================================================---:::::..:::::::------------------------------------------------------------------------------------------------------======+++*****########################################*******#####################################################################################################################****##********************************************************************************************************************************##########################****************##################***************************************************************************************************##############################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#############################################################################################################***************##########****************************************************########################*********************************************************#************##**************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************++++++++++++++++++++++++++++===============================================----------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::......................
..................................................................................................................................................................:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-------------------------------========================================+++++++++++++++===++++++++++++++++++++++++++++++++++++++++++++++=================-----------::::::::....................................................................................................................................................................................................................................:::--==++++++++*********+++++++++===--:::..................................................................................................................:::::::::::::::::::::::::::::::::::::::::::::::::::----=================-----------::::::::::::::::::--:::::::::::::--------------------------------------------------------------------------------------=-==-*@@@%%%@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#########%%%##%%##%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###################%%%%#%%#######################################%##########################+++*#################***************+++++++====+++**+++++++-----=+++*************###***###*********++++++***********++**********+====================++*+++++++++=============++++++================----------===----:::::. ............................ ...::::::::::::::::::::::::::::::::::::::::: .:::::::. ...........::::::::::::-----------------------:::::......................................................................................................................................................................................................................................::-----:::..............................::::::::::::.::::::::::::::::..................................................................:::::::::::...:::::::::::...::::----::::....................................................................................................::--==================================================================================================================---:::::::::::::------------------------------------------------------------------------------------------------------=======+++*****#########################################*****#######################################################################################################*************************************************************************************************************************************############################################*************###################*******************************************************************************************####################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##############################################################################################################***************#########*****************************************************########################*********************************************************************####*************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************++++++++++++++++++++++++++++===============================================----------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::......................
..................................................................................................................................................................::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--------------------------------=======================================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++====================-----------::::::....................................................................................................................................................................................................................................:::-===++++++++*********+++++++++==--:::..................................................................................................................:::::::::::::::::::::::::::::::::::::::::::::::::::-----=================------------::::::::--------------:::::::---------------------------------------------------------------------------------------=-=====#@@@%%%@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%#%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%#########%%%##%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####################%%%#%%#######################################%##########################*++*##################**************+++++++====+++**++++++=------==+*************###*****###********++++++**********++**********+=====================++*++++++++============+++++++===============-----------====---:::::. .................................::::::::::::::::::::::::::::::::::::::::: ::::::::............::::::::::::-----------------------:::::......................................................................................................................................................................................................................................::-----::..............................::::::::::::.......::::::::::::::...............................................................:::::::::::...:::::-:::::..:::::----::::....................................................................................................::--===================================================================================================================---::::::::::::--------------------------------------------------------------------------------------------------------======++++****################################################################################################################################################********************************************************************************************************************************#######################################################***********#####################***********************************************************************************##########################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###############################################################################################################**************##########*****************************************************########################*********************************************************************#####************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+++++++++++++++++++++++++++++==============================================-----------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::......................
................................................................................................................................................................:::::::::::::::::::::::::::--:::::::::::::::::::::::::::::::::::::::::::::::::::::::---------------------------------======================================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++======================--------=--:::::...................................................................................................................................................................................................................................:::--==+++++++++**+*****+++++++++===--:::...............................................................................................................:::::::::::::::::::::::::::::::::::::::::::::::::::::-----==================-------------::-------------------:::::-----------------------------------------------------------------------------------------=====-=%@@%%%%@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%##%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%#%%########%%%%%#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###################%%%%#%%######################################%##########################*++*##################**************++++++++====++**++++++=--------=+************###*******##*********++++***********++********++=====================++*++++++++============++++++================-----------====---::.::. ................................:::::::::::::::::::::::::::::::::::::::::. .:::::::............:::::::::::::----------------------:::::......................................................................................................................................................................................................................................::----:::.............................:::::::::::::........:::::::::::::::.............................................................:::::::::::...:::::--:::::::::::----::::....................................................................................................::--====================================================================================================================---:::::::::::--------------------------------------------------------------------------------------------------------=======++++****#########################################################################################################################################******************************************************************************************************************############################################################################*********#######################****************************************************************************#################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#################################################################################################################**************#########******************************************************########################*********************************************************************#####*************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************++++++++++++++++++++++++++++==============================================------------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::......................
..............................................................................................................................................................::::::::::::::::::::::::::::-----:::::::::::::::::::::::::::::::::::::::::::::::::::-----------------------------------====================================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==========================----------:::.................................................................................................................................................................................................................................::::--===++++++++++*+***+++++++++++===--:::..............................................................................................................::::::::::::::::::::::::::::::::::::::::::::::::::::::-----==================--------------------------------------------------------------------------------------------------------------------------------======+@@@%%%%@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%######%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%###%%#######%%%%%##%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####################%%%#%%##################################################################+++*#################**************+++++++++===++**+++++==---------=+***********##*********##*********+++************+********+=======================+++++++++++==============++=================-----------====---::.::.. ................................:::::::::::::::::::::::::::::::::::::::::. ::::::::...........:::::::::::::----------------------:::::......................................................................................................................................................................................................................................::----:::............................:::::::::::::...........:::::::::::::::...........................................................:::::::::::...:::::--::::::::::-----::::....................................................................................................::--=====================================================================================================================---::::::::::---------------------------------------------------------------------------------------------------------=======++++****################################################################################################################################**************************************************************************#######********###############################################################################################################*******#######################***************************************************************#################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###################################################################################################################**************#########******************************************************########################*********************************************************************#####*************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************++++++++++++++++++++++++++++==============================================------------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::......................
.............................................................................................................................................................:::::::::::::::::::::::::::::------::::::::::::::::::::::::::::::::::::::::::::::::------------------------------------====================================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++================================------::................................................................................................................................................................................................................................::::--===+++++++++++*+++++++++++++++===--::::............................................................................................................::::::::::::::::::::::::::::::::::::::::::::::::::::::------==================--------------------------------------------------------------------------------------------------------------------------------======+@@@%%%@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%######%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%###%%#######%%%%%##%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####################%%%#%%%######################################%##########################*++*#################**************+++++++++===+++***+++==----------+***********##***********#*********++************++*******+=======================+++++++++++=================================-----------====--:::.:... ................................:::::::::::::::::::::::::::::::::::::::::: .:::::::...........:::::::::::::----------------------:::::......................................................................................................................................................................................................................................::----:::............................:::::--::::::.............::::::::::::::..........................................................:::::::::::...:::::---:::::::::-----::::....................................................................................................::--======================================================================================================================----::::::::-----------------------------------------------------------------------------------------------------------======++++****#########################################################################################################################*******************************########*****###################################################################################################################################################################******########################***********************************##############################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######################################################################################################################**************#########******************************************************########################*********************************************************************#####*************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************++++++++++++++++++++++++++++==============================================-------------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::......................
.......................................................................................................................................................:...:::::::::::::::::::::::::::::::--------:::::::::::::::::::::::::::::::::::::::::::::-----------------------------------====================================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++====================================-----:...............................................................................................................................................................................................................................:::---===+++++++++++++++++++*+++++++++==---::::..........................................................................................................::::::::::::::::::::::::::::::::::::::::::::::::::::::------===================--------------------------------------------------------------------------------------------------------------------------------======*@@@%%%@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%######%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%###%%%##%%%%%%%%%##%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######%#################%%%#%%######################################%##########################*++*##################*************+++++++++===++*+**+++==----------=+*********###***********************+***********++*******+========================++++++++++================================------------===---::.:.... .............................:::::::::::::::::::::::::::::::::::::::::::: ::::::::..........:::::::::::::----------------------:::::......................................................................................................................................................................................................................................::----:::............................:::::---:::::...............:::::::::::::::.......................................................::::::::::::.:::::-----::::::::-----::::...................................................................................................:::--=======================================================================================================================---:::::::::-----------------------------------------------------------------------------------------------------------=======+++****################################################################################################################*********************************########################################################################################################################################################################################***############################************************##########################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###########################################################################################################################***************########*******************************************************########################*********************************************************************######************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+++++++++++++++++++++++++++++=============================================--------------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::......................
.........................................................................................................................................................:::::::::::::::::::::::::::::::::---------:::::::::::::::::::::::::::::::::::::::::::----------------------------------=====================================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==========================================-:............................................................................................................................................................................................................................:::--====++++++++++++++++++++*+++++++++===---::::.......................................................................................................:::::::::::::::::::::::::::::::::::::::::::::::::::::::-------===================-------------------------------------------------------------------------------------------------------------------------------=======#@@@%%%@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###%%%##%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######################%%%#%%######################################%##########################*+++##################*************+++++++++===++*+**+++=------------+**********#**********************************************+=======================+++++++++++===============================------------==----::.:..... .............................::::::::::::::::::::::::::::::::::::::::::::. .:::::::. ........::::::::::::::---------------------:::::......................................................................................................................................................................................................................................::----::............................::::::---:::::.................::::::::::::::......................................................::::::::::::.:::::-----::::::::-----::::...................................................................................................:::--========================================================================================================================---::::::::-------------------------------------------------------------------------------------------------------------======+++****###########################################################################################################***************************#####################################################################################################################################################################################################################################********################################################################################################################################################################################################%#####################################################################################################################################***************#######********************************************************########################*********************************************************************######************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+++++++++++++++++++++++++++++=============================================--------------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::......................
........................................................................................................................................................::::::::::::::::::::::::::::::::::----------:::::::::::::::::::::::::::::::::::::::-------------------------------------===================================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=============================================-:......... ...............................................................................................................................................................................................................:::--===+++++++++++++++++++++++++++++++++====--::::..................................................................................................::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-------===================-------------------------------------------------------------------------------------------------------------------------------========#@@@%%%@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###%%%###%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######################%%%##%%######################################%##########################+++*#################*************++++++++++==++++***++=------------=+************************************************++******+=======================++++++++++++=============================-------------------::........ .............................::::::::::::::::::::::::::::::::::::::::::::. .::::::::. .......:::::::::::::::--------------------:::::......................................................................................................................................................................................................................................::---:::............................:::::---::::::...................:::::::::::::::...................................................::::::::::::::::::------::::::------::::...................................................................................................::---========================================================================================================================----::::::---------------------------------------------------------------------------------------------------------------======+++****######################################################################################################***********************###########################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################****************####**********************************************************########################*********************************************************************#######************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************++++++++++++++++++++++++++++=============================================---------------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::......................
........................................................................................................................................................::::::::::::::::::::::::::::::::::-----------:::::::::::::::::::::::::::::::::::::------------------------------------====================================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++================================================-..................... ..............................................................................................................................................................................................:::--==++++++++++++++++++++++++++++++++++++====---:::..............................................................................................::::::::::::::::::::::::::::::::::::::::::::-----::::::::::---------===================------------------------------------------------------------------------------------------------------------------------------=========%@@@%%%@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##%%%%#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########################%%%#%%######################################%##########################*++*##################************++++++++++==+++*+**+++=------------+************************************************++*******+=======================+++++++++++=============================-------------------::......... ..............................::::::::::::::::::::::::::::::::::::::::::::: .:::::::. .......:::::::::::::::--------------------:::::......................................................................................................................................................................................................................................::---:::...........................::::::---::::::.....................:::::::::::::::.................................................::::::::::::::::::---------::-------::::...................................................................................................::---=========================================================================================================================---::::::----------------------------------------------------------------------------------------------------------------======+++****##############################################################################################***********************##################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################******************************************************************************########################*********************************************************************#######************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+++++++++++++++++++++++++++++===========================================----------------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::......................
....................................................................................................................................................::::::::::::::::::::::::::::::::::::::------------:::::::::::::::::::::::::::::::::::-----------------------------------=====================================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=================================================-................... .............................................................................................................................................................................................::---==+++++++++++++++++++++++++++++++++++++++===---::::.........................................................................................:::::::::::::::::::::::::::::::::::::::::::::--------:-:::::----------====================-----------------------------------------------------------------------------------------------------------------------------==========%@@%%%%@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#%%%%%%%%%%%%%%%%##%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########################%%%#%%######################################%##########################*++*##################*************+++++++++===++*+**==+=------------=**********************************************+**+*+*****+=======================++++++++++++============================------------====---::........................................:::::::::::::::::::::::::::::::::::::::::::::: .::::::::........::::::::::::::::-------------------::::......................................................................................................................................................................................................................................:::---::............................:::::----:::::........................::::::::::::::::..............................................::::::::::::::::::------------------::::...................................................................................................::--===========================================================================================================================---:::::------------------------------------------------------------------------------------------------------------------=====+++****##########################################################################################************##********#####################################################################################################***********#####################################################################################################################################################################################################################################################################################################################################################################################################################################################################################*******************************************************************************########################*********************************************************************########***********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+++++++++++++++++++++++++++++============================================----------------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::......................
..................................................................................................................................................::::::::::::::::::::::::::::::::::::::::-------------:::::::::::::::::::::::::::::::------------------------------------=======================================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++====================================================: .... ......... ....................................................................................................................................................................................:::--==++++++++++++++++++++++++++++++++++++++++++===---:::.....................................................................................:::::::::::::::::::::::::::::::::::::::::::::---------------------------=====================---------------------------------------------------------------------------------------------------------------------------============%@@%%%%@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#########################%%%#%%#####################################%##########################*+++*##################************++++++++++==++++*+==+=-------------+*********************************************++**++******+=====================++++++++++++++===========================------------====---::.:..:...:.............................::::::::::::::::::::::::::::::::::::::::::::::::. .:::::::. ......::::::::::::::::-------------------::::......................................................................................................................................................................................................................................:::---::...........................:::::-----:::::..........................::::::::::::::::............................................::::::::::::::::::------------------::::...................................................................................................::--===========================================================================================================================----::::------------------------------------------------------------------------------------------------------------------======+++****#######################################################################################**********############################################################################################################***********************################################################################################################################################################################################################################################################################################################################################################################################################################################################################################*******************************************************************************########################*********************************************************#**********##########***********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************++++++++++++++++++++++++++++============================================-----------------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::......................
................................................................................................................................................:::::::::::::::::::::::::::::::::::::::::::-------------::::::::::::::::::::::::::::-----------------------------------========================================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=====================================================:... ......... ...........................................................................................................................................................................:::--==++++++++++++++++++++++==++++++++++++++++++++===---::::................................................................................::::::::::::::::::::::::::::::::::::::::-----------------------------------====================---------------------------------------------------------------------------------------------------------------------------=============%@@%%%%@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#########################%%%#%%#####################################%###########################+++*##################************++****++++==++++++==++=------------=**********************************************+++++*******+====================++++++++++++++===========================-----------====----:..:..:..::::..........................:::::::::::::::::::::::::::::::::::::::::::::::::: .::::::::.......::::::::::::::::-------------------::::.......................................................................................................................................................................................................................................::--:::..........................::::::-----:::::............................::::::::::::::::...........................................:::::::::::::::::-------------------:::...................................................................................................::--============================================================================================================================----:::--------------------------------------------------------------------------------------------------------------------=====+++****#######################################################################################################################################################################################################******************************############################################################################################################################################################################################################################################################################################################################################################################################################################################################################*********************************************************************************########################*********************************************************##*********##########***********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+++++++++++++++++++++++++++++============================================----------------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::......................
...............................................................................................................................................::::::::::::::::::::::::::::::::::::::::::::---------------:::::::::::::::::::::::::----------------------------------==========================================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++========================================================:. ......... ........................................................................................................................................................................:::--==+++++++++++++++++++++=====+++++++++++++++++++++===--::::.............................................................................:::::::::::::::::::::::::::::::::::::::-------------------------------------=====================--------------------------------------------------------------------------------------------------------------------------==============%@@%%%%@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#########################%%%%%%%#####################################%##########################*++*##################************++****++++==++++++==++=-------------+*********************************************+++++*+****+*+===================+++++++++++++++++========================----------====-----:..:..::.::::::......................:::::::::::::::::::::::::::::::::::::::::::::::::::: . ::::::::.......:::::::::::::::::------------------::::......................................................................................................................................................................................................................................::::::::..........................:::::------:::::.............................:::::::::::::::::.........................................:::::::::::::::::-------------------::::..................................................................................................::--============================================================================================================================-----:----------------------------------------------------------------------------------------------------------------------=====+++****###############################################################################################################################################################################################**************+++++++++++++++++*******#########################################################################################################################################################################################################################################################################################################################################################################################################################################################################***********************************************************************************#######################**********************************************************###********###########**********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+++++++++++++++++++++++++++++============================================----------------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.....................
..........................................................................................................................................:::::::::::::::::::::::::::::::::::::::::::::::::----------------:::::::::::::::::::::::----------------------------------==========================================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==========================================================: ... . .. ...................................................................................................................................................................::--==+++++*****+++++++++++=======+++++++++++++++++++++===---:::..........................................................................::::::::::::::::::::::::::::::::::::::-----------------------------------------===================------------------------------------------------------------------------------------------======--------------------------===============%@@%%%%@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%**#%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####################%%##%%#####################################%##########################*+++##################*********#**+******++++=++++*+===*=-------------=+*****************************+**************++++++********=============+++==++++++*++++++++++++++=====================---------=====----:...:......:::::..:...................::::::::::::::::::::::::::::::::::::::::::::::::::::. .. .::::::::.......:::::::::::::::::-----------------:::::................................................................................................................................................................................................................:::::.................::::::...........................::::-------::::.................................::::::::::::::::.......................................::::::::::.::::::-------------------::::..................................................................................................::--=============================================================================================================================----------------------------------------------------------------------------------------------------------------------------=====+++****#######################################################################################################################################################################################***************+++++++++============++++******####################################################################################################################################################################################################################################################################################################################################################################################################################################################################***************************************************************************************######################**********************************************************####********###########***********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************++++++++++++++++++++++++++++=============================================----------------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::......................
........................................................................................................................................:::::::::::::::::::::::::::::::::::::::::::::::::::-----------------::::::::::::::::::::----------------------------------============================================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=================================+++=======================-. .. . .................................................................................................................................................................:::-==++++********+++++++++====--===+++++++++++++++++++++===---:::.......................................................................:::::::::::::::::::::::::::::::::::::::------------------------------------------==================--------------------------------------------------------------------------------------==============----------------------================%@@%%%@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#++*%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####################%%%#%%#####################################%##########################*+++*#################*********#**+******++++=++++++===++=-------------=+**************************+===+*************++++++*******+===========+++++=+++++++++++++++++++++++==================-----------==+==---:....:.....::::::..................:..::::::::::::::::::::::::::::::::::::::::::::::::::::. .. .::::::::.......:::::::::::::::::-----------------:::::..............................................................................................................................................................................................................:::::::::...............::::::..........................:::::------:::::..................................:::::::::::::::::......................................::::::::...:::::-------------------::::.................................................................................................:::--=============================================================================================================================-----------------------------------------------------------------------------------------------------------------------------=====+++****################################################################################################################################################################################****************++++++++========--------====+++*****###############################################################################################################################################################################################################################################################################################################################################################################################################################################################********************************************************************************************######################**********************************************************####********###########***********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************++++++++++++++++++++++++++++=============================================----------------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::......................
.....................................................................................................................................:::::::::::::::::::::::::::::::::::::::::::::::::::::::-----------------::::::::::::::::::---------------------------------=============================================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=================================+++++++=====================: . .. . .................................................................................................................................................................::--==+++************++++++==-----===++++++++++++++++++++++==---:::..................................................................:::::::::::::::::::::::::::::::::::::::----------------------------------------------=================----------------------------------------------------------------------------------====================-------------------==================%@@%%%@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#+++#%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####################%%%#%%%####################################%###########################+++*#################*********#**+*******++++++++++===++=---=----------=+*************************=====+************++++++********+=========++++++++++++++*+++++++++++++++++++===============----------==+==---:....:...:..:::::.................::::::::::::::::::::::::::::::::::::::::::::::::::::::::: . .::::::::......::::::::::::::::::----------------:::::.............................................................................................................................................................................................................::::::::::::.............::::::.........................::::::------:::::....................................::::::::::::::::::....................................:::::.....:::::--------:::--------:::::................................................................................................:::--=============================================================================================================================------------------------------------------------------------------------------------------------------------------------------=====+++****#######################################################################################################################################################################****************++++++++++=======---------::::-----==++*****###########################################################################################################################################################################################################################################################################################################################################################################################################################################################************************************************************************************************#####################*********************************************************######********###########***********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+++++++++++++++++++++++++++++=============================================---------------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.....................
.................................................................................................................................:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-------------------::::::::::::::---------------------------------==============================================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++======================+++++++++++++++++++++====================-. . ................................................................................................................................................................:::-==++++************+++++==-------==+++++++++++++++++++++++===--:::..............................................................::::::::::::::::::::::::::::::::::::::--------------------------------------------------================------------------------------------------------------------------------------==========================-----------------===================%@@%%%@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#+++*%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####################%%%%%%%####################################%%##########################*++**#################********#**+*******++++++++++===+*=-=-------------=+************************+======************+++++*********+=======+++++*+++++++++**++++++++++++++++++++=============----------====----:...:.:..:..::::::..:............:::::::::::::::::::::::::::::::::::::::::::::::::::::::::: .. .::::::::.......:::::::::::::::::----------------::::.............................................................................................................................................................................................................::::::::::::::............::::::.........................:::::-------::::........................................::::::::::::::::::...........................................:::::-----:::::::-------:::::................................................................................................:::--==============================================================================================================================-------------------------------------------------------------------------------------------------------------------------------====+++****#################################################################################################################################################################*************+++++++++++========--------::::::::::::::---=++****########################################################################################################################################################################################################################################################################################################################################################################################################################################################***************************************************************************************************###################*******************************************************############*******###########***********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************++++++++++++++++++++++++++++++============================================---------------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.....................
.............................................................................................................................:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--------------------::::::::::::---------------------------------==============================================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=======================+++++++++++++++++++++++++========+===+=======: . ...............................................................................................................................................................::--=+++**************+++++==--:::--==++++++++++++++++++++++++==--:::...........................................................::::::::::::::::::::::::::::::::::::::-----------------------------------------------------================--------------------------------------------------------=================================================--------------=====================#@@%%%@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#+++*%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######################%%%#%%#####################################%##########################*+++*##################**********++******++++++++++====*+-----------------=************************+======+***********++++++*******+=======+++++*+++++++++**+++++++++++++++++++++++==========-----------==-----:...:::.::..::::::..............:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::. .. .:::::::........:::::::::::::::::--------------:::::.............................................................................................................................................................................................................:::::--:::::::::.........:::::::........................:::::--------::::..........................................::::::::::::::::::.........................................::::::::::::::::::------::::::...............................................................................................::---==============================================================================================================================----------------------------------------------------------------------------------------------===-------------------------------====+++*****#########################################################################################################################################################*************++++++++++=========--------::::::::::........:::--==+****#####################################################################################################################################################################################################################################################################################################################################################################################################################################################******************************************************************************************************###################**************************************************#################*******###########***********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+++++++++++++++++++++++++++++++===========================================----------------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.....................
............................................................................................................................::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-----------------------:::::::---------------------------------===============================================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++======================+++++++++++++++++++++++++++++++++++++=====+====: .............................................................................................................................................................:::-==+++**************++++==--:::::--=+++++++++++++++++++++++++==--:::.......................................................:::::::::::::::::::::::::::::::::::::::-------------------------------------------------------===============------------------------------------------------------====================================================-------------======================#@@%%%@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#++++%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####################%%%#%%%####################################%##########################*+++*##################**********++*******++++++++=====++=-----------------=*************++++*******+======+************++++********+======++++++*+++++++++*++++++++++++++++++++++++++=========----------------:..:.::::::..::::::............::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::. :. .::::::::.......:::::::::::::::::--------------:::::.............................................................................................................................................................................................................:::::-----::::::::.......:::::::........................:::::--------::::...........................................::::::::::::::::::::.......................................::::::::::::::::::----:::::::::.............................................................................................::---==============================================================================================================================--------------------------------------------------------------------------------------------======-------------------------------====+++*****#############################*****####################################################################################################*############*************+++++++++=======---------:::::::::::................::--=++***################################################################################################################################################################################################################################################################################################################################################################################################################################***################*******************************************************************************************************###################*************************************************###################*******###########************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+++++++++++++++++++++++++++++++===========================================---------------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.....................
...........................................................................................................................:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--------------------------------------------------------------================================================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++======================++++++++++++++++++++++++++++++++++++++++++++=+==- ............................................................................................................................................................::--=+++***************++++=--::::::--==++++++++++++++++++++++++===--::.....................................................::::::::::::::::::::::::::::::::::::::::--------------------------------------------------------===============------------------------------------------------------===================================================------------========================*@@%%%@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%++++#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####################%%%%%%%####################################%###########################*++*###################*******#*++*******++++++++=====+*=------------------++++++*****+++++++++*****+=======+***********+++*+*******+=====++++++*+++++++++**+++++++++++++++++++++++++++=========-------------:::::.:::::::::::::::..:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: .. .:::::::........:::::::::::::::::-------------:::::..............................................................................................................................................................................................................::::-------::::::::.....:::::::.......................:::::--------::::...............................................:::::::::::::::::::::....................................::::::::::::::::::::::::::::::.............................................................................................::---==============================================================================================================================------------------------------------------------------------------------------------------=========-------------------------------====+++*****#########################**********###########################################################################################*************************+++++++++========---------::::::::::::.......................::-==+***##############################################################################################################################################################################################################################################################################################################################################################################################################################********#############**********************************************************************************###*****************####################**********************************************######################*******###########************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+++++++++++++++++++++++++++++++===========================================----------------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::....................
...........................................................................................................................:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::------------------------------------------------------------=================================================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++======================++++++++++++++++++++++++++++++++++++++++++++++=++= ..........................................................................................................................................................:::-==+++**************++++==--:::::::-==+++++++++++++++++++++++++==--:::.................................................::::::::::::::::::::::::::::::::::::::::-----------------------------------------------------------===============------------------------------------------------------===================================================-----------=========================*@@%%%@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%++++*%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######################%%%%%%####################################%###########################*+++###################*****#*#*++*******++++++++======*==-----------------=+++++++++++++++++++++++**+=======+**********++++*+*******+====++++++**++++++++**+++++++++++++++++++++++++++++=========----------:::::::::::::::.::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::. .: .::::::::........::::::::::::::::-------------:::::..............................................................................................................................................................................................................:::::--------::::::::..::::::::.......................:::::--------::::................................................::::::::::::::::::::::...................................:::::::::::::::::::::::::::::.............................................................................................::---==============================================================================================================================-----------------------------------------------------------------------------------------===========-------------------------------====+++****#########################****************########################################**#######################################************************++++++++========-------::::::::::::::.............................::--=+***#############################################################################################################################################################################################################################################################################################################################################################################################################################**********############*************************************************************************#################################################*********************************************########################******############***********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+++++++++++++++++++++++++++++++===========================================----------------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::....................
........................................................................................................................::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-----------------------------------------------------------=================================================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++========================++++++++++++++++++++++++++++++++++++++++++++++++++=. . .........................................................................................................................................................::--=+++****************+++=--::::::::--=++++++++++++++++++++++++++==--::...............................................:::::::::::::::::::::::::::::::::::::::::------------------------------------------------------------===============------------------------------------------------------=================================================-------------=========================+%@@%@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*+++*#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########################%%%%%%%###################################%%##########################*+++*#################******#***++*******++++++++======++=-----------------=+++++++++++++++++++++++***+========+*********++++********++=====+++++**++++++++**++++++++++++*+++++++++++++++==========-------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::. .. ::::::::........:::::::::::::::--------------:::::..............................................................................................................................................................................................................::::----------::::::::::::::::........................::::---------::::...................................................:::::::::::::::::::::::...............................:::::::::::::::::::::::::::::.............................................................................................::--================================================================================================================================----------------------------------------------------------------------------------------===========--------------------------------====++****##############################################################################**********###############################*********++++++++++++++++++++=======--------::::::::::::::::::................................::-=++***###########################################################################################################################################################################################################################################################################################################################################################################################################################************###########****************************************************************##########################################################****************************************#############################******############*************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+++++++++++++++++++++++++++++++===========================================--------------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::....................
.....................................................................................................................:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---------------------------------------------------------===================================================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=========================+++++++++++++++++++++++++++++++++++++++++++++++++++=. . .........................................................................................................................................................::-==++***************++++==-:::...:::--==+++++++++++++++++++++++++==--:::.............................................::::::::::::::::::::::::::::::::::::::::--------------------------------------------------------------===============--------------------------------------------------------==============================================--------------=========================+%@%%@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*++++#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######################%%%%%%%####################################%###########################+++*##################*****#***++********+++++++======++=-----------------=++++++++++++++++++++++++**++========+********++++*********++=====++++**++++++++**++++++++++++*+++++++++++++++++=========----::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::. .. .::::::::........:::::::::::::::-------------:::::...............................................................................................................................................................................................................::::-----------::::::::::::::.......................:::::--------:::::.....................................................::::::::::::::::::::::::.......................................::::::::::::::::...............................................................................................::--================================================================================================================================----------------------------------------------------------------------------------------=====+=====---------------------------------===+++****##########################################################################*****************#######################*********++++++=====+++++++=======--------:::::::::::....::::::::.................................::--=+***###########################################################################################################################################################################################################################################################################################################################################################################################################################************###########***************************************************##*####################################################################***************************##########################################******############*************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+++++++++++++++++++++++++++++++===========================================--------------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::....................
....................................................................................................................::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--------------------------------------------------------===================================================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=========================++++++++++++++++++++++++++++++++++++++++++++++++++++=. ........................................................................................................................................................::--=+++***************+++==--:::....:::-==+++++++++++++++++++++++++===-:::.........................................:::::::::::::::::::::::::::::::::::::::::-----------------------------------------------------------------===============---------------------------------------------------------=============================================-------------=======================-==+#@%@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*++++*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########################%%#%%%####################################%###########################*+++##################*********++********+++++++======+*==-----------------+++++++++++++++++++++++++**+=========+*********+++******+*+++====+++++**+++++++***+++++++++++*++++++++++++++++++++++=====-::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: .. .::::::::.........::::::::::::::::-----------:::::...............................................................................................................................................................................................................::::-------------:::::::::::::.....................:::::---------::::........................................................::::::::::::::::::::::::::.....................................:::::::::::::................................................................................................::--================================================================================================================================---------------------------------------------------------------------------------------=====+++====----------------------------------===+++***#######################################################################************************************************+++++======---=========-------:::::::::::............::::::::.................................::-=+***###########################################################################################################################################################################################################################################################################################**********#######################################################################################################################**********#############***********************************************##########################################################################**************#######################################################******############************************************************************************************************************************************************************************************************************************************************************************************************************************************************####################*****************************************************************************************************************************************************************************************************************+++++++++++++++++++++++++++++++===========================================-------------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::....................
...................................................................................................................::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--------------------------------------------------=========================================================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=========================+++++++++++++++++++++++++++++++++++++++++++++++++++++=. .......................................................................................................................................................::--=++****************+++==-:::.....:::--==+++++++++++++++++++++++++==--::.....................................:::::::::::::::::::::::::::::::::::::::::::------------------------------------------------------------------================----------------------------------------------------------============================================----------------=======================+*%@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*++++*#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#%######%###############%%%#%%%###################################%###########################*+++*#################*********++********+++++++=======*+=-----------------=+++++++++++++++++++++++++**+==========+*******+++*********++====++++++*++++++++**+++++++++++*+++++==+++++++++++++++++==--::::::::::::::::::::::::::-::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::. : .::::::::........:::::::::::::::::---------::::::................................................................................................................................................................................................................::::--------------:::::::::::.....................:::::---------::::..........................................................:::::::::::::::::::::::::::::...................................::::::::.................................................................................................:::--================================================================================================================================---------------------------------------------------------------------------------------====++++====----------------------------------====++***#####################################################################**************+*******************************++++++=====------------------::::::::::................:::::::::::................................::-=++**##########################################################################################################################################################################################################################################################################################************#######################################################################################################################*********###############*****************************************##############################################################################*************########################################################******###########*********************************************************************************************************************************************************************************************************************************************************************************************************************************************###########################**************************************************************************************************************************************************************************************************************+++++++++++++++++++++++++++++++++==========================================------------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::....................
................................................................................................................::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::----------------------------------------------=============================================================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==========================++++++++++++++++++++++++++++++++++++++++++++++++++++++=.. .......................................................................................................................................................::-==++***************+++==--::.......::--==+++++++++++++++++++++++++===-:::..................................:::::::::::::::::::::::::::::::::::::::::::--------------------------------------------------------------------================----------------------------------------------------------------------===============================--------------------=============-===-===*%@%@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*+++++*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##%%%%%%############%%%#%%%###################################%###########################*+++*##################********++********+++++++=======++=------------------=+++++++++++++++++++++++++**+==========+*******************++===++++++**+++++++***++++++++++*+++++-:-=++++++++++++++++=-::::::::::::::::::::::::::::-:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::. .. .::::::::.........::::::::::::::::---------::::::................................................................................................................................................................................................................::::----------------:::::::::.....................::::---------:::::.............................................................::::::::::::::::::::::::::::::::......................................................................................................................................:::--================================================================================================================================--------------------------------------------------------------------------------------====++++=====-----------------------------------====++***########################################************************###************+++++++++++++++++++++++++++++++++++++=====----::::::::::::::::::::::.....................::::::--::::................................::--=+***#########################################################################################################################################################################################################################################################################################**************######################################################################################################################********########################*********########*********####################################################################################**********############################################################******##########***************************************************************************************************************************************************************************************************************************************************************************************************************************************##################################**************************************************************************************************************************************************************************************************************++++++++++++++++++++++++++++++++==========================================----------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::....................
................................................................................................................::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--------------------------------------------===============================================================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==========================+++++++++++++++++++++++++++++++++++++++++++++++++++++++- ......................................................................................................................................................::--==++***************+++==-:::........::--==+++++++++++++++++++++++++==--::...............................::::::::::::::::::::::::::::::::::::::::::::----------------------------------------------------------------------================------------------------------------------------------------------------------======================-------------------------=-=======-===-===+#@%@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*+++++*#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###########%%%##%%###################################%%###########################*+++##################********++*********++++++=======++=------------------==++++++++++++++++++++++++***===========+******************+++==+++++++*+++++++***++++++++++*+++++--::-=++++++++++++++=-::::::::::::::::::::::::::::-:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: .. ::::::::. ........::::::::::::::::--------::::::................................................................................................................................................................................................................::::-------------------::::::....................::::----------::::................................................................::::::::::::::::::::::::::::::::::..................................................................................................................................:::--================================================================================================================================--------------------------------------------------------------------------------------====++++====-------------------------------------===+++***#################################******************************#**************+++++++=====++++++++++++++++++++======----::::::::..:::::::::::........................:::::------:::.................................::-=++**########################################################################################################################################################################################################################################################################################***************######################################################################################################################********######################################################################################################################################********##############################################################******##########*********************************************************************************************************************************************************************************************************************************************************************************************************************************########################################**************************************************************************************************************************************************************************************************************+++++++++++++++++++++++++++++++++==========================================---------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::....................
............................................................................................................:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-------------------------------------------================================================================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==========================++++++++++++++++++++++++++++++++++++++++++++++++++++++++: .....................................................................................................................................................::--=++***************+++==--::.........:::--==++++++++++++++++++++++++==--::.............................::::::::::::::::::::::::::::::::::::::::::--------------------------------------------------------------------------================----------------------------------------------------------------------------------=================---------------------------------======-=-=+*%@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%**+++++*%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###########%%%#%%%###################################%###########################*+++*#################********+++********++++++=======++=--------------------==+++++++++++++++++++++++**+===========+*****************+++++==+++++**++++++****+++++++++**++++-----:=+++++++++++++=--:::::::::::::::::::::::::::--:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::. .. .::::::::.........::::::::::::::::-------:::::::.................................................................................................................................................................................................................::::--------------------:::::..................:::::---------:::::...................................................................::::::::::::::::::::::::::::::::::::::...........................................................................................................................::---================================================================================================================================-------------------------------------------------------------------------------------====++++====---------------------------------------===+++***#########################******************++++++++++++++++******************+++==============================-----::::::::.........................................:::::------:::.................................::--=+***######################################################################################################################################################################################################################################################################################*****************#####################################################################################################################********######################################################################################################################################*******###############################################################******##########******************************************************************************************************************************************************************************************************************************************************************************************************************************##########################################***************************************************************************************************************************************************************************************************************+++++++++++++++++++++++++++++++++==========================================-----------------------------------:::::::--:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::....................
........................................................................................................:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::------------=-----------------------------================================================================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==========================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++. .....................................................................................................................................................::-==++***************+++=--::...........::--==++++++++++++++++++++++++===-::...........................:::::::::::::::::::::::::::::::::::::::::::---------------------------------------------------------------------------================-----------------------------------------------------------------------------------===============-------------------------------------=-===-==+#@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#*+++++*%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#########%#%%%#%@%###################################%###########################*+++*#################*****#**+++*#******++++++========++---------------------==+++++++++++++++++++++++**============+****************+++++++++++++*++++++****+++++++++**++++-----=+*++++++++++++=--:::::::::::::::::::::::::::---::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::. .. ::::::::..........::::::::::::::::---:--:::::::.................................................................................................................................................................................................................::::---------------------:::::.................::::----------::::......................................................................:::::::::::::::::::::::::::::::::::::::::......................................................................................................................::---================================================================================================================================-------------------------------------------------------------------------------------====++=====-----------------------------------------===+++***################****************+++++++++++++++=========++++****************++====-----------------------------:::::::............................................:::::------::::..................................::-=++***###############################################################################################################################################################************##########################################################################################################*****************######################################################################################################################********#####################################################################################################################################***###################################################################*******#########*****************************************************************************************************************************************************************************************************************************************************************************************************************************###########################################***************************************************************************************************************************************************************************************************************+++++++++++++++++++++++++++++++++==========================================---------------------------------::::::::::-:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::....................
......................................................................................................::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::----------======--------------------------================================================================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==========================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++. ....................................................................................................................................................::-==++**************+++==--::...........:::--==+++++++++++++++++++++++===--:.....................:::::::::::::::::::::::::::::::::::::::::::::::-----------------------------------------------------------------------------=================---------------------------------------------------------------------------------------====---------------------------------------------======+#%@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##*++++++#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#%%###%#######%%%#%%%###################################%############################+++*###################***#***++********++++++========++=---------------------====+=+++++++++++++++++++*+============+****************++++++++++++**+++++****++++++++****+++=---=+++++++++++++++=---:::::::::::::::::::::::::::---:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: .. .::::::::..........::::::::::::::------::::::::..................................................................................................................................................................................................................:::----------------------::::................:::::---------:::::.........................................................................::::::::::::::::::::::::::::::::::::::::::::................................................................................................................::---================================================================================================================================-------------------------------------------------------------------------------------==========-------------------------------------------===+++****########*************+++++++++++++=============-------===++***************++===---::::::::::::::::::::::::::::::................................................:::::::---::::...................................::--=+***###################################################################################################################################################***************************######################################################################################################******************######################################################################################################################*********##################################################################################################################################*****###################################################################*******########***************************************************************************************************************************************************************************************************************************************************************************************************************************#############################################*****************************************************************************************************************************************************************************************************************+++++++++++++++++++++++++++++++============================================------------------==----------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::....................
..............................................................................................::..::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---------======-------------------------=================================================================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=========================-++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=. . ...................................................................................................................................................:::-==+**************+++==--:::............:::--==+++++++++++++++++++++++==--::...................::::::::::::::::::::::::::::::::::::::::::::::-------------------------------------------------------------------------------=================----------------------------------------------------------------------------------------==--------------------------------------------------===*%@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##*++++++*#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#%%#%%###%####%##%%%##%%%##################################%############################++++###################***#***++*##******+++++========++=------------------------====++++++++++++++++++**==============***************+++++++++++++*++++++****+++++++****+++=-:-+*+++++++=++++++==----:::::::::::::::::::::::::---::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::. . ::::::::..........:::::::::::::::-::---:::::::..................................................................................................................................................................................................................:::-----------------------::::...............::::----------::::.............................................................................:::::::::::::::::::::::::::::::::::::::::::::............................................................................................................::---===============================================================================================================================--------------------------------------------------------------------------------------=========---------------------------------------------===+++******************++++++++++===========--------------------==++***************++==--::::::::::::::::::::::::::......................................................::::::::::::....................................:::-=++**##########################################################################################################################################*************************++++++*******####################################################################################################******************######################################################################################################################*********##################################################################################################################################*****###################################################################********#######**************#####******************************************************************************************************************************************************************************************************************************************************************************************************##############################################******************************************************************************************************************************************************************************************************************++++++++++++++++++++++++++++++++===========================================------------------==---------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::....................
............................................................................................::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---------=======--------===-----------==================================================================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++========================--+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++- . . ...................................................................................................................................................:::-=++**************+++=--:::..............:::--==++++++++++++++++++++++==--::..................:::::::::::::::::::::::::::::::::::::::::::::---------------------------------------------------------------------------------=================---------------------------------------------------------------------------------------------------------------------------------------------==+%@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##*+++++++*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#%%%%%%##%%%%%%%%%%%##%%%##################################%%###########################*+++*##################**##*#*++*##******+++++========++=----------------------------=+=++++++++++++++++*+==============+**************++++++++++++**++++++***+++++++****+++=--=**++++++++++++++===----::::::::::::::::::::::::----:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::. .. .::::::::..........::::::::::::::::::--:::::::..................................................................................................................................................................................................................::::----------------------:::::.............::::----------:::::...............................................................................::::::::::::::::::::::::::::::::::::::::::::::::::::..:................................................................................................::--================================================================================================================================-------------------------------------------------------------------------------------==========----------------------------------------------===+++**********+++++++++========------------::::::::::::::::::---=++********#*****+++=--::::.............................................................................:::::::::.......................................::-==+***###########################################################################################################################***************************+++++++++++++++++++++******##################################################################################################******************#######################################################################################################################********##################################################################################################################################*****###################################################################*********####*************#########*********************************************************************************************************************************************************************************************************************************************************************************************#####################################################*******************************************************************************************************************************************************************************************************************++++++++++++++++++++++++++++++++===========================================-----------------=+=---------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::....................
...........................................................................................:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--------===========---==========----===================================================================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++======================-=--++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++. . ...................................................................................................................................................::--=++*************+++==--::................:::--==+++++++++++++++++++++===-::..................::::::::::::::::::::::::::::::::::::::::::-----------------------------------------------------------------------------------==================---------------------------------------------------------------------------------------------------------------------------------------------===@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##*+++++++*#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#%%%%%%##%%%%%%%%%%%##%%%###################################%###########################*+++*###################*####*++*##******+++++========+++=---------------------------=+=++++++++++++++++**+==============**************++++++++++++++*++++++**+++++++*****++=-=*+*+**++++++++++==-====---::::::::::::::::::::::----:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: . .::::::::. .........:::::::::::::::::--:::::::...................................................................................................................................................................................................................:::-----------------------::::............:::::----------::::...................................................................................::::::::::::::::::::::::::::::::::::::::::::::::::::::::::..........................................................................................::--================================================================================================================================-------------------------------------------------------------------------------------=========------------------------------------------------====+++++++++++++========----------:::::::::::::::::::.....:::::--=+++****######***++==--:::.................................................................................:...........................................::-==+***#####################################################################################################################**************************+++++++++++================+++****################################################################################################********************########################################################################################################################*******#################################################################################################################################******###################################################################************************############**************************************************************************************************************************************************************************************************************************************************************************************######################################################*************************************************************************************************************************************************************************************************************************+++++++++++++++++++++++++++++++===========================================----------------=++=--------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::....................
...........................................................................................::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---------==============================================================================================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=======================---=++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=. . ...................................................................................................................................................::--=++************+++==--::.................::::--==+++++++++++++++++++++==-::..................::::::::::::::::::::::::::::::::::::::::-------------------------------------------------------------------------------------==================---------------------------------------------------------------------------------------------------------------------------------------------===@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##*++++++++*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#%%%%%%%%%%%%##%%%##################################%############################+++*########################*++*##******++++++========++=----------------------------=+=++++++++++++++++*+===============**************+++++++++++++*+++==+**+++++++*******+=+***+**++++++++++==-=====--:::::::::::::::::::::::----::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: . .:::::::: .........::::::::::::::::::-:::::::...................................................................................................................................................................................................................::::-----------------------::::...........::::----------:::::.......................................................................................::::::::::::::::::::::::::::::::::::::::::::::::::::::::........................................................................................::--================================================================================================================================-------------------------------------------------------------------------------------=========--------------------------------------------------=====+++========---------:::::::::::::::::..................:::--==++***#######***++==--::............................................................................................................................:::-==+***###############################################################################################****#############*********************+++++++++++++===========------------==++*****##############################################################################################*********************########################################################################################################################******#############################################################################################***************************########********###################################################################**********************###############************************************************************************************************************************************************************************************************************************************************************************###########################################################*********************************************************************************************************************************************************************************************************************************++++++++++++++++++++++++++++++++===========================================---------------=+++--------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::....................
..........................................................................................:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---------==============================================================================================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=======================---=+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++- . ....................................................................................................................................................::-==++************++==--:::..................::::--===+++++++++++++++++++==--:..................::::::::::::::::::::::::::::::::::::::---------------------------------------------------------------------------------------==================-----------------------------------------------------------------------------------------------------------------------------------------------=@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###*++++++++#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#%%%%%%%%%%%%##%%%##################################%############################*+++########################*++*##*******+++++========++=----------------------------======+++++++++++++**===============+*************+++++++++++++*+++===***++++++*******++*+**+*++++++++++==-===--==-:::::::::::::::::::::::----:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::. . .::::::::...........:::::::::::::::::::::::::...................................................................................................................................................................................................................:::::----------------------:::::.........:::::----------::::...........................................................................................:::::::::::::::::::::::::::::::::::::::::::::::::::::::......................................................................................::--================================================================================================================================-------------------------------------------------------------------------------------========----------------------------------------------------========---------::::::::::::::..............................::--==++***#######***++==--::......................................................................................................................:::::::--==+***##############################################################################################*****#############*****************++++++++==========-------------:::::::---==++****#############################################################################################**********************#########################################################################################################################*****#####################################################################################***********************************########********###################################################################*********************################*****************************************************************************************************************************************************************************************************************************************************************#############################################################***************************************************************************************************************************************************************************************************************************************++++++++++++++++++++++++++++++++===========================================-------------=++++--------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::....................
........................................................................................:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---------=============================================================================================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=======================---=++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++. . ......................................................................................................................................................::-==++***********+++==-:::....................::::--===++++++++++++++++++==--:..................:::::::::::::::::::::::::::::::::::------------------------------------------------------------------------------------------==================-----------------------------------------------------------------------------------------------------------------------------------------------=@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###*++++++++*#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#%%%%%%%%%%%%##%%%%#################################%############################*+++*###################*##**++*###******+++++========++=-----------------------------=+=====++++++++++++*+===============+*************++++++++++++**++===+**++++++******+**+**+++++++++++++==========--::::::::::::::::::::::----:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::. . . :::::::::...........:::::::::::::::-::::::::....................................................................................................................................................................................................................:::::----------------------::::........:::::----------::::................................................................................................::::::::::::::::::::::::::::::::::::::::::::::::::::::...................................................................................::--================================================================================================================================-------------------------------------------------------------------------------------========--------------------------------------------------------------::::::::::::........................................::--==++***#######***++==--:::......................................................................................................:::::::::::::::::::---==++***###############################################################################################*****###########******+++*******+++========-----------::::::::::::::::::::---=++****############################################################################*******#######************************##########################################################################################################################################################################################################**************************************************##********##################################################################**********************################************************************************************************************************************************************************************************************************************************************************************###############################################################******************************************************************************************************************************************************************************************************************************************++++++++++++++++++++++++++++++++===========================================-------------=+=++=-------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::...................
.....................................................................................::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---------=============================================================================================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=======================----++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=. . .......................................................................................................................................................::-==++**********+++==--::......................::::--===+++++++++++++++++==--::.................:::::::::::::::::::::::::::::::::--------------------------------------------------------------------------------------------==================-----------------------------------------------------------------------------------------------------------------------------------------------=@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###*+++++++++*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#%%%%#################################%############################*+++*###################*##**+++**#******+++++========+++=----------------------------========+++++++++++**================+************++++++++++++**++===+**++++++************++++++++++++===++++====---:::::::::::::::::::::-----::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: .::::::::...........:::::::::::::::-::::::::....................................................................................................................................................................................................................:::::----------------------:::::.......::::----------:::::...................................................................................................:::::::::::::::::::::::::::::::::::::::::::::::::::::::..............................................................................:::--================================================================================================================================-------------------------------------------------------------------------------------=======----------------------------------------------------------:::::::::::...............................................::--==++***#######***++==--::..........................................................................................::::::::::::::::::::------------===++***################################################################################################*****##########****+++++++++***+++===------------:::::::::::::::::::...::::--==+****###########################################################################*************#*************************##############################################################################################################################################################################################**##*******************************************************************###################################################################**********************#################********************************************************************************************************************************************************************************************************************************************************################################################################********************************************************************************************************************************************************************************************************************************************++++++++++++++++++++++++++++++++===========================================-------------++++==------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::...................
....................................................................................::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---------========+=====================================================================================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=======================----+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++: . . . .. .. ........................................................................................................................................................:::-==++*********+++==--:::.......................::::--===++++++++++++++++==--::.................::::::::::::::::::::::::::::::-----------------------------------------------------------------------------------------------==================---------------------------------------------------------------------------------------------------------------------------------------------=-=@@@@%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##*+++++++++*#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#%%%%%%%%%%%%%%%%%%%%%#%%%%#################################%%############################+++*###################**##*+++*##******+++++=========++=----------------------------============++++++++*+================+************++++++++++++**+====**++++++**********+++++++++++++++++++++=====---:::::::::::::::::::::-----::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::. .::::::::. ..........:::::::::::::::-:::::::......................................................................................................................................................................................................................:::::---------------------:::::.....:::::----------:::::......................................................................................................::::::::::::::::::::::::::::::::::::::::::::::::::::::............................................................................::---================================================================================================================================-------------------------------------------------------------------------------------=======--------------------------------------------------------:::::::......................................................::--==++***#######****++=--:::..............................................................................::::::::::::::::::::---------------========+++****################################################################################################******########****+++====++++++++==----:::::::::::::::::.................:::--=++****#########################################################################****************************************#######################################################################################################################################################################################*******************************************************************************#################################################################***********************#################*************************************************************************************************************************************************************************************************************************************************#####################################################################***********************************************************************************************************************************************************************************************************************************************++++++++++++++++++++++++++++++++===========================================------------+++++=-------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::..................
...................................................................................::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::----------=======++++===================================================================================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=======================----++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++. . . . ...... ..........................................................................................................................................................:::-==++********+++==--:::.........................::::--===+++++++++++++++==--::.................::::::::::::::::::::::::::::-------------------------------------------------------------------------------------------------==================----------------------------------------------------------------------------------------------------------------------------------------------==*@@%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##*++++++++++*#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##%%%##################################%############################*+++*###################****+++*##******+++++=========++=-----------------------------============++++++++*================+************++++++++++++**+====+**+++++**********+++++++++++++++++++++=======--::::::::::::::::::::-----::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::. .::::::::...........:::::::::::::::::::::::......................................................................................................................................................................................................................::::::---------------------:::::::::::::----------:::::...........................................................................................................:::::::::::::::::::::::::::::::::::::::::::::::::::...........................................................................::---================================================================================================================================--------------------------------------------------------------------------------------=====--------------------------------------------------------::::::.........................................................:::-==++***#######****++=--:::...................................................................:::::::::::::::::::---------------==============+++++++****#################################################################################################*******######****++========++++++==--::::::::::...........................:::-==+****#########################################################################*****************************************#####################################################################################################################################################################################********************************************************************************################################################################************************#################***********************************************************************************************************************************************************************************************************************************************####################################################################**************************************************************************************************************************************************************************************************************************************************++++++++++++++++++++++++++++++++===========================================------------+++++=-------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::..................
..................................................................................::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-----------======++++++==================================================================================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=======================----++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=. ..... ...................................................................................................................................................................:::-==++*******+++==--:::............................:::---==++++++++++++++==--:.................:::::::::::::::::::::::::::::-------------------------------------------------------------------------------------------------==================-----------------====---------------------------------------------------------------------------------------------------------------------------+@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##*+++++++++++*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##%%%%#################################%############################*+++*###################****+++*##******+++++=========++==----------------------------============++++++++*+================+************++++++++++++*+====+**+++++**********++++++++++++++++++=+==========--::::::::::::::::::-----:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::. .::::::::. ..........::::::::::::::::::::::.......................................................................................................................................................................................................................::::::---------------------:::::::::::----------:::::................................................................................................................::::::::::::::::::::::::::::::::::::::::::::::::..........................................................................::---================================================================================================================================--------------------------------------------------------------------------------------====---------------------------------------------------------:::::...........................................................:::-==++***########***++=--:::.......................................................:::::::::::::::::::-------------=============++++++++++++++++********##################################################################################################*******######***++==-----==++++++==-:::::..................................::--=++***########################################################################******************************************##########################################################################################################################################################################*******************************************************************************************###############################################################*************************#################******************************************************************************************************************************************************************************************************************************************#################################################################**********************************************************************************************************************************************************************************************************************************************************+++++++++++++++++++++++++++++++++==========================================------------+++=++-------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::..................
................................................................................:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::------------======+++++++=================================================================================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++======================-----+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-. ........................................................................................................................................................................:::-==++******+++==--:::..............................::::--==+++++++++++++==--:.................::::::::::::::::::::::::------------------------------------------------------------------------------------------------------==================------------------=====-----=-------------------------------------------------------------------------------------------------------------------%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%##**+++++++++++*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##%%%%#################################%############################*+++*###################****+++*##*******+++++========++==----------------------------=============++++++++*=================+***********++++++++++++**====+***++++**********++++++++++++++++================-:::::::::::::::::------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::. .::::::::............:::::::::::::::::::::........................................................................................................................................................................................................................:::::::--------------------:::::::::----------:::::......................................................................................................................:::::::::::::::::::::::::::::::::::::::::::..........................................................................::---================================================================================================================================----------------------------------------------------------------------------------------=-----------------------------------------------------------::::............................................................:::--=++***########***++=--:::............................................:::::::::::::::::::-------------===========+++++++++++++++*******************####################################################################################################********####****+==--:::--=++++++==--:::...................................:::-=++****#######################################################################******************************************#############################################################################################################################################################********************************************************************************************************#############################################################***************************#################***************************************************************************************************************************************************************************************************************************************##################################################################*************************************************************************************************************************************************************************************************************************************************************++++++++++++++++++++++++++++++++==========================================------------+++=++-------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::..................
..............................................................................:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---------------====+++++++++=================================================================================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=====================-----=+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-.........................................................................................................................................................................:::-==+++****+++==--::::...............................::::--==+++++++++++===-::.................:::::::::::::::::::::::-------------------------------------------------------------------------------------------------------==================-----------------========================-=======----------------------------------------------------------------------------------------------+@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%##**+++++++++++*#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##%%%%#################################%#############################+++*###################*##*+++*##*******+++++========+++=---------------------------:-============++++++++*+================++***********+++++++++++**+====+**++++**********+++++++++++++++==============-===-:::::::::::::::::-----::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: .::::::::. ..........:::::::::::::::::::::..........................................................................................................................................................................................................................:::::::-------------------:::::::----------:::::..........................................................................................................................::::::::::::::::::::::::::::::::::::::::..........................................................................::---================================================================================================================================----------------------------------------------------------------------------------------------------------------------------------------------------::::.............................................................:::--=++***#######****++==-:::...................................:::::::::::::::::-------------============+++++++++++++++**************************######################################################################################################********###****++=--::::--==+++++==--:::....................................::-==+****#######################################################################******************************************#########################################################################################################################################################************************************************************************************************************############################################################****************************##################***********************************************************************************************************************************************************************************************************************************###################################################################***************************************************************************************************************************************************************************************************************************************************************+++++++++++++++++++++++++++++++++=========================================------------+++++=--------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::..................
............................................................................:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-----------------====+++++++++=================================================================================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=====================-----=++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-........................................................................................................................................................................:::--==++++++++==--::::..................................:::--===++++++++===--::.................::::::::::::::::::::::--------------------------------------------------------------------------------------------------------==================-----------------==================================--------------------------------------------------------------------------------------------%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%###*++++++++++++*#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##%%%%%################################%%############################*+++*##################**#*+++**#*******+++++=========++=-----------------:--:::-::-:-============+++++++++*=================+***********++++++++++++*+====+***+++*********+++++++++++++++===============--===:::::::::::::::::------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::. :::::::::............::::::::::::::::::::...........................................................................................................................................................................................................................:::::::--------------------:::-----------:::::.................................................................................................................................::::::::::::::::::::::::::::::::::..........................................................................::---================================================================================================================================----------------------------------------------------------------------------------------------------------------------------------------------------:::::.............................................................:::--==+***########***++==--::...................:::::::::::::::::::::::------------===========++++++++++++++***************************##################################################################################################################*******##*****+==--:::::-==++++++=--:::....................................::--=++***#######################################################################******************************************####################################################################################################################################################*************************************************************************##########******************************#########################################################*******************************##################*********************************************************************************************************************************************************************************************************************************####################################################################****************************************************************************************************************************************************************************************************************************************************************+++++++++++++++++++++++++++++++++==========================================-----------+++++=--------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::..................
...........................................................................::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-------------------====++++++++++================================================================================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=====================-----=+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++:.......................................................................................................................................................................:::--==++++++===--::::....................................:::--====+++++====-::..................::::::::::::::::::------------------------------------------------------------------------------------------------------------==================-----------------------============================-------------------------------------------------------------------------------------------*@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@###*+++++++++++++*#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###%%%%################################%%############################*+++*##################**#**++**#*******+++++=========++=-------------------::::::-:---============++++++++*+=================+***********++++++++++++*====+***+++*********++++++++++++++================--===-::::::::::::::::------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::. .::::::::.............:::::::::::::::::::............................................................................................................................................................................................................................:::::::--------------------------------:::::........................................................................................................................................::::::::::::::::::::::::::::..........................................................................::--=================================================================================================================================-----------------------------------------------------------------------------------------------------------------------------------------------------::::..............................................................:::--==+***########***++==--::............:::::::::::::::::::-----------============+++++++++++++**************************##############################################################################################################################*************++=--::::::-==++*+++==-:::.....................................::-==+****######################################################################*******************************************#################################################################################################################################################***************************************************************************#############***************************#######################################################*********************************##################******************************************************************************************************************************************************************************************************************************######################################################################******************************************************************************************************************************************************************************************************************************************************************++++++++++++++++++++++++++++++++==========================================-----------++++++--------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::..................
...........................................................................::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---------------------====+++++++++++================================================================================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=====================------++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++........................................................................................................................................................................:::--==+++===---::::......................................:::--===========--::..................::::::::::::::::::------------------------------------------------------------------------------------------------------------==================-------------------------===========================------------------------------------------------------------------------------------------@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@###*+++++++++++++*#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#%##%%%%################################%%############################*+++*##################**##*++**#*******+++++=========++==-----------------::...::-:-:-============++++++++**=================++**********++++++++++++*+===+***+++********+++++++++++++++================---==-:::::::::::::::::-----::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: :::::::::............:::::::::::::::::::.............................................................................................................................................................................................................................::::::::-----------------------------:::::...............................................................................................................................................:::::::::::::::::::::...........................................................................::--=================================================================================================================================-----------------------------------------------------------------------------------------------------------------------------------------------------::::................................................................::--==+***########***++==--:::......:::::::::-----------------==========++++++++++++++*************************########################################################################################################################################*************+==--::.:::--=++*+++==-:::.....................................::-==+****######################################################################*******************************************#################################################################################################################################################***********************************************************************####################**************************####################################################**********************************##################****************************************************************************************************************************************************************************************************************************#######################################################################*******************************************************************************************************************************************************************************************************************************************************************++++++++++++++++++++++++++++++++===========================================----------++++++--------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::..................
........................................................................::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::------------------------=====+++++++++++================================================================================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++====================------=+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=.......................................................................................................................................................................:::--=======---::::........................................::::--=======---::...................::::::::::::::::-------------------------------------------------------------------------------------------------------------===================------------------------------======================-----------------------------------------------------------------------------------------#@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@###*++++++++++++++*#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####%%%%%################################%#############################*++*#################*#****++**#*******++++++========+++=-----------------:. .:::::-============+++++++++*+=================+*+*********+++++++++=+*+====+**++++*******++++++++++++++=================---===--:::::::::::::::------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::. . .::::::::. ...........::::::::::::::::::...............................................................................................................................................................................................................................::::::::--------------------------::::::..................................................................................................................................................:::::::::::::::::............................................................................::--=================================================================================================================================------------------------------------------------------------------------------------------------------------------------------------------------------::::................................................................::--==++**########***++==--:::..:::::::-------================+++++++++++++***************************################################################################################################################################################************++=--:::::::--=++**++==-:::.....................................::--=++***######################################################################********************************************#############################################################################################################################################**********************************************************************########################***************************#####################*****########################***********************************##################**************************************************************************************************************************************************************************************************************************########################################################################*********************************************************************************************************************************************************************************************************************************************************************+++++++++++++++++++++++++++++++++=======================================-==--------==+++++=--------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::...................
.......................................................................:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--------------------------=====++++++++++++===============================================================================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++====================------=++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-......................................................................................................................................................................::::----=----:::::..........................................::::----------:::...................::::::::::::::::-------------------------------------------------------------------------------------------------------------===================-------------------------------=====================----------------------------------------------------------------------------------------+@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%##*++++++++++++++**#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####%%%%%################################%#############################*++*#################*#****++***********+++++=========++=-------------:-::. .::::::-===========+++++++++*+=================++**********+++++++++==+*+===+**++++*******++++++++++++++=================--======-::::::::::::::------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::. ..:::::::::............::::::::::::::::::................................................................................................................................................................................................................................::::::::-------------------------:::::......................................................................................................................................................:::::::...................................................................................::--=================================================================================================================================----------------------------------------------------------------------------------------------------==------------------------------------------------::::.................................................................::--==++**########***++==--:::::::------======++++++++++++++++++++**************************#########################################################################################################################################################***********++==--::..:::--=++**++==-:::.....................................:::-==+****#####################################################################********************************************#############################################################################################################################***###########*********************************************************************###########################****************************############**************######################************************************##################*************************************************************************************************************************************************************************************************************************################################***#####################################**********************************************************************************************************************************************************************************************************************************************************************++++++++++++++++++++++++++++++++++=======================================---=====--=++++++=--------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::...................
.....................................................................:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-----------------------------====+++++++++++++===============================================================================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++====================------=+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++:......................................................................................................................................................................::::------::::::.............................................::::-----::::....................::::::::::::::::--------------------------------------------------------------------------------------------------------------===================---------------------------------===================----------------------------------------------------------------------------------------%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%##**+++++++++++++++*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####%%%%################################%#############################*++*#################*#**#*+++**#*******+++++=========++=---::::------:-::. .:::::.:============+++++++++*==================+***********++++++++==+*+===+***+++******+++++++++++++++==========================-::::::::::::::-----:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::. . :::::::::.............:::::::::::::::::..................................................................................................................................................................................................................................:::::::::---------------------:::::.................................................................................................................................................................................................................................................::--=================================================================================================================================------------------------------------------------------------------------------------------------=========---------------------------------------------::::..................................................................::--==++***#######****++=---::----=====++++++++*****+**********************#########################################################################################################################################################################**********++==--:::...::--=++**++==-:::......................................::--=+****####################################################################**********************************************#########################################################################################################################***********************************************************************************##############################*****************************###**********************######################************************************##################************************************************************************************************************************************************************************************************************************########################****************************************************************************************************************************************************************************************++++++++***********************************************************************************************************************++++++++++++++++++++++++++++++++++=======================================-====+=====++++++=--------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::..................
....................................................................:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::------------------------------====+++++++++++++===============================================================================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=====================------+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=.......................................................................................................................................................................:::::::::::::.................................................::::::::::.....................::::::::::::::----------------------------------------------------------------------------------------------------------------===================----------------------------------===================--------------------------------------------------------------------------------------#@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%###*+++++++++++++++*#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####%%%%################################%%#############################+++##################***#*+++**#*******+++++=========++=--::..:--------::. ::::...-===========+++++++++*+=================++**********++++++++===+*====***++++*****+++++++++++++++====================----==-::::::::::::::------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::. .::::::::. ............::::::::::::::::...................................................................................................................................................................................................................................::::::::::------------------::::::.................................................................................................................................................................................................................................................::--=================================================================================================================================----------------------------------------------------------------------------------------------==============-------------------------------------------:::...................................................................::--==++**########****++==----====+++++++***************************###############################################################################################################################################################################*********++==--:::....::--=++***++=-:::......................................::--=++***####################################################################***********************************************#######################################################################################################################**********************************************************************************#################################******************************#***********************#####################************************************##################***********************************************************************************************************************************************************************************************************************####################*******************************************************************************************************************************************************************************************++++++++++++*********************************************************************************************************************++++++++++++++++++++++++++++++++++=======================================-==+++++==+++++++=--------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::..................
................................................................:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--------------------------------=====+++++++++++++==============================================================================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=====================------=+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-.......................................................................................................................................................................:::::::::::......................................................::........................:::::::::::::::----------------------------------------------------------------------------------------------------------------===================-----------------------------------==================-------------------------------------------------------------------------------------+@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%###*++++++++++++++++*#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###%%%%%###############################%%#############################*++*#################***#*+++**#*******+++++=========++==-:...:--------:. .:::. .:===========+++++++++**==================+**********++++++++===+*+===***+++++***+++++++++++++++=====================-:--==-::::::::::::::------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: . ..:::::::::..............:::::::::::::::......................................................................................................................................................................................................................................::::::::::--------------::::::.................................................................................................................................................................................................................................................:::--=================================================================================================================================---------------------------------------------------------------------------------------------================------------------------------------------:::....................................................................:::-==++***#######****++======++++**************************######################################################################################################################################################################################********++==--:::.....:::-=++***++=--::......................................:::-==+***####################################################################************************************************######################################################################################################################*******************************************************************************#####################################*****************************************************#####################************************************##################**********************************************************************************************************************************************************************************************************************##############*************************************************************************************************************************************************************************************************++++++++++++++*********************************************************************************************************************+++++++++++++++++++++++++++++++++======================================-==+++=+++++++++++=--------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::..................
.............................................................:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-----------------------------------=====++++++++++++++=============================================================================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=====================-----=++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++:.....................:::::::::::............::::::......................................................................................................................::::::::.................................................................................::::::::::::::-----------------------------------------------------------------------------------------------------------------===================------------------------------------=================-------------------------------------------------------------------------------------%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#%%%##%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%###*++++++++++++++++*##%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###%%%%%################################%#############################*++*#################*****+++**#*******+++++==========++=-:....--------:. .:::. :-==========+++++++++**+=================++**********+++++++====**===+***++++++++++++++++++++++====================-::-===-::::::::::::::------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::. . . ..::::::::..............:::::::::::::::.......................................................................................................................................................................................................................................:::::::::::::---------::::::..................................................................................................................................................................................................................................................::---=================================================================================================================================--------------------------------------------------------------------------------------------=====++++++++=====-----------------------------------------:::.....................................................................::--==++***#######****++++++++************#######################################################################################################################################################################################################********++=--:::......:::-=++***++=--::.......................................::-==++**###################################################################*************************************************#######################################################################################################################*************************************************************************##########################################*****************************************************#####################************************************###################**********************************************************************************************************************************************************************************************************************#########****************************************************************************************************************************************************************************************************+++++++++++++++++*******************************************************************************************************************++++++++++++++++++++++++++++++++++=======================================++++++++++++++++=---------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::..................
............................................................::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-------------------------------------=====++++++++++++++=============================================================================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=====================------++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=...............:::::::::::::::::::::::::::::::::::::::::::::::..................................................................................................................................................................................................::::::::::::::------------------------------------------------------------------------------------------------------------------===================-------------------------------------===============-------------------------------------------------------------------------------------#@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%###*+++++++++++++++++**##%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###%%%%%################################%#############################*++*#################*#***+++**********++++++=========++=-:....--------:. .:::. .-==========+++++++++***==================++**********++++++====+*+==+***++++++++++++++++++++++====================-::-==-::::::::::::::::------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: . . ..:::::::::..............:::::::::::::::........................................................................................................................................................................................................................................:::::::::::::-------::::::...:..............................................................................................................................................................................................................................................::---=================================================================================================================================-------------------------------------------------------------------------------------------====+++++++++++=====----------------------------------------::::.....................................................................:::-==++***########*****+++********#############################################################################################################################################################################################################********+==--::.......:::-==+****+==-::.......................................::--=++***#################################################################**************************************************#######################################################################################################################***********************************************************************#############################################*****************************************************####################************************************###################**********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+++++++++++++++++++******************************************************************************************************************++++++++++++++++++++++++++++++++++=======================================++++++++++++++++=---------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.................
...........................................................::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--------------------------------------=====+++++++++++++++============================================================================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=====================------=++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++:...............::::::::::::::::::::::::::::::::::::::::::::::::::::............................................................................................................................................................................................::::::::::::::------------------------------------------------------------------------------------------------------------------===================---------------------------------------============-------------------------------------------------------------------------------------=@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#%%%%#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@###*++++++++++++++++++*###%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###%%%%%%###############################%#############################*++*#################*##**+++***********+++++=========++=-:...:-------::. .:::. .-==========++++++++++**+==================+++********++++++=====**===***++++++++++++++++++++++=====================:-===-::::::::::::::::------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::. . .. ... .::::::::..............:::::::::::::::...........................................................................................................................................................................................................................................:::::::::::-----:::::::::::::............................................................................................................................................................................................................................................::---=================================================================================================================================-------------------------------------------------------------------------------------------====+++++++++++++====---------------------------------------::::......................................................................:::-==++***########**********##################################################################################################################################################################################################################********+==-:::........::-==+****+==-::.......................................:::-=++***#################################################################****************************************************#####################################################################################################################********************************************************************################################################*****************************************************####################************************************###################**********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+++++++++++++++++++******************************************************************************************************************++++++++++++++++++++++++++++++++++=====================================++++++++++++++++++=---------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.................
........................................................:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-----------------------------------------=====++++++++++++++===========================================================================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=====================------=++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=..............::::::::::::::::::::::::::::::::::::::::::::::::::::::::::......................................................................................................................................................................................::::::::::::::-------------------------------------------------------------------------------------------------------------------===================---------------------------------------===========--------------------------------------------------------------------------------------%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%##*+++++++++++++++++++*###%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#%%%%%###############################%##############################*++*################*###*+++**********++++++=========++==-::::-------::. .:::. .-========+==++++++++++*+===================++********++++++=====+*+==+***++++++++++++++++++++=====================---==-:::::::::::::::::------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: .. ....::::::::: .............::::::::::::::...............................................................................................................................................................................................................................................::::::::----::::::..:::::::..........................................................................................................................................................................................................................................::---=================================================================================================================================------------------------------------------------------------------------------------------====+++++++++++++++===--------------------------------------:::::.......................................................................:::--=++***#########*******####################################################################################################################################################################################################################*******+==-:::........::-==+****+==-::........................................::-==+***################################################################******************************************************####################################################################################################################*****************************************************************##################################################*****************************************************######################***********************************###################*********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************++++++++++++++++++++++*****************************************************************************************************************++++++++++++++++++++++++++++++++++=====================================+++++++++++++++++----------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::................
........................................................:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-------------------------------------------=====++++++++++++++===========================================================================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++====================-------+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-.............::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.........................................................................................................................................::::..................................:::::::::::::::-------------------------------------------------------------------------------------------------------------------===================----------------------------------------=========--------------------------------------------------------------------------------------*@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%##**+++++++++++++++++++*##%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###############################%##############################*++*################*###*+++***********+++++=======-=+++=------------::. .::::..:-========++==+++++++++**+==================+++********+++++=====+*+==+***++++++++++++++++++++==========================--::::::::::::::::-------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: . .... ..:::::::::..............::::::::::::::.................................................................................................................................................................................................................................................::::::----::::::..::::::::.........................................................................................................................................................................................................................................::---=================================================================================================================================------------------------------------------------------------------------------------------====+++++++++++++++====-------------------------------------:::::........................................................................:::-==++***##########***######################################################################################################################################################################################################################*******+==-:::........::--=++***++=-::........................................::--=+***################################################################*******************************************************##################################################################################################################***************************************************************#####################################################*****************************************************######################***********************************###################*********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+++++++++++++++++++++++****************************************************************************************************************++++++++++++++++++++++++++++++++++=====================================+++++++++++++++++----------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::................
......................................................::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::----------------------------------------------=====+++++++++++++++==========================================================================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++====================-------=++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=:............::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.............................................................................................................................::::::::::...............................::::::::::-:::--------------------------------------------------------------------------------------------------------------------====================---------------------------------------------==---------------------------------------------------------------------------------------=@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%###*++++++++++++++++++++*##%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##############################%%#############################*++**###################*+++***********++++++======-==++=------------::. .:::::::-=========+++++++++++++*+===================+++*******+++++======+*+=++**++++++++++++++++++++===========================-:::::::::::::::::------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::. .. . . . .:::::::::..............::::::::::::...................................................................................................................................................................................................................................................:::::---:::::::..:::::::::::......................................................................................................................................................................................................................................::---=================================================================================================================================------------------------------------------------------------------------------------------===+++++++++++++++++===-------------------------------------:::::.........................................................................:::--=++***##################################################################################################################################################################################################################################*******++=-:::........::--=++***++=--::.......................................::--=++**###############################################################**********************************************************################################################################################################################************************************************************#########################################################****************************************************######################***********************************###################*********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+++++++++++++++++++++=++***************************************************************************************************************++++++++++++++++++++++++++++++++++==================================+==+++++++++++++++++----------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::................
....................................................::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::------------------------------------------------=====++++++***+++++++======================================================================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=+==================-------=+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-............:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::....................................................................................................................::::::::::::::............................::::::::::-------------------------------------------------------------------------------------------------------------------------====================--------------------------------------------------------------------------------------------------------------------------------------#@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%###*++++++++++++++++++++**##%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##############################%%##############################+++*#################*#**++***********++++++=========++=-------------:: .:::::::-===+=====+++++++++++++**====================++*******++++=======+*+==+*+++++++++++++++++++++======================----=-:::::::::::::::::------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: . . . ...:::::::::..............::::::::::::....................................................................................................................................................................................................................................................::::----:::::...:::::::::::::....................................................................................................................................................................................................................................::---================================================================================================================================------------------------------------------------------------------------------------------====+++++++++++++++++===-------------------------------------:::::..........................................................................:::--=++***##################################################################################################################################################################################################################################******++=--::........::--=++***++=--::.......................................:::-=++***#############################################################*************************************************************#############################################################################################################***********************************************************###########################################################****************************************************#######################**********************************###################********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************++++++++++++++++++++++++++***************************************************************************************************************+++++++++++++++++++++++++++++++++==================================+==+++++++++++++++++=---------:::::::::::::::..::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::................
..................................................::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-------------------------------------------------======++++++***++++++++====================================================================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==================--------+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=:...........::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::............................................................................................................::::::::::::::::::::........................::::::::::--------------------------------------------------------------------------------------------------------------------------====================------------------------------------------------------------------------------------------------------------------------------------:+@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@###*+++++++++++++++++++++**#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###############################%##############################*++*#################*#**+++**********++++++=========++==-------------:. .::::-:--===++===+++++++++++++*+*+====================++*******+++========+*==+++++++++++++++++++++++=====================--::-==:::::::::::::::::------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::. ..........::::::::. .............:::::::::::....................................................................................................................................................................................................................................................::::----::::......::::::::::::...................................................................................................................................................................................................................................::---================================================================================================================================------------------------------------------------------------------------------------------====+++++++++++++++++===-------------------------------------::::.............................................................................::--==++***#################################################################################################################################################################*##############################################################******++=--::........::--=++****+==-::.......................................:::-=++***############################################################**************************************************************############################################################################################################**********************************************************##############################################################***************************************************#######################**********************************###################********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+++++++++++++++++++++++++++**************************************************************************************************************++++++++++++++++++++++++++++++++++================================+====++++++++++++++++=---------:::::::::::::.......:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::................
................................................::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--------------------------------------------------========+++++****+++++++===================================================================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===================--------=+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-............:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.............................................................................::::::::...........::::::::::::::::::::::::::....................:::::::::::---------------------------------------------------------------------------------------------------------------------------====================-------------------------------------------------------------------------------------------------------------------------------------%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@####*++++++++++++++++++++++#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##############################%##############################*++**################*#**+++***********+++++=========++==--------------:.. ..:-------=+++++==+++++++++++++*+*+====================+++******+++=========+==++++++++++++++++++++++======================-:::-==:::::::::::::::::-------::::::::::::-===-::::::::::::::::::::::::::::::::::::::::::::::::::::::. . ..... ...::::::::: ..............:::::::::.....................................................................................................................................................................................................................................................::::---:::::.......::::::::::::..................................................................................................................................................................................................................................::---================================================================================================================================------------------------------------------------------------------------------------------====+++++++++++++++++===-------------------------------------::::.............................................................................:::--==++**############################################################################################################################***************################**********###########################################################*******+==-::........:::-==+****++=-::......................................:::--=++***###########################################################*****************************************************************#########################################################################################################**********************************************************################################################################***************************************************#######################*********************************####################*******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************++++++++++++++++++++++++++++*************************************************************************************************************++++++++++++++++++++++++++++++++++=====================================++++++++++++++++=---------:::::::::::.........:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::................
..............................................::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::----------------------------------------------------========+++++*****+++++++=================================================================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==================---------+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=.............:::::::::::::::::::::::::::::::::::::::::::::----------:::::::::::::::::::::::::::::::::::::::::::.................................................................:::::::::::::::::::::::::::::::::::::::::::::::::::::.............:::::::::::::----------------------------------------------------------------------------------------------------------------------------====================-----------------------------------------------------------------------------------------------------------------------------------:+@@%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%###*+++++++++++++++++++++++#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##############################%##############################*+++*################*#**+++***********+++++=========+++=--------------::....::---:--=+++++++++++++++++++++++*+=====================++*******++=============+++++++++++++++++++++======================-:::-=-::::::::::::::::::------:::::::::::=+==++======-::::::::::::::::::::::::::::::::::::::::::::::::. ...........::::::::................::::::::.....................................................................................................................................................................................................................................................::::---:::::........::::::::::::.................................................................................................................................................................................................................................::--=================================================================================================================================------------------------------------------------------------------------------------------===+++++++++++++++++++==------------------------------------:::::...............................................................................::--==++***##################################################################################################################***************************###*********************#########################################################*******++=-::.........::-==+****++=-:::...........................::::.::::::::--=+****##########################################################**************++++++++++*******************************************########################################################################################################*********************************************************#################################################################***************************************************########################******####**********************####################********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+++++++++++++++++++++++++=++*************************************************************************************************************+++++++++++++++++++++++++++++++++=====================================+++++++++++++++++---------:::::::::::..........::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::................
.............................................::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-----------------------------------------------------========+++++******+++++++============++++++==============================================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==================---------++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-............::::::::::::::::::::::::::::::::::::::::::::--------------------:::::::::::::::::::::::::::::::::::::::...........................................................::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::----------------------------------------------------------------------------------------------------------------------------====================------------------------------------------------------------------------------------------------------------------------------------#@%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##%##%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%###*+++++++++++++++++++++++*#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##############################%###############################+++*################*#**+++***********++++++========+++==------------:-:::::::-------++++++++++++++++++++++**++====================++*******+++============+++++++====++++++++++======================-::-==-::::::::::::::::::------:::::::::-====-====++++++=--::::::::::::::::::::::::::::::::::::::::::::. . .........::::::::: ..............::::::::.....................................................................................................................................................................................................................................................::::----::::.........::::::::::::................................................................................................................................................................................................................................::--=================================================================================================================================------------------------------------------------------------------------------------------===+++++++++++++++++++==------------------------------------:::::................................................................................::--==++***############################################################################################################***************++++++++++********************++++++******########################################################*#*****++=-:::........::-==+****++=--::......................:::::::::::::::::--==+****##########################################################************++++++++++++++++++++++++*******************************########################################################################################################*********************************************************##################################################################**************************************************###################################*********************####################********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************++++++++++++++++++++++++++++*************************************************************************************************************+++++++++++++++++++++++++++++++++=================================+===+++++++++++++++=+----------::::::::::..........::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::................
....................................:.......:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::------------------------------------------------------=========+++++******+++++++===========++++++++===========================================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==================---------=+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=.............:::::::::::::::::::::::::::::::::::::::::---------------------------------:::::::::::::::::::::::::::::::::::::.................................................::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---------------------------------------------------------------------------------------------------------------------------====================------------------------------------------------------------------------------------------------------------------------------------%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%###*+++++++++++++++++++++++++#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#############################%%##############################*++*##################**+++***********++++++=========++==---------------::::---------=+++++++++++++++++++*+*+++====================+++****+**++============+++++=======+++++++++======================---===-::::::::::::::::::-------:::::::=+=----=======++++++=-::::::::::::::::::::::::::::::::::::::::::: ..........:::::::::.................:::::......................................................................................................................................................................................................................................................::::----::::..........::::::::::::...............................................................................................................................................................................................................................::--=================================================================================================================================------------------------------------------------------------------------------------------===++++++++++++++++++===-----------------------------------:::::..................................................................................:::-==++**########################################################################################################************++++++++++++==+++++++**********++++++++++++++****#########################################################******++=--::........::--=++****+=--::................::::::::::::------------==++***###########################################################***********++++++++++++++++++++++++++++++++++++++++*****************####################*##################################################################################********************************************************###################################################################**************************************************####################################********************####################********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************++++++++++++++++++++++++++++++***********************************************************************************************************++++++++++++++++++++++++++++++++++====================================++++++++++++++++=---------:::::::::::.........::::::::::::::::::::::::::::::-::---:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::................
.........................................:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-------------------------------------------------------===========+++++*******+++++++==========++++++++===========================================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=================----------++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++:............:::::::::::::::::::::::::::::::::::::::::----------------------------------------:::::::::::::::::::::::::::::::::::::::......................................:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::----------------------------------------------------------------------------------------------------------------------------===================------------------------------------------------------------------------------------------------------------------------------------*@%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%####*+++++++++++++++++++++++++#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#############################%%##############################*++*##################**+++***********++++++=========++==----------------------------=+++++++++++++++++++*+++++=====================+++******++============++++========++++++++=============================-::::::::::::::::::-------:::::-++--=--==========+++++++=-::::::::::::::::::::::::::::::::::::::::. ...........::::::::..................:::.......................................................................................................................................................................................................................................................::::---:::::...........:::::::::::...............................................................................................................................................................................................................................::--=================================================================================================================================------------------------------------------------------------------------------------------===++++++++++++++++++===-----------------------------------:::::...................................................................................::--==++**##################################################################################################*************+++++++================++++++++++++++++========+++***#########################################################******++==-::........::--=++****+==-:::......:::::::::::::::---------------====++****###########################################################************+++++++===========++++++++++++++++++++++++++++++++******#################***********###########################################################################********************************************************###################################################################**************************************************####################################********************####################********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+++++++++++++++++++++++++++++++**********************************************************************************************************++++++++++++++++++++++++++++++++++====================================++++++++++++++++=---------:::::::::::.........::::::::::::::::::::::::::::::-------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::................
.........::::::::::::...............:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---------------------------------------------------------=============++++*******++++++++=======++++++++++++=========================================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=================----------=+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=.............:::::::::::::::::::::::::::::::::::::::::------------------------------------------------::::::::::::::::::::::::::::::::::::::............................::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-------------------------------------------------------------------------------------------------------------------------------===================-----------=------------------------------------------------------------------------------------------------------------------------%@%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%####*++++++++++++++++++++++++++*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#############################%%##############################*+++##################**+++************++++++========+++==----------------------------+++++++++++++++++++++++*++====================+++******++============+++=========++++++++=============================-::::::::::::::::::-------::::-+=-=--====--==--====++++++++=---::::::::::::::::::::::::::::::::::::............:::::::::..................:........................................................................................................................................................................................................................................................::::---::::..............:::::::::...............................................................................................................................................................................................................................::--=================================================================================================================================------------------------------------------------------------------------------------------====+++++++++++++++++===----------------------------------::::::....................................................................................::--==+***###########################################################################################************++++++++=======--------------=====+++++=======-------==++***##########################################################******+==-::........:::-=++****++=--:::::::::::::::::--------==============++++*****###########################################################************++++++======--======================++++++++++++++++*****##############****************#######################################################################********************************************************#####################################################################*************************************************#####################################*******************####################********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************++++++++++++++++++++++++++++++++*********************************************************************************************************++++++++++++++++++++++++++++++++++====================================++++++++++++++++=---------:::::::::::.........::::::::::::::::::::::::::::::---------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::................
.......::::::::::::::::............::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--------------------------------------------------------================++++********++++++++===++++++++++++++++=====================================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=================-----------+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=:.............:::::::::::::::::::::::::::::::::::::::::-----------------------------------------------------------:::::::::::::::::::::::::::::::.....................::::::::::::::::::::::::::::::::::::::::::::::::-----------:::::::::::::::::::::::::-------------------------------------------------------------------------------------------------------------------------------===================----------====----------------------------------------------------------------------------------------------------------------------%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%##*#*+++++++++++++++++++++++++++*%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##############################%###############################+++*#################**+++************++++++========+++==----------------------------++++++++++++++++++++*+**++====================+++******++============++==========++++++++=========================--==-:::::::::::::::::::-------::=+=-=-------========--===+++++++===--:::::::::::::::::::::::::::::::::. ..........:::::::::...........................................................................................................................................................................................................................................................................::::---::::................::::::...............................................................................................................................................................................................................................:::--=================================================================================================================================------------------------------------------------------------------------------------------====+++++++++++++++++===---------------------------------::::::......................................................................................::--=++**#################################################################################*****************++++++++======---------::::::::::-----=======--------------==+***##########################################################******++=--::.......:::-=++****++==--::::::::-----------======+++++++++++++++******#############################################################************+++++===------------------=======================++++***#############*****++++***********####################################################################********************************************************######################################################################************************************************#####################################*******************####################********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************++++++++++++++++++++++++++++++++**********************************************************************************************************++++++++++++++++++++++++++++++++++====================================+++++++++++++++=---------::::::::::::........:::::::::::::::::::::::::::::-----------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::................
......:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-------------------------------------------------------===================++++*********++++++++=++++++++++++++++++==================================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++================-----------=+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-.............:::::::::::::::::::::::::::::::::::::::::::--------------------------------------------------------------::::::::::::::::::::::::::::::................:::::::::::::::::::::::::::::::::::::::::::::--------------------::::::::::::::::::---------------------------------------------------------------------------------------------------------------------------------===================----------======-------------------------------------------------------------------------------------------------------------------+@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%#*#**+++++++++++++++++++++++++++*#%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#############################%###############################*++*################***+++************++++++========+++===---------------------------++++++++++++++++++++*+***+====================+++*****+++============+===========++++++++========================-:-==-:::::::::::::::::::--------=+=--==-=----=====--===--===++++===++=-::::::::::::::::::::::::::::::::: ...........:::::::-...........................................................................................................................................................................................................................................................................:::::::::::.....................................................................................................................................................................................................................................................:::--=================================================================================================================================------------------------------------------------------------------------------------------====+++++++++++++++++===--------------------------------:::::::.......................................................................................::--=+***######################################################**************************************++++++++======-------:::::::::::::::::::::----------::::::::::--==+***#########################################################*******++==-:::.....::::-=++*****++=--------------========++++++++++++++**********################################################################************++++===----::::::---------------------------======++***#############***+++++++++++************##############################################################********************************************************######################################################################*************************************************####################################*******************####################********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+++++++++++++++++++++++++++++=+++*********************************************************************************************************++++++++++++++++++++++++++++++++++====================================+++++++++++++++=----------:::::::::::.......:::::::::::::::::::::::::::::------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::................
.....::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-------------------------------------------------------======================++++********++++++++++++++++++++++++++++================================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++================------------+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=..............::::::::::::::::::::::::::::::::::::::::::::-----------------------------------------------------------------:::::::::::::::::::::::::::::.........:::::::::::::::::::::::::::::::::::::::::::::::----------------------------::::::::------------------------------------------------------------------------------------------------------------------------------------===================----------========----------------------------------------------------------------------------------------------------------------:#@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%####*+++++++++++++++++++++++++++++#%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#############################%###############################*++*###############****++++***********+++++++=======+++===-=-------------------------+*+++++***++++++++++*+****+===================+++*****+++============+===========++++++++======================--::-==-:::::::::::::::::::-------=+-==--=--=----==-=====---========--=++=-::::::::::::::::::::::::::::::::............:::::::::..........................................................................................................................................................................................................................................................................::::::::::......................................................................................................................................................................................................................................................:::--================================================================================================================================-------------------------------------------------------------------------------------------====+++++++++++++++++===-------------------------------:::::::.........................................................................................::-=++**###################################***************************************************++++++++=======------:::::::::::.............::::::::::::::::::::::::--=+***#########################################################********++=--::::...:::--=++*****++====----========++++++++++*******************###################################################################*************+++==--::::::::::::::::::::::------------------==++***###########***++========++++++***********###########################################################*******************************************************#######################################################################*************************************************####################################*******************#####################********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+++++++++++++++++++++++++++++=+++*********************************************************************************************************++++++++++++++++++++++++++++++++++===================================+++++++++++++++-----------:::::::::::.......::::::::::::::::::::::::::::-------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::................
....:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---------------------------------------------------------======================++++*********+++++++++++++++++++++++++++++============================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++================------------=+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-..............::::::::::::::::::::::::::::::::::::::::::::::-------------------------------------------------------------------------::::::::::::::::::::::::...::::::::::::::::::::::::::::::::::::::::::::::-------------------------------------------------------------------------------------------------------------------------------------------------------------------------===================---------=============-----------------------------------------------------------------------------------------------------------:-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%####*++++++++++++++++++++++++++++++*%@@%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#############################%################################++*###############**#*++++************++++++========+++====-------------------------+*+**********+++++++++*+**+===================+++****++++============+===========+++++++++=====================-:::-==-::::::::::::::::::::------=---===-=-==-------==---===--===---=-=++=::::::::::::::::::::::::::::::::.............::::::::..........................................::::............................................................................................................................................................................................................................:::::::::.......................................................................................................................................................................................................................................................:::--================================================================================================================================-------------------------------------------------------------------------------------------====+++++++++++++++++===------------------------------:::::::..........................................................................................::-==+**######******************************************************+++++++++++++++++++++++++++========-------::::::::::......................::::::::::.........::--=+***##########################################################*******++==--::::::::--==++******+++======+++++++++++*********************###########################################################################****#******+++=---:::::::::::::::::::::::::::::::::::::---==++**##########***++===----======+++++++************#####################################################*******************************************************#######################################################################*************************************************#####################################******************#####################********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************++++++++++++++++++++++++++++++++++********************************************************************************************************++++++++++++++++++++++++++++++++++===================================+++++++++++++++-----------:::::::::::.......::::::::::::::::::::::::::::--------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::................
....::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-----------------------------------------------------------=======================++++*********++++++++++++++++++++++++++++++===========================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++================------------+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=..............::::::::::::::::::::::::::::::::::::::::::::::::::--------------------------------------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--------------------------------------------------------------------------------------------------------------------------------------------------------------------------===================---------==============----------------------------------------------------------------------------------------------------------:=%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##%%%%##%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%##*#*++++++++++++++++++++++++++++++++#%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#############################%%###############################++*###############**#*++=+************+++++++=======+++====-------------------------+*************+++++*+**+***===================+++***+++++============+===========+++++++++======================--===-:::::::::::::::::::::-------====-==--=----=---==--=---==---=----=+=+-:::::::::::::::::::::::::::::::: ...........:::::::::.......................... .............::::::::..........................................................................................................................................................................................................................:::::::............................................................................................................................................................................... ........................................................................:::--================================================================================================================================-------------------------------------------------------------------------------------------====+++++++++++++++++===-----------------------------::::::::..........................................................................................::--=+**************************************+++++++++++++++++++++++++++++++++++==================--------:::::::::...............................................::--=+***##########################################################********++==---::::---===++*******++++++++++****************************##################################################################################*******++==--:::::...........:::::::::::::::::::::::--==+***#########***++==----------======++++++***********##################################################******************************************************########################################################################*************************************************#####################################******************#####################********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************++++++++++++++++++++++++++++++++=++*******************************************************************************************************++++++++++++++++++++++++++++++++++====================================++++++++++++++-----------:::::::::::.......:::::::::::::::::::::::::::------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::................
..::::::::---------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::----------------------------------------------------------==========================+++++*********+++++++++++++++++++++++++++++========================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++================------------=+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++:...............::::::::::::::::::::::::::::::::::::::::::::::::::::::--------------------------------------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--------------------------------------------------------------------------------------------------------------------------------------------------------------------------====================---------================-------------------------------------------------------------------------------------------------------::*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%@@@####**++++++++++++++++++++++++++++++++*%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%############################%%###############################*++*##############*##**+++****+********++++++=======+++======-----------------------+**************++**+*******+==================++****+++++========================+++++++++===========================-:::::::::::::::::::::-------============---------------------=--=++==::::::::::::::::::::::::::::::::.. ..... . .:::::::::............................... .........:::::::::........................................................................................................................................................................................................................::::::.........................................................................................................................................................................................................................................................::---================================================================================================================================-------------------------------------------------------------------------------------------====+++++++++++++++++====---------------------------::::::::............................................................................................:--=+*****************++++++++++++++++++++++++++++++=============================-----------------:::::::::::...................................................::--=+***###########################################################********++===-------==+++*********************************#################################################################################################******++==--:::..............................::::::--=++**#########***++=----:::::------======++++************###############################################******************************************************######################################################################***************************************************#####################################******************#####################********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++*******************************************************************************************************++++++++++++++++++++++++++++++++++===================================++++++++++++++-----------::::::::::::......::::::::::::::::::::::::::-------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::................
..:::::::-------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---------------------------------------------------------=============================++++*********++++++++++++++++++++++++++++++=======================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++================------------=+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-...............::::::::::::::::::::::::::::::::::::::::::::::::::::::::--------------------------------------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--------------------------------------------------------------------------------------------------------------------------------------------------------------------------===================----------================-------------------------------------------------------------------------------------------------------:-%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%@@@#####*+++++++++++++++++++++++++++++++++*#@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%############################%%###############################*++*##############*##**+++****+********+++++++======+++======-----------------------+**************************+==================++****+++++============++==========+++++++++===========================-::::::::::::::::::::--------============---------------------=---=+++-::::::::::::::::::::::::::::::::............::::::::.......................... ... .........:::::::::::.........................................................................................................................................................................................................................:...........................................................................................................................................................................................................................................................::---================================================================================================================================-------------------------------------------------------------------------------------------====+++++++++++++++++===---------------------------:::::::::............................................................................................:--=+*******++++++++++++++++++============================-------------------------------::::::::::::::.........................................................::--=+***###########################################################*********+++=========+++*****************************#######################################################################################################*****+++=--:::.................................:::--==+***#########**++==---:::::::::-------===+++++***********#############################################******************************************************#####################################################################****************************************************#####################################******************#####################********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+++++++++++++++++++++++++++++++++++++******************************************************************************************************++++++++++++++++++++++++++++++++++====================================+++++++++++++-----------::::::::::::......:::::::::::::::::::::::::---------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::................
..::::::------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---------------------------------------------------------================================++++**********++++++++++++++++++++++++++++++====================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++================-------------=++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=...............::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--------------------------------------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::-------------------------------------------------------------------------------------------------------------------------------------------------------------------------====================-----------================-----------------------------------------------------------------------------------------------------::+@%%%%%%%%%%%%%%%%%%%%%%%%%%%#######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%@@@%####*+++++++++++++++++++++++++++++++++++*%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#############################%###############################*++*#################**+++****++*******+++++++======++++======----------------------+***************************==================+*****+++++============++===========+++++++++=====================---==-::::::::::::::::::-=+-------=============---------------------=-==+++=::::::::::::::::::::::::::::::::............:::::::::........................ . .........:::::::::::::...................................................................................................................................................................................................................................................................................................................................................................................................................................................................................::---================================================================================================================================--------------------------------------------------------------------------------------------===+++++++++++++++++===-------------------------:::::::::..............................................................................................:--=+*****+++==================-------------------------------::::::::::::::::::::::::::::::::::................................................................::--=+***###########################################################**********++++++++++++**********************###################################################################################################################***++==-:::..................................:::--=++***########***++==---::::::::::::-----====++++++*********###########################################*******************************************************##################################################################******************************************************#####################################*******************####################*********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+++++++++++++++++++++++++++++++++++=+*****************************************************************************************************++++++++++++++++++++++++++++++++++====================================+++++++++++++-----------::::::::::::......::::::::::::::::::::::::-----------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::...............
.:::::::-----=====-----------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::----------------------------------------------------------==================================++++**********+++++++++++++++++++++++++++++++================++++++++++++++++++++++++++++++++++*****+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++================-------------=+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++:...............:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--------------------------------------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::--------------------------------------------------------------------------------------------------------------------------------------------------------------------------====================-----------================-----------------------------------------------------------------------------------------------------::#%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%@@@%#####+++++++++++++++++++++++++++++++++++++#%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#############################%################################*+*##################*+++****++********+++++++=====++++======----------------------=***************************+=================+****++++++===========++++===========++++++++====================--::-==:::::::::::::::::-+++-------==============--------------------=--=+++=:::::::::::::::::::::::::::::::::...........:::::::::....................... .........::::::::::::::::................................................................................................................................................................................................................................................................................................................................................................................................................................................................................::---================================================================================================================================--------------------------------------------------------------------------------------------===+++++++++++++++++===------------------------::::::::::..............................................................................................:--=++**+++===--------------------------::::::::::::::::::::::::::::::::::::::::................................................................................::--=+***###########################################################*************++++++******************##########################################################################################################################****+==--::...................................:::-==++***#######***+++==---::::::::::::::----====++++++++*******#########################################********************************************************################################################################*******************************************************#####################################*******************####################*********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++=+*****************************************************************************************************+++++++++++++++++++++++++++++++++======================================+++++++++++----------:::::::::::::......:::::::::::::::::::::---------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::...............
::::::::---========------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-----------------------------------------------------------====================================++++***********++++++++++++++++++++++++++++++===============++++++++++++++++++++++++++++++++++*******++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++================--------------=++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-................::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::------------------------------------------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::--------------------------------------------------------------------------------------------------------------------------------------------------------------------------====================------------===============------------------------------------------------------------------------------------------------------=%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%@@@%#####*+++++++++++++++++++++++++++++++++++++*#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%############################%################################*+*################*#*+++****++********+++++++======+++=======---------------------=***************************+================+*****+++++++==========+++++==========+++++++=====================-:::-==::::::::::::::::-+*==-------===============-----------------------=+++:::::::::::::::::::::::::::::::::. ..........::-::::::...................... .........:::::::::::::::::........................................................................................................................................................................................................................................................................................................................................................................................................ .. ..................................................::---================================================================================================================================---------------------------------------------------------------------------------------------===++++++++++++++++====----------------------:::::::::................................................................................................:--=++*+++==-------:::::::::::::::::::::::::::::::::::::::......................................................................................................::--=+***###########################################################***********************************############################################################################################################################****++=--::...................................:::--==++****######****++===--::::::...::::::---=====+++++++********#######################################********************************************************################################################################*******************************************************#####################################*******************####################*********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************++++++++++++++++++++++++++++++++++=+==+****************************************************************************************************+++++++++++++++++++++++++++++++++======================================+++++++++++----------:::::::::::::......:::::::::::::::::::------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::...............
:::::::---============------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::----------------------------------------------------------========================================++++**********++++++++++++++++++++++++++++++++============+++++++++++++++++++++++++++++++++++*******++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++================---------------++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=.................::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-------------------------------------------------------------------------------------:::::::::::::::::::::::::::::::::::::::-------------------------------------------------------------------------------------------------------------------------------------------------------------------------====================--------------==============-----------------------------------------------------------------------------------------------------:*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%@@@%#####*+++++++++++++++++++++++++++++++++++++++*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%############################%%###############################*++*###############*#*+++****+++********+++++++=====++++======---------------------=****************************================+*****+++++++==========++++++==========+++++======================-::-==-:::::::::::::::=++=-==----===================-------------=========+++-::::::::::::::::::::::::::::::::: ..........:::::::::...................... .........:::::::::::::::::::................................................................................................................................................................................................................................................................................................................................................................................................... .................................................::---================================================================================================================================---------------------------------------------------------------------------------------------====+++++++++++++++===-----------------------:::::::::................................................................................................:--=+++++==-:::::::::::::::::::::...............................................................................................................................::--=+***###########################################################*********************************##############################################################################################################################*****+==-:::...................................:::--==++*****#####****+++===--::::......::::--=======+++++++*******######################################*********************************************************##############################################################********************************************************#####################################*******************#####################********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+++++++++++++++++++++++++++++++++++=++++****************************************************************************************************++++++++++++++++++++++++++++++++======================================+++++++++++----------::::::::::::::.....:::::::::::::::-----------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::...............
:::::::---=======================----------------:::::::::::::::::::::::::::::::::::::::::::::::::::::------------------------------------------------------------==========================================++++**********+++++++++++++++++++++++++++++++++==========+++++++++++++++++++++++++++++++++++*********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++================---------------=++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++..................:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-------------------------------------------------------------------------------------------::::::::::::::::::::::::::::::--------------------------------------------------------------------------------------------------------------------------------------------------------------------------====================----------------============------------------------------------------------------------------------------------------------------%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@%######*++++++++++++++++++++++++++++++++++++++++#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###########################%%################################++*###############*#*++++#**+++********+++++++=====++++=======--------------------=****************************+===============+****++++++++========+++++++++==========++========================---===-::::::::::::::=++=-==========================-------------======++++++-:::::::::::::::::::::::::::::::::...........:::::::::..................... ..........:::::::::::::::::::......................................................................................................................................................................................::........................................................................................................................................................................................................ ................................................::---================================================================================================================================----------------------------------------------------------------------------------------------====++++++++++++++===-----------------------::::::::.................................................................................................:--=+++++=--:::.................................................................................................................................................::--=+***############################################################*********####****#######*******##############################################################################################################################******+==-:::....................................:::--===++****#####*****+++==--::::.....::::---========++++++********####################################*********************************************************##########################################################************************************************************#####################################*******************#####################*********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************++++++++++++++++++++++++++++++++++==+=++***************************************************************************************************+++++++++++++++++++++++++++++++++=====================================+++++++++++----------::::::::::::::.....::::::::::::::-------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::...............
::::::----=========================----------------:::::::::::::::::::::::::::::::::::::::::::::::::------------------------------------------------------------============================================++++**********++++++++++++++++++++++++++++++++++===+=====+++++++++++++++++++++++++++++++++++*********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++================----------------++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++..................::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--------------------------------------------------------------------------------------------------------::::::::::::::--------------------------------------------------------------------------------------------------------------------------------------------------------------------------====================----------------============-----------------------------------------------------------------------------------------------------+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@%######*+++++++++++++++++++++++++++++++++++++++++#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###########################%%################################*+*#################*++++****++********++++++++====++++=======--------------------=****************************+==============+*****++++++++=======+++++++++++========================================-::::::::::::::=++=============================-------=----=====-=++++++=::::::::::::::::::::::::::::::::::...........:::::::::................... ..........:::::::::::::::::::::...................................................................................................................................................................................::::...................................................................................................................................................................................................... ................................................::---================================================================================================================================----------------------------------------------------------------------------------------------=====+++++++++++++===----------------------:::::::::.................................................................................................:--=++++==-::...................................................................................................................................................::--=+***############################################################**********##########*####*****###############################################################################################################**********************+==-:::....................................::::---==+++***######*****++==--::::.....::::--==========++++++*******###################################*********************************************************#########################################################*************************************************************#####################################*******************#####################*********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+++++++++++++++++++++++++++++++++=++===+++*************************************************************************************************++++++++++++++++++++++++++++++++++====================================+++++++++++----------::::::::::::::.....:::::::::::::----------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::..............
::::::---============================----------------:::::::::::::::::::::::::::::::::::::::::::::-------------------------------------------------------------=============================================++++**********+++++++++++++++++++++++++++++++++++=====++++++++++++++++++++++++++++++++++++++*********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++================---------------=+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++.................:..:.:::::::::::::::::::::::::::::::::::::::::-----:::::::::::::-------------------------------------------------------------------------------------------------------------:-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------====================------------------==========----------------------------------------------------------------------------------------------------:#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%@%*####*+++++++++++++++++++++++++++++++++++++++*+*#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###########################%################################*+*#################*++++****++*********+++++++====+*++========--------------------****************************+==============+*****++++++++=======+++++++++++++====================================---:::::::::::::=*+================================------=-===--==-+++++++=::::::::::::::::::::::::::::::::::...........:::::::::.................. ..........::::::::::::::::::::::..................................................................................................................................................................................::::.................................................................................................................................................................................................... . ..............................................::---================================================================================================================================-----------------------------------------------------------------------------------------------====+++++++++++++===----------------------::::::::::...............................................................................................::-==++++==-::...................................................................................................................................................::--=++***###########################################################********##############################################################################################################################****************************++=--:::.....................................::::----==++****######****++==--:::......:::--==========+++++++********#################################************************************************************################################################********************************************************************#####################################******************#####################*********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++=====++*************************************************************************************************+++++++++++++++++++++++++++++++++=====================================+++++++++=-----------::::::::::::::....::::::::::::----------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::..............
:::::----==============================--------------:::::::::::::::::::::::::::::::::::::::::::-------------------------------------------------------------===============================================+++++**********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++================----------------+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++............:.....:..:::::::::::::::::::::::::::::::::::::--==+++**+-::::::::::::::::---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------====================------------------=========------------------------------------------------------------------------------------------------------%#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@%#####*++++++++++++++++++++++++++++++++++++*++****%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##########################%################################*+*#################*++++**#*++*********+++++++====+*+++=======--------------------+***************************+==============******++++++++=======+++++++++++++======================================-:::::::::::-+++=================================------------===-+++**++=-:::::::::::::::::::::::::::::::::............::::::::.................. .............:::::::::::::::::::::...............................................................................................................................................................................::::::................................................................................................................................................................................................... ..............................................::---================================================================================================================================------------------------------------------------------------------------------------------------====++++++++++++===----------------------::::::::::...............................................................................................::-==++++==-::...................................................................................................................................................::--=++***###########################################################********########################################################################################################################********************************+++==--:::......................................:::::---===++*****####*****+==--:::.....:::--====+++++++++++++++********###############################************************************************************###############################################*********************************************************************#####################################******************#####################*********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++=====++++***********************************************************************************************+++++++++++++++++++++++++++++++++=====================================+++++++++=-----------::::::::::::::::::::::::::::::----------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::..............
:::::---=================================-------------:::::::::::::::::::::::::::::::::::::::-------------------------------------------------------------===================================================++++**********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++================----------------=++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++...............::..::::::::::::::::::::::::::::::::::-==++***+*****+=:::::::::::::::::-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------=====================-------------------======-------------------------------------------------------------------------------------------------------+@*%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@%######*++++++++++++++++++++++++++++++++++*+*****#@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##########################%#################################++#################*++++**#*+++********++++++++===+*+++=======--------------------+****************************=============+******+++++++++=====+++*++**+++++++++=============================----==-::::::::::-+++==================================----------===-==+****+++-::::::::::::::::::::::::::::::::::...........:::::::::................. ..............::::::::::::::::::::::.............................................................................................................................................................................::::::................................................................................................................................................................................................... ..............................................::---================================================================================================================================-------------------------------------------------------------------------------------------------====++++++++++====----------------------:::::::::::..............................................................................................::-==+**++=-::...................................................................................................................................................::--=++**############################################################********################################################################################################################************************+++++++++++++++++++==--:::........................................:::::---==+++*****#*******+==-:::.....:::--==++++++++++++++++++*********#############################************************************************************#######################################***####**********************************************************************######################################*****************#####################**********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+++++++++++++++++++++++++++++++++++=====+==++**********************************************************************************************++++++++++++++++++++++++++++++++++====================================+++++++++=-----------::::::::::::::::::::::::::::::-----------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::..............
::::---====================================-------------:::::::::::::::::::::::::::::::::::-------------------------------------------------------------=====================================================++++**********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++================-----------------++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++.............:...::::.::::::::::::::::::::::::::::-=++****+++*+*++**+-::::::::::::::::-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------=====================--------------------===---------------------------------------------------------------------------------------------------------#%+%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@%######*++++++++++++++++++++++++++++++++++******%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#########################%#################################*+*#################++++**#*+++*********+++++++====++++========-------------------+****************************+============+******++++++++++====+++******+++++++++============================-::-==-:::::::::-++====================================--------==---=-=+*****++-::::::::::::::::::::::::::::::::::...........:::::::::............... ................:::::::::::::::::::::............................................................................................................................................................................::::::................................................................................................................................................................................................... ..............................................::---===============================================================================================================================---------------------------------------------------------------------------------------------------====+++++++++===------------------------:::::::::::.............................................................................................::-=++**++=-::...................................................................................................................................................::--=++**############################################################********##########################################################################################################*****************++++++++++++++++++++++++++======---:::...........................................:::::--===++*******#****++=--:::....:::--==+++++++++++++++++++***********##########################************************************************************######################################*******************************************#########**************************######################################*****************######################*********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+=++++++++++++++++++++++++++++++++======++==++**********************************************************************************************+++++++++++++++++++++++++++++++++=====================================++++++++=-----------::::::::::::::::::::::::::::::------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::..............
::----=====================================-------------:::::::::::::::::::::::::::::::::---------------------------------------------------------------=====================================================++++**********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++================-----------------=+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++..............:::.:..:....:::::::::::::::::::::-=+****+*+++++*+*****+-::::::::::::::::::-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------====================---------------------------------------------------------------------------------------------------------------------------------%#+%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@######*++++++++++++++++++++++++++++++++******#%@@@@@%######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########################%#################################*+*#################++++****+++*********+++++++=+==+*++========-------------------+****************************+============+******++++++++++++++***********++++++++============================--===-::::::::-++=====================================------=--======++**+***+-:::::::::::::::::::::::::::::::::::...........:::::::::.............. ....................:::::::::::::::::::..........................................................................................................................................................................::::::................................................................................................................................................................................................... ..............................................::---===============================================================================================================================----------------------------------------------------------------------------------------------------====+++++++====------------------------::::::::::::............................................................................................::-=++***+=-::...................................................................................................................................................:::-=++**############################################################********####################################################################################################****************+++++++++++++=======================-----:::..............................................::::---==+++***********++=-:::....:::--==+++++++++++++++++++++*********###########################*************************************************************####################################****************************************##############************************######################################*****************######################*********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************++++++++++++++++++++++++++++++++++=======+==+++*********************************************************************************************++++++++++++++++++++++++++++++++++====================================++++++++------------::::::::::::::::::::::::::::::--------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::..............
:----======================================-------------:::::::::::::::::::::::::::::---------------------------------------------------------------==========================================================++++*********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===============------------------+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++.............:==-::::.:::::::::::::::::::::::-++**++*++++****+*+***++-:::::::::::::::::::----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------====================--------------------------------------------------------------------------------------------------------------------------------+@*+%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@%##*###*++++++++++++++++++++++++++++++*****#%@@@@@%%**#########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######################%%################################*+*#################*+++****+++**********++++++++==+*+++========------------------=****************************+===========+******+++++++++++++++************+++++++================================-::::::::-++=====================================-------=----=++*********+=:::::::::::::::::::::::::::::::::::...........:::::::::............. ........................:::::::::::::::::.........................................................................................................................................................................::::::................................................................................................................................................................................................... .............................................:::---===============================================================================================================================----------------------------------------------------------------------------------------------------====++++++====--------------------------::::::::::::...........................................................................................::-=+****+=-::....................................................................................................................................................::-=++**############################################################********###############################################################################################****************++++++++++==========-----------------------::::::................................................::::---==+++*********++=-:::....:::--==++++++++++++++++++++++**********#########################**************************************************************####################################***####***********************########################***********************######################################*****************######################**********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************++++++++++++++++++++++++++++++++=============+*********************************************************************************************++++++++++++++++++++++++++++++++++====================================++++++++------------::::::::::::::::::::::::::::::--------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::..............
----========================================------==-----::::::::::::::::::::::::::---------------------------------------------------------------============================================================++++*********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===============------------------=++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++............:=++==-:.......:::::::::::::::-=++*++**++***+++*********+-::::::::::::::::::::---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------====================--------------------------------------------------------------------------------------------------------------------------------*@=+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%######*++++++++++++++++++++++++++++******#%@@@@@@#****##*#########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######################%%#################################**#################*+++****+++**********++++++++=++**++========------------------=****************************+===========+******+++++++++++++++*+***********+++++++==============================-::::::::-++====================================-=--------===+*****+++****+=::::::::::::::::::::::::::::::::::::...........::::::::............. .........................::::::::::::::::::.......................................................................................................................................................................:::::::................................................................................................................................................................................................... ............................................:::--================================================================================================================================-----------------------------------------------------------------------------------------------------====++++====-----------------------------:::::::::::...............::.........................................................................::-=+****+=--:....................................................................................................................................................::-=++**############################################################********########################################################################################****************+++++++++=========-------------:::::::::::::::::::::::...................................................::::----===++++****++==-:::....:::--==+++*****+++++++++++++++++*********#######################***************************************************************###########################################***********###################################***********************######################################*****************######################**********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+++++++++++++++++++++++++++=============+====++********************************************************************************************++++++++++++++++++++++++++++++++++====================================++++++++------------:::::::::::::::::::::::::::::-----------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::..............
--==========================================-----====-----::::::::::::::::::::::----------------------------------------------------------------==============================================================++++*********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===============-------------------=+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++............-++=:::::.::.:::..::::::::::-++++*++++++++++++******+*+*+:::::::::::::::::::::---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------====================--------------------------------------------------------------------------------------------------------------------------------%%=*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%######*+++++++++++++++++++++++++++*****#%@@@@@@%#**************######%%@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######################%#################################**#################*++++****+++*********++++++++=++**++========------------------=*****************************==========+*******+++++++++++++*****+**********+++++++==============================:::::::-++====================================--=-------=++++**++********+=::::::::::::::::::::::::::::::::::::...........:::::::::........... ...........................:::::::::::::::::......................................................................................................................................................................:::::::................................................................................................................................................................................................... ............................................::---================================================================================================================================------------------------------------------------------------------------------------------------------===++++===--------------------------------::::::::::............:::::........................................................................::-=+****+=--:....................................................................................................................................................::-=++**############################################################********#####################################################################################**************++++++++========----------::::::::::::::::::::::::::::::........................................................:::::--====++++++++==-:::....:::--==++**********+++++++++++++++********######################***************************************************************############################################**############################################**********************#######################################****************######################**********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+++++++++++++++++++++++++++=============+==+==+********************************************************************************************+++++++++++++++++++++++++++++++++++===================================+++++++=------------:::::::::::::::::::::::::::::------------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.............
=============================================---=====------:::::::::::::::::------------------------------------------------------------------================================================================++++**********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****+++++++++++************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++================-------------------+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ..........:=-:......:..::...::::::.:-++++++++*+++++****+++********+=:::::::::::::::::::::::::-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------=====================-------------------=----------------------------------------------------------------------------------------------------------=%#=#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@###*###*+++++++++++++++++++++++++*****%@@@@@%@%#**********************#%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######################%#################################**#################*++++*##*+++*********+++++++++++**++=========------------------****************************+==========+******+++++++++++++++****************+++++++=============================-:::::-++=====================================--=--=--=+++***************++-:::::::::::::::::::::::::::::::::::...........:::::::::........... .............................::::::::::::::::.....................................................................................................................................................................:::::::.................................................................................................................................................................................................. .............................................::---================================================================================================================================------------------------------------------------------------------------------------------------------====++====----------------------------------::::::::.........:::::::::.......................................................................:--=+****+=--:....................................................................................................................................................::-=++**#############################################################*******################################################################################**************+++++++========--------:::::::::::::::::::::..........................................................................::::::---==========--:::....:::--==++**************+++++++++++++********#####################***************************************************************#########################################################################################**********************######################################*****************#####################************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************++++++++++++++++++++++++======================+*******************************************************************************************++++++++++++++++++++++++++++++++++=====================================++++++=------------:::::::::::::::::::::::::::::--------------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.............
=============================================--======--------::::::::::::-------------------------------------------------------------------=================================================================+++++**********++++++++++++++++++++++++++++++++++++++++++++++++++++++++********++++++++++************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++================------------------:=+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=...........-:....:..:.:::::::....::=++++++++++**+++***++***++***+**+:::::::::::::::::::::::::::----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------=====================-------------------=----------------------------------------------------------------------------------------------------------+@*-#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%######*++++++++++++++++++++++++****#%@@@@%%@%#**********************+**%%@@@%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######################%#################################***################*++++*##*+++*********++++++++++++**++=========-----------------+****************************=========+*******++++++++++++++++****************+++++++============================-::::-++===================================------=--=++*++***************++-:::::::::::::::::::::::::::::::::::.......... .::::::::.......... ..............................::::::::::::::::....................................................................................................................................................................:::::::.................................................................................................................................................................................................. .............................................::---================================================================================================================================------------------------------------------------------------------------------------------------------=====+====-----------------------------------::::::::......::::::::::::......................................................................:--=+****+=--:....................................................................................................................................................::-=++**#############################################################*******###########################################################################**************+++++++=======--------:::::::::::::::.......................................................................................:::::::-----===----::::.....:::-==++****************+++++++++++++*******####################***************************************************************##########################################################################################*********************######################################*****************#####################************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************++++++++++++++++++++++++======================++*+****************************************************************************************+++++++++++++++++++++++++++++++++=======================================+++++=------------:::::::::::::::::::::::::::::--------------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::............
======================================================--------::::::::------------------------------------------------------------------===================================================================++++++++**********+++++++++++++++++++++++++++++++++++++++++++++++++++++***********+++++++++************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++================------------------::=++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++: .......::..:.::.:.:.......::-=+++*++*++++************++**+**+**+-::::::::::::::::::::::::::::-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------=-------------------------------------------=====================-------------------==---------------------------------------------------------------------------------------------------------*@+=#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#*#####*+++++++++++++++++++++*****%@@@@%%%%%**++++***************++++++*#%%%@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######################%##################################**################*++++*##*+++**********+++++++++++**++=========-----------------+****************************=========+*******++++++++++++++++*****************+++++++============================:::-++===================================--==-----=+**+++**************+*+-:::::::::::::::::::::::::::::::::::............:::::::::......... .................................:::::::::::::::...................................................................................................................................................................::::::.................................................................................................................................................................................................. .............................................::---================================================================================================================================------------------------------------------------------------------------------------------------------==========------------------------------------::::::::...:::::::::::::::...:::::.............................................................:--=+****+=--:....................................................................................................................................................::-=++**#############################################################******########################################################################**************++++++======-------:::::::::::.....................................................................................................:::::::-------:::::......:::-==++*****************++++++++++++++*******##################****************************************************************#########################################################################################********************#######################################*****************#####################************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************++++++++++++++++++++++++=======================+******************************************************************************************+++++++++++++++++++++++++++++++++=======================================+++++=------------:::::::::::::::::::::::::::::----------------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::............
======================================================----------:::---------------------------------------------------------------------==============================================+++++++++++++++++++++++++++++***********++++++++++++++++++++++++++++++++++++++++++++++++++++************+++++++*************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++================-----------------:::-++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++. ......::.............:::-=++++**++++++++*************++****+**+-:::::::::::::::::::::::::::::::::--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------==-------------------------------------------=====================-------------------==---------------------------------------------------------------------------------------------------------#@==%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@#*#####*+++++++++++++++*+++*****#%@@@@%%%%#**+*++++**********+++*+++++***###%%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######################%%#################################**################*++++*##*++++*********+++++++++++**++==========----------------=****************************+=======+*********+++++++++++++++*****************++++++++=====================----==::-++==================================-==-----==+**++*++**************+*+-::::::::::::::::::::::::::::::::::::.......... :::::::::......... ....................................:::::::::::::..................................................................................................................................................................::::::.................................................................................................................................................................................................. .............................................::---================================================================================================================================-------------------------------------------------------------------------------------------------------========--------------------------------------::::::::::::::::::::::::::::::::::............................................................:--=+****+=--:....................................................................................................................................................::-=++***#############################################################****##################################################################****************+++++++=====-------:::::::::::............................................................................................................::::::::::::::::.......:::-==++******************++++++===++++++*******################****************************************************************########################################################################################********************#########################################****************#####################*************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************++++++++++++++++++++=++========================+*************************************++++++++********************************************++++++++++++++++++++++++++++++++========================================+++++=------------:::::::::::::::::::::::::::::-----------------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::............
======================================================------------------------------------------------------------------------------==============================================+++++++++++++++++++++++++++++++++*************+++++++++++++++++++++++++++++++++++++++++++++++++**************++++++*************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++================----------------::::-++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++= .....::....::::::-==+++++++++++++*+++++*++********+**+**++*+=-::::::::::::::::::::::::::::::::::-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------====------------------------------------------=====================--------------------=--------------------------------------------------------------------------------------------------------=%%=+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######**++++++++++++++++*****#%@@@@@%%%%#*****++++++++**++++++++++***########%%%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######################%%#################################**################*++++*##*++++***#*****+++++++++++***+==========----------------=****************************+=======+*********+++++++++++++++******************++++++++====================-:--=-:-=+====================================-----==++*++**+++****************+-::::::::::::::::::::::::::::::::::::.......... .::::::::........ .....................................::::::::::::::................................................................................................................................................................::::::.................................................................................................................................................................................................. .............................................::---================================================================================================================================-------------------------------------------------------------------------------------------------------========----------------------------------------:::::::::::::::::::::::::::::::::...........................................................:--=+****+=--:....................................................................................................................................................::-=++***###############################################################################################################################***************+++++++======-------::::::::::.....................................................................................................................:::::::::::........:::-==++*******************+++++======++++********###############************************************************************###########################################################################################********************#########################################****************#####################*************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+++++++++++++++++++============================++****************************************************************************************+++++++++++++++++++++++++++++++==========================================++++=------------:::::::::::::::::::::::::::::-------------------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::............
======================================================--------------------------------------------------------------------------================================================++++++++++++++++++++++++++++++++++******************++++++++++++++++++++++++++++++++++++++++++++****************++++**************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=================---------------:::::=+*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++: .. .......:=++++++++++++++++++++++++++++++********++**++*+=::::::::::::::::::::::::::::::::::::-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------====------------------------------------------=====================-----------------------------------------------------------------------------------------------------------------------------+%#-+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##*####*++++++++++++++++***##%@@@@%%%%%****++++++++++++++++++++++**##########%%%@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######################%#################################**################*++++**##++++***#******++++++++++***+==========----------------=****************************+======+**********++++++++++++++++*******************++++++=====================--==--=+===================================---==-=+**++*+++++*****************+=::::::::::::::::::::::::::::::::::::............::::::-::....... ......................................:::::::::::::................................................................................................................................................................:::::.................................................................................................................................................................................................. .............................................::---================================================================================================================================-------------------------------------------------------------------------------------------------------========----------------------------------------::::::::::::::::::::::::::::::::::..........................................................:--=+****+==-::...................................................................................................................................................::-=++***###########################################################################################################################***************++++++=====--------:::::::::................................................................................................................................:::...........:::--=++********************++++=======+++++**********###########****************************######*********************################################################################################################*******************##########################################****************#####################*************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+++++++++++++++++++=============================+****************************************************++**********************************+++++++++++++++++++++++++++++++===========================================+++-------------:::::::::::::::::::::::::::::---------------------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::............
=======================================================-----------------------------------------------------------------------================================================++++++++*********************++++++*********************++++++++++++++++++++++++++++++++++++++++************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=================---------------:::..:++++++++++++++++++++++++++++++++++++++++++++++++++++++++++= ........-++++++++++++++++++++++*+++++++*++*****+*++*++++=:::::::::::::::::::::::::::::::::::::-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------=====-----------------------------------------====================------------------------------------------------------------------------------------------------------------------------------*@*-*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#*####*++++++++++++++****#%@@@@@%%%%%****++*+++++++++++**+++++**#########%%%%%%@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######################%##################################*################*++++**##++++***#*******+++++++++***++=========-----------------+****************************+====+******+++**++++++++++++++*+********************++++++========================--====================================------=+*++++++++*+*****************+=::::::::::::::::::::::::::::::::::::............:::::::::...... .......................................:::::::::::::...............................................................................................................................................................:::::.................................................................................................................................................................................................. .............................................::---================================================================================================================================-------------------------------------------------------------------------------------------------------========-----------------------------------------:::::::::::::---:::::::::::::::::..........................................................:--=+****++=-::...................................................................................................................................................::-=++***#####################################################################################################################***************+++++++======------:::::::::.....................................................................................................................................................::--=+++*******************++++=========+++++***********########*************************##########****************####################################################################################################******************###########################################****************#####################**************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+++++++++++++++++============================+==+***********************************************+++++++++++****************************+++++++++++++++++++++++++++++++===============================================-------------:::::::::::::::::::::::::::::---------------------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::...........
=======================================================---------------------------------------------------------------------==================================================+++++****************************************************+++++++++++++++++++++****++++++++++++**************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=================---------------::::..-+++++++++++++++++++++++++++++++++++++++++++++++++++++++++= .....=++++++++++++++++++++++++++++++++++****++++*++*+=::::::::::::::::::::::::::::::::::::::------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------======-----------------------------------------====================------------------------------------------------------------------------------------------------------------------------------#@+=#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######*+++++++++++++**#%%@@@@@%%%%#*******++++++++++++**+++**######%%%%%%%%%%@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######################%##################################**################+++++**#*++++**##******++++++++++**++===========---------------+****************************+====+******+++**+++++++++++++**+******************+**++++++======================--====================================-----=+**+++++++++++***************+*+=:::::::::::::::::::::::::::::::::::::............::::::::...... .........................................::::::::::::...............................................................................................................................................................::::.................................................................................................................................................................................................. .............................................::---=============================-==================================================================================================-------------------------------------------------------------------------------------------------------========------------------------------------------::::::::::------:::::::::::::::::.........................................................:--=+****++=-::...................................................................................................................................................::-=++***################################################################################################################***************++++++++======------:::::::::.........................................................................................................................................................::--=+++*******************++++===========++++++**********#######***********************##############################################################################################################################******************#############################################***************#####################**************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+=++++++++++=++++================================+******************************************++++++++++++++++***************************++++++++++++++++++++++++++++++================================================-------------::::::::::::::::::::::::::::-----------------------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::...........
=======================================================--------------------------------------------------------------------==================================================+++++**************************************************************+++***************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==================--------------:::....=++++++++++++++++++++++++++++++++++++++++++++++++++++++++= :+++++++++++++++++++++++++++++++++++*++*+*++*++**=:::::::::::::::::::::::::::::::::::::::-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------====-----------------------------------------=====================------------------------------------------------------------------------------------------------------------------------------#@+=%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######*++++++++++****#%@@@@@@%%%%#***********++++*+++*++++*#######%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@%%%@%%%%%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######################%####################################################+++++**#*++++***#*******+++++++++**++===========---------------=****************************+===+******++++***++++++++++**++*********************++*+++++====================--====================================-----=+***++++++++++****************+*++-::::::::::::::::::::::::::::::::::::. ..........:::::::::..... ..........................................::::::::::::..............................................................................................................................................................:::....................................................................................................................................................................................................... . .............................................::---============================--==================================================================================================------------------------------------------------------------------------------------------------------=========-------------------------------------------:::::::---------::::::::::::::::.........................................................:--=+*****+=-::...................................................................................................................................................::-==+**############################################################################################################***************++++++++======------::::::::::.............................................................................................................................................................::--==+++******************++++=============+++++***********##*********************###################################################################################################################################******************#############################################***************####################***************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+=++++++++++++++=================================++**+**+**+*************+++++++++++****+++++++++++++++++++++++++++*************++++++++++++++++++++++++++++++++++++===============================================+=-------------::::::::::::::::::::::::::::--------------------------------------------------------------:::::::::::--:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::..........
=======================================================-----------------------------------------------------------------=====================================================++++*********************************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==================--------------:::....:+++++++++++++++++++++++++++++++++++++++++++++++++++++++++ .-+++++++++++++++++++++++++++++++++++++*++*+**++*+=::::::::::::::::::::::::::::::::::::::::-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------====-----------------------------------------=====================-----------------------------------------------------------------------------------------------------------------------------=%%==%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#*###*+++++++++***#%%@@@@@@%%%%#***********++++++***++**#######%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######################%####################################################+++++**#*++++***##*******++++++++**++===========---------------=****************************+===+******+++++**+++++++++**+++***++++*****************++++++==================-=====================================----=++**++++++++++++******************++-::::::::::::::::::::::::::::::::::::............:::::::::..... ............................................::::::::::::.............................................................................................................................................................::....................................................................................................................................................................................................... . .............................................::---===========================----=================================================================================================------------------------------------------------------------------------------------------------------=========-------------------------------------------::::::----------:::::::::::::::::.......................................................::-==+*****+=--::..................................................................................................................................................::-==+***#####################################################################################################****************++++++++======-------::::::::::.................................................................................................................................................................:::--=++++++++++***********++++===============++++++********###********************##################################################################################################################################*******************#############################################***************####################****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+++++++++++++++==================================++**+***************+++++++++++++++++++++++++++++++++++++++++++++++******+***+++++++++++++++++++++++++++++++++++++===============================================+=-------------::::::::::::::::::::::::::::---------------------------------------------------------------::::::::::--:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::..........
========================================================--------------------------------------------------------------=======================================================+++**********************************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===================-------------:::.....-++++++++++++++++++++++++++++++++++++++++++++++++++++++++ .=+++++++++++++++++++++++++++++++++++++*++*++**+**-:::::::::::::::::::::::::::::::::::::::::-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------===------------------------------------------=====================-----------------------------------------------------------------------------------------------------------------------------+@#-+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%######*+++++++***#%%@@@@@@%%%%#*************+++**++++*###**###%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######################%%###################################################+++++*##*++++***###*******++++++****+===========----------------+***************************+==+******++++++***+++++++**+++***+++++++**+**************+++++========================================================--=+*****+++++++++++******************++-::::::::::::::::::::::::::::::::::::.............::::::::..... ............................................::::::::::::..................................................................................................................................................................................................................................................................................................................................................................... ...........................................:::---===========================----=================================================================================================------------------------------------------------------------------------------------------------------=========----------------------------------------------:------------:::::::::::::::::.......................................................::-==+*****++=-::..................................................................................................................................................::-==+***##############################################################################################******************++++++++======-------:::::::::.......................................................................................................................................................................:::--===+++++++++++++++++++++++=================+++++********####**************######################################################################################################################################**********+********#############################################***************####################****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+++++++++++++++===================================++**+**+*********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===============================================+==-------------::::::::::::::::::::::::::::----------------------------------------------------------------:::::::::--:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::..........
========================================================------------------------------------------------------------=========================================================+++************************####******************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++====================------------:::......=++++++++++++++++++++++++++++++++++++++++++++++++++++++- :+++++++++++++++++++++++++++++++++++++++++*+**++*+-::::::::::::::::::::::::::::::::::::::::::-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------===------------------------------------------=====================-----------------------------------------------------------------------------------------------------------------------------*@*-+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####*+*+++***##%@@@@@@@%%%%#****************++++++###*+**##%%%%@@@@@@@@@@@@@@@@@@@@@%%####%@@@@@%%%###%%%@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######################%%###################################################*++++*##*+++++**###********+++++****++===========---------------+************************+++==+*******+++++++**+++++****++***+++++++++++**+++++*******++++++=====================================================--=+**++***+++++++++++******************++-::::::::::::::::::::::::::::::::::::.............:::::::::.... ............................................:::::::::::.................................................................................................................................................................................................................................................................................................................................................................... ..........................................:::---===========================----=================================================================================================----------------------------------------------------------------------------------------------------======+====-----------------------------------------------------------::::::::::--::::::......................................................::-=++******+=--:..................................................................................................................................................::-==+***########################################################################################******************++++++++========------::::::::::............................................................................................................................................................................:::--=======+++++++++++++++++====================+++++******####***************####################################################################################################################################**********+++*******#############################################***************###################*****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************++++++++++++++=====================================++**+***********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++================================================+=--------------:::::::::::::::::::::::::::------------------------------------------------------------------::::::::--::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.........
=========================================================------------------------------------------------------==============================================================+++********************##########****************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++====================-----------:::... . .++++++++++++++++++++++++++++++++++++++++++++++++++++++ =+++++++++++++++++++++++++++++++++++++++*+****+**+-:::::::::::::::::::::::::::::::::::::::::::------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------===-------------------------------------------=====================-----------------------------------------------------------------------------------------------------------------------------#@*-*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####*++****#%%@@@@@@@%%%%##*************+++++***##*+***#%%%%%@@@@@@@@@@@@@@@@@%%%%###****#@@@@%%%####%##%%@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%######################%%###################################################*++++*###+++++**####********++++****++===========---------------=************************++==+*******++++++++***+++***++++**++++++++++++++=====+********++++=======================================================+*++=+***+++++++++++****************+**+-:::::::::::::::::::::::::::::::::::::........... :::::::::... .............................................:::::::::::.................................................................................................................................................................................................................................................................................................................................................................. ..........................................:::---===========================----=================================================================================================---------------------------------------------------------------------------------------------------=======+====-----------------------------------------------------------::::::::::--::::::......................................................::-=++**##**+==-::.................................................................................................................................................::-==+***##################################################################################******************+++++++++=======-------:::::::::::................................................................................................................................................................................::::----==============++++========-----============++++*******##****************##################################################################################################################################**********++++*******#############################################****************##################******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+++++++++++++======================================++*++*******++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=================================================+=--------------:::::::::::::::::::::::::::-------------------------------------------------------------------:::::::---:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.........
==========================================================---------------------------------------------------===============================================================++++********************##############************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++====================-----------:::.... . :+*++++++++++++++++++++++++++++++++++++++++++++++++++- .+++++++++++++++++++++++++++++++++++++++++**++**+*+:::::::::::::::::::::::::::::::::::::::::::::------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------====------------------------------------------=====================-----------------------------------------------------------------------------------------------------------------------------%@+-*%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%####******#%@@@@@@@@%%%%##*******************#%%%#####%%%%%@@@@@@@@@@@@@@@@@@@%####******%@@@%%#######***+**#%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%#######################%###################################################*++++*###++++++**#####***************+===========----------------************************++++********+++++++++***+***+++****+++++++++++++=======+********++++====================================================+**+=:=+***+++++++++++****************+**+=:::::::::::::::::::::::::::::::::::::........... .:::::::-... ..............................................::::::::::................................................................................................................................................................................................................................................................................................................................................................ .........................................::----==========================-----=================================================================================================--------------------------------------------------------------------------------------------------======++++===-----------------------------------------------------------::::::::::--::::::......................................................::-=++**##***+=-::.................................................................................................................................................::-==+***##########################################################################********************++++++++++======--------::::::::::.......................................................................................................................................................................................::::--------------============------------==========+++************************###############################################################################################################################************+++++*******#############################################****************##################******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+++++++++++++=======================================+*********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=================================================+=--------------:::::::::::::---::::::::::-------------------------------------------------------------------------::---:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.........
===========================================================---------------------------------------------====================================================================++++********************#################*******####################******************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=====================----------:::.... -+++++++++++++++++++++++++++++++++++++++++++++++++++ -+++++++++++++++++++++++++++++++++++++++++*****+**=::::::::::::::::::::::::::::::::::::::::::::::------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------====------------------------------------------=====================----------------------------------------------------------------------------------------------------------------------------=%%+-#%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####****#%@@@@@@@@%%%%##****************+**#%%%%@@@@@@%@@@@@@@@@@@@@@@@@@@@@@%##*****++%@@@@%%###*++++==+++=+#%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%######################%###################################################*+++++###*+++++**######**************+===========----------------+***************************************+++++******+++****+++++++++++++=========+********+++===================================================+**+-::=++**++++++++++*******************++=:::::::::::::::::::::::::::::::::::::. ...........:::::::::.. ...............................................:::::::::............................................................................................................................................................................................................................................................................................................................................................... .........................................::----==========================-----=================================================================================================------------------------------------------------------------------------------------------------======++++++====----------------------------------------------------------::::::::::---:::::......................................................::-=+**####**+=--::...............................................................................................................................................:::-=++***#####################################################################*****************++++++++++========--------:::::::::::.............................................................................................................................................................................................:::::::::::----------------------------------=======+++************************##########################################################################################################################***************++++++*******##############################################***************#################*******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+++++++++++++========================================+********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++====================================================--------------::::::::::::------::::::::--------------------------------------------------------------------------:---:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.........
=============================================================-----------------------------------------======================================================================++++*****************###################################################**************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=====================----------:::... .=++*++++++++++++++++++++++++++++++++++++++++++++++= -+++++++++++++++++++++++++++++++++++++++++*******+-:::::::::::::::::::::::::::::::::::::::::::::::------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------===-------------------------------------------=====================----------------------------------------------------------------------------------------------------------------------------=%%=-#%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####***#%@@@@@@@@%%%%#*********************##%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#****++#@@@@%%####*++++++==+++++#%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%######################%###################################################*+++++*##*+++++**#######*************+===========----------------+********************************************************++++++++++++++=========+*********++==================================================+*+=::::=++***++++++++*******************+++=:::::::::::::::::::::::::::::::::::::: .. . ..... :::::::::.. ................................................::::::::.............................................................................................................................................................................................................................................................................................................................................................. .........................................::----==========================-----=================================================================================================-----------------------------------------------------------------------------------------------======+++++++====----------------------------------------------------------:::::::::----:::::......................................................::-=+**####**+==-::...............................................................................................................................................:::-=++***################################################################****************++++++++++========---------::::::::::::...................................................................................................................................................................................................:::::::::::::::::-----------::-----------------====+++***********************#####################################################################################################################********************++++++********#############################################***************#################********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************++++++++++++========================================++*++****+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=====================================================--------------:::::::::::--------:::::::------------------------------------------------------------------------:-:----::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.........
===-==========================================================--------------------------------------=======================================================================+++++********#############################################################****************#####################************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=======================---------:::.... .+++++++++++++++++++++++++++++++++++++++++++++++++= -+++++++++++++++++++++++++++++++++++++*++**+*****+-::::::::::::::::::::::::::::::::::::::::::::::::-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------======-----------------------------------------======================---------------------------------------------------------------------------------------------------------------------------+%#=-#%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%###**#@@@@@@@@@%%%%##*******************######%%%%%%%@@@@@@@@@@@@@%%%%%%%%@@@@%***++*@@@@%#######*+++++++++++++*@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%#####################%%##################################################*+++++**#*+++++**#######*************+===========----------------=+**********************************+*******************+++++++++++++++==========**********++===============================================++*+-::::-==+***++++++++********************+++:::::::::::::::::::::::::::::::::::::: .. .........::::::::. ................................................::::::::............................................................................................................................................................................................................................................................................................................................................................. ........................................::----==========================-----=================================================================================================----------------------------------------------------------------------------------------------=====++++++++++===----------------------------------------------------------:::::::::-----::::......................................................::-=+**####***+=-::..............................................................................................................................................:::--=++***#########################################################*****************++++++++++========---------:::::::::::::............................................................................................................................................................................................................:::::::::::::::::::::::::::::::::------------===++***********************#########################################################################################################*******************************+++++++********#############################################***************#################********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+=+=+=++++++=========================================++*+*++*++*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=====================================================-=-------------::::::::::----------::::::--------------------------------------------------------------------------::--::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::........
==================================================++==========--------------------------------=============================================================================++++*********###############################################################************###########################********************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=======================---------:::... :++++++++++++++++++++++++++++++++++++++++++++++++=. :+++++++++++++++++++++++++++++++++++++++**+******=:..:::::::::::::::::::::::::::::::::::::::::::::::----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------=======-----------------------------------------======================---------------------------------------------------------------------------------------------------------------------------*@*--#%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#*###%@@@@@@@@@%%%###******************###***######%@@@@@@@@@@@@@%%%%%%%%%%@@@@#*+++%@@@%%########*+=+++++++++++%@@@%@%%%%%%%%%%%%%%%%%%%%%%%%#####################%%##################################################*+++++**#*++++++**######*************++==========----------------=++********************************++++++++++*****+****++++++++++++++++===========+*********++=============================================+**=:::::====+***+++++++********************++++-:::::::::::::::::::::::::::::::::::::.............::::::::: ..................................................::::::............................................................................................................................................................................................................................................................................................................................................................ .......................................::----==========================-----================================================================================================-----------------------------------------------------------------------------------------------====+++++++++++====---------------------------------------------------------:::::::::-----::::......................................................::-=+**####***+=-::.............................................................................................................................................:::--==+***####################################################********************++++++=========--------::::::::::::::..........................................................................................................................................................................................................................:::::::::::::::::::::::::::::::-------===++***********************####################################################################################################**********************************++++++++********#############################################***************#################********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************++++++++=++===========================================++*+***++*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=======================================================-------------:::::::::------------:::::--------------------------------------------------------------------------::--::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::........
==================================================+++===========-------=========------------===============================================================================++++******###################################################################********################################******************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=======================--------::::... -++++++++++++++++++++++++++++++++++++++++++++++++=. :++++++++++++++++++++++++++++++++++++++++++*+***+-...:.:::::::::::::::::::::::::::::::::::::::::::::----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------=========---------------------------------------=======================---------------------------------------------------------------------------------------------------------------------------#@*-=#%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#**#@@@@@@@@@%%#####**************+*###****######%@@@@@@@@@@@@@%%%%%%%%%%%%@@@%**+#@@@@%####*+++**++++++++++++=*@@@%@@%%%%%%%%%%%%%%%%%%%%%%%#####################%%##################################################*+++++**##++++++**#######*************+==========----------------=+++*****************************#*++++++++++****++***+++++++++++++++++===========+++********+============================================+*+-:::::-+====+**+++++++***+****************++++-:::::::::::::::::::::::::::::::::::::. ...........:::::::::. ....................................................:::............................................................................................................................................................................................................................................................................................................................................................ .......................................::---===========================------===============================================================================================----------------------------------------------------------------------------------------------====+++++++++++++===---------------------------------------------------------:::::::::-----::::......................................................::-=+**#####**+=--::...........................................................................................................................................:::--==++***###########################################**********************+++++++++=====---------:::::::::::::............................................................................................................................................................................................................................................::::::::::::::::::::::::::---==++************************###############################################################################################*************************************+++++++++********#############################################***************#################********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************++=+++++=+=============================================+++**++*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++========================================================-------------::::::::-------------::------------------------------------------------------------------------------:--::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::........
=================================================++++=============================------==================================================================================+++++******#####################################################################****###################################*****************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++========================-------:::.... .++++++++++++++++++++++++++++++++++++++++++++++++=+=+++++++++++++++++++++++++++++++++++++++***+****=:...........::::::::::::::::::::::::::::::::::::::------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------================-------------------------------------========================--------------------------------------------------------------------------------------------------------------------------=%@*-=#%%%%%%%%%%%%%%%%%%%%%#%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##%@@@@@@@%%%#######************+*##**+**#####%@@@@@@@@@@%%@%%%%%%%%%%%%%%@@@@#+*@@@@%####**+++++++++++++++++++%@%@%@@%%%%%%%%%%%%%%%%%%%%%%#####################%%##################################################*+++++*#*#++++++**#######*************+===========---------------=++++****************************#*+++++++++**********+++++++++++++++++===========+==+********+==========================================+*=:::::::-=====+**+++++++*********************+++-:::::::::::::::::::::::::::::::::::::: ...........::::::::. .................................................................................................................................................................................................................................................................................................................................................................................................................. ....................................::---==========================-------===============================================================================================---------------------------------------------------------------------------------------------====+++++++++++++++===--------------------------------------------------------:::::::::-----::::......................................................::-=+**#####**+=--::.........................................................................................................................................::::--==++****###################################********************+++++++++++++++++====-----::::::::::::::...............................................................................................................................................................................................................................................................::::::::::::::---==++************************########################################################################################*****************************************+++++++++++********##############################################**************#################*********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+=+++=+================================================++*++**+*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=========================================================-------------:::::::----------------------------------------------------------------------------------------------:---::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.......
=================================================++++===============================----==================================================================================++++*******#############################################################################################################****************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++========================-------:::.... :++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***+-................:::::::::::::::::::::::::::::::::::---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------======================-------------------=======================================--------------------------------------------------------------------------------------------------------------------------=%%+-=#%%%%%%%%%%%%%%%%%%%%%#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@%%%#########***********+*##*+***#####%@@@@@@@@@%%%%%%%%%%%%%%%%%%%%@@@%*@@@@%%#####**++++++++++++++++++*@%%%%@@@%%%%%%%%%%%%%%%%%%%%%#####################%##################################################*+++++*#*#+++++++*#######*************++==========----------------+++++******************************+++++++*+++******++++++++++++++++++===========+===+*******++=======================================+*+=::::::::-=====+**++++++**********************+++-::::::::::::::::::::::::::::::::::::::.............::::::::: .................................................................................................................................................................................................................................................................................................................................................................................................................. .................................::---==========================-------===============================================================================================---------------------------------------------------------------------------------------------====+++++++++++++++===--------------------------------------------------------:::::::::-----::::......................................................::-=+**#####**+==-::.......................................................................................................................................::::---==++*****##########################***********************+++++++++++========+++===---::::::::::::..........................................................................................................................................................................................................................................................................::::::::::---=++****************************##############################################################****##********************************************************++++++++++++********##############################################**************#################*********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+=+=+===================================================++++**+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===========================================================-------------::::::----------------------------------------------------------------------------------------------:-=----::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::......
================================++++++==========++++++====================================================================================================================++++******###############################################################################################################**************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++========================-------:::.... .++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***+-.....................::::::::::::::::::::::::::::::::------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------===============================-------=============================================--------------------------------------------------------------------------------------------------------------------------=%%+=+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@%%%############************##*+**#####%%@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@%%#%###**+++++++++++++++++++%@%%%%@@@%%%%%%%%%%%%%%%%%%%%#####################%###################################################+++++*#*#*++++++**######*************++===========---------------=++++****************************#*++++++**+++*****+++++++++++++++++++===============+********+======================================+*+-:::::::::-+=====+**++++***********************+++=::::::::::::::::::::::::::::::::::::::. ...........:::::::::. ................................................................................................................................................................................................................................................................................................................................................................................................................. ................................::---==========================-------===============================================================================================---------------------------------------------------------------------------------------------===++++++++++++++++====-------------------------------------------------------::::.::::-----::::......................................................:--=+**#####**++=-::......................................................................................................................................:::---==+++******######################*********************++++++++++========----=========--::::::.......................................................................................................................................................................................................................................................................................:::::--==+******************************************************************************************************************************************************++++++++++++++********#*############################################**************#################**********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+==+===================================================++*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===========================================================-----------------------------------------------------------------------------------------------------------------:-=------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::....
=============================++++++++++=========++++++====================================================================================================================++++*****################################################################################################################*************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++========================-------:::.... -+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*+=: . ..................:::::::::::::::::::::::::::::::----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------=====================================================================================--------------------------------------------------------------------------------------------------------------------------+%#=-+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%################***********##*****####%%@@@@@@@@@%%%%%%%%%%%%%%%%%%%%#%%@@@@@@@@@@@%%##**+++++++++++++++++++#@%%%%%%@@@%%%%%%%%%%%%%%%%%%%####################%###################################################++++++#*#*++++++**######**************+===========---------------=+++++*******************+++++*******++***++++****++++++++++++++++++++=========-=====++*******+=====================================+*=::::::::::::=+====+**+***********************+**+++=::::::::::::::::::::::::::::::::::::::. ............::::::::. ................................................................................................................................................................................................................................................................................................................................................................................................................ ...............................::---==========================------================================================================================================---------------------------------------------------------------------------------------------===+++++++++++++++++===------------------------------------------------------::::..::::-----::::......................................................:--=+**#####**++=-::....................................................................................................................................::::--===+++***********#########*******************+++++++++++++=========-------------==++===--::::...........................................................................................................................................................................................................................................................................................::::--=++*****************************************************************************************************************************************************+++++++++++++++*********############################################**************#################**********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+==+====================================================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===========================================================------------------------------------------------------------------------------------------------------------------:-=------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
============================+++++++++++========+++++++===================================================================================================================+++++****##################################################################################################################*********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++========================-------:::.... .+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=: . . ..............::::::::::::::::::::::::::::::--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------=======================================================================================--------------------------------------------------------------------------------------------------------------------------*@#=-+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%################**********##***######%%@@@@@@@@@%%%%%%%%%%%%%%%%%%%%##%%@@@@@@@@@@@%#****++++++++++++++++=+=*@@%%%%%%@@%%%%%%%%%%%%%%%%%%%####################%###################################################++++++#*#*+++++++*######**************+===========---------------=+++++******************+++++++*****+****+++++*****+++++++++++++++++++===============++******++====================================++-:::::::::::::+=====+**+**********************+++*+++=::::::::::::::::::::::::::::::::::::::: . ..........::::::::: ............................................................................................................................................................................................................................................................................................................................................................................................................... ...............................::---==========================------================================================================================================---------------------------------------------------------------------------------------------===+++++++++++++++++===------------------------------------------------------::::..::::------:::......................................................:--=+**#####**++=-::...................................................................................................................................:::---==++++***************#####*************++++++++++++==========----------::::::::--==+++==--:::.............................................................................................................................................................................................................................................................................................:::--=++*********************++******************************************************************************************************************************+++++++++++++++*********############################################**************#################**********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+==++====================================================++*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===========================================================-------------------------------------------------------------------------------------------------------------------:-=-------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
=========================+++++++++++++++=======++++++++==================================================================================================================++++*****##################################################################################################################********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=========================-=-----:::.... =++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=. ...........:::::::::::::::::::::::::::::::-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------=------------------------=========================================================================================-------------------------------------------------------------------------------------------------------------------------#@#=-+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######*#########*********###*######%%@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%###%%@@@@@@@@@%#*****+++++++++++++++++++=+%@%%%%%%%@@@%%%%%%%%%%%%%%%%%####################%%##################################################*+++++***#+++++++*######**************+============---------------++++++*****************+++++++*********+++++******+++++++++++++++++++===============+++*****++===================================++-:::::::::::::-======+**++*********************++*+++++::::::::::::::::::::::::::::::::::::::: . ..........::::::::: .............................................................................................................................................................................................................................................................................................................................................................................................................. ............................::---==========================------================================================================================================--------------------------------------------------------------------------------------------===++++++++++++++++++====-----------------------------------------------------::::..::::-----::::......................................................:--=+**#####***+=-::.................................................................................................................................::::--===++++*****************####***********++++++===========----------::::::::::::::::-==++++==-:::..............................................................................................................................................................................................................................................................................................:::-=++******************++++++++++*************************************************************************************************************************+++++++++++++++********#############################################**************#################***********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************++==+====================================================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++============================================================--------------------------------------------------------------------------------------------------------------------=---------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
========================++++++++++++++++=======++++++++==================================================================================================================++++*****##################################################################################################################********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=========================-------:::.... :+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*+*++++-. ..........:::::::::::::::::::::::::::::::----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------==--------=========================================================================================================------------------------------------------------------------------------------------------------------------------------=#@*=-*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#############********##*###%%%%%@@@@@@@@@@@@%%%%%%%%%%%%%%#%%%#####%%@@@@@@@%##******+++++++++++++++++=+++%@@%%%%%%%@@%%%%%%%%%%%%%%%%%####################%%##################################################*+++++*#*#+++++++*######**************++===========---------------+++++++***************++++++++********+++++*******+++++++++++++++++++===============+++****+++=================================+++=-:::::::::::::-=======**++**********************+*+++++:::::::::::::::::::::::::::::::::::::::. .......... .::::::::. .............................................................................................................................................................................................................................................................................................................................................................................................................. ............................::---==========================------================================================================================================--------------------------------------------------------------------------------------------===+++++++++++++++++++===-----------------------------------------------------::::..::::-----::::......................................................:--=+**######**+=-::................................................................................................................................:::---===++++*********+++++*****##*********++++=======------------::::::::::::::......:::--=++++==-:::..............................................................................................................................................................................................................................................................................................:::-==+******************++++==++++++********************************************************************************************************************++++++++++++++++++********#############################################**************#################***********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+==+=+===================================================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==============================================================-------------------------------------------------------------------------------------------------------------------=------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
======================+++++++++++++++++++=====++++++++++=================================================================================================================++++*****###################################################################################################################******+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=========================-------::..... .+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*+++-. ........:::::::::::::::::::::::::::::::--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------===============================================================----------============================================------------------------------------------------------------------------------------------------------------------------=%@*==*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#############*******###**##%%%@@@@@@@@@@@@@%%%%%%%%%%%%%###%%######%%@@@@@@@%#******++++++++++++++++++=+++#@@%%%%%%%%@@%%%%%%%@%%%%%%%%%####################%##################################################*+++++*#*#+++++++**######**************+===========---------------=++++++***************++++++++********+++***+++****++++++++++++++++++===============++++***+++================================+++==+-::::::::::::========+**++***********************+++++-::::::::::::::::::::::::::::::::::::::. .......... .::::::::: ............................................................................................................................................................................................................................................................................................................................................................................................................ ...........................:::---==========================------================================================================================================--------------------------------------------------------------------------------------------===+++++++++++++++++++===-----------------------------------------------------::::..::::-----::::......................................................:--=+**######**+=-::...............................................................................................................................:::---===++++++++++++++++++++***********++++++===--------:::::::::::::::::..............::--=+++++=-:::...............................................................................................................................................................................................................................................................................................::--=+*****************+++========++++++*************************************************************************************************************+++++++++++++++++++++********##############################################*************#################***********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+=++=+====================================================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===============================================================-------------------------------------------------------------------------------------------------------------------=------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
=====================+++++++++++++++++++++====++++++++++=================================================================================================================++++*****##################################################################################################################******+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==========================-------::.... :+*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=: ........:::::::::::::::::::::::::::::::--------------------------------------------------------------------------------------------------------------------------------------------------------------------------==--==============================================================-----------------========================================------------------------------------------------------------------------------------------------------------------------=%@*=-*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%############******###****##%%%@@@@@@@@@@@@%%%%%%%%%%%%###%%#######%%@@@@@@@%##*****++++++++++++++++++++++*@@%%%%%#%%%%%%%%%%%%%%%%%%%%%####################%##################################################*+++++*#*#*+++++++*######**************+============--------------=+++++++****###******+++++++++********++****+++****++++++++++++++++++===============+++++**+++===============================+++===+=-::::::::::-==+=====+**++************************++++-::::::::::::::::::::::::::::::::::::::: ............::::::::: ........................................................................................................................................................................................................................................................................................................................................................................................................... ...........................:::---==========================------================================================================================================--------------------------------------------------------------------------------------------===+++++++++++++++++++===-----------------------------------------------------::::..::::-----::::.....................................................::--=+**######**+=-:::.............................................................................................................................::::--====++++++++===========++*********++++++==----::::::::::::::::.....................::-==+++++=-:::...............................................................................................................................................................................................................................................................................................::--=++****************++===-----====+++++*********************************************************************************************************+++++++++++++++++++++++********##############################################**************################************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************++==+=====================================================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===============================================================-------------------------------------------------------------------------------------------------------------------=------------------:::-----::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
===================++++++++++++++++++++++++++++++++++++++================================================================================================================++++*****##################################################################################################################******+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==========================-------::... ..:-=+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-. ........::::::::::::::::::::::::::::::------------------------------------------------------------------------------------------------------------------------------------------------------=========-============================================================================-----------------------============================-=====------------------------------------------------------------------------------------------------------------------------+%%*=-*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##*########*****###***####%%@@@@@@@@@@@@%%%%%%%%%%%%###%########%%@@@@@@@%##******+++++++++++++++++=+++++%@%%%%%#%%%%%@%%%@%%@%%%%%%%%####################%##################################################*+++++*#*#*+++++++*######**************++===========--------------=++++++++****##******+++++++++********+***++++++****+++++++++++++++++===============+++==+*+++==============================+++=======-:::::::::=========+**++*************************+++-::::::::::::::::::::::::::::::::::::::: .......... .::::::::. ........................................................................................................................................................................................................................................................................................................................................................................................................ ...........................:::---==========================------================================================================================================--------------------------------------------------------------------------------------------====++++++++++++++++++====----------------------------------------------------::::..::::-----::::.....................................................::--=+**######**+=--::.............................................................................................................................:::--================-------==++********+++++===--::::::::::.............................::-==+++++=-::................................................................................................................................................................................................................................................................................................::--=++****************++==---------===+++++*******************************************************************************************************+++++++++++++++++++++++********##############################################**************################************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+===+======================================================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++================================================================-------------------------------------------------------------------------------------------------------------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
=================++++++++++++++++++++++++++++++++++++++++================================================================================================================++++*****#####################################################################################################*****#######*******+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==========================-------:::..::-=++++**++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=: .........:::::::::::::::::::::::::::::----------------------------------------------------------------------------------------------------------------------------------------------------========================================================================================---------------------------======================---=====------------------------------------------------------------------------------------------------------------------------+%%+=-*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###########***####**##%%%%@@@@@@@@%%@@@%%%%%%%%%%##%%%%########%%@@@@@@@#*******++++++++++++++++++++++++*@@%%%%%#%%%%%%%%%%%@%%%%%%%%####################%##################################################*++++++**#*+++++++*######***************+============--------------+++++++++**####****++++++++++************++++++****+++++++++++++++++===============+++==++*++=========================================-:::::::-==+=======+*++*************************+++-:::::::::::::::::::::::::::::::::::::::. ...........::::::::: ....................................................................................................................................................................................................................................................................................................................................................................................................... ...........................:::---==========================------================================================================================================--------------------------------------------------------------------------------------------====+++++++++++++++++++===----------------------------------------------------::::..::::-----::::.....................................................::--=+**######**+=--::.............................................................................................................................:::--========-----------::---=++********++++===--::::....................................::-==+++++=-::................................................................................................................................................................................................................................................................................................:::-=++***#************++==--:::::----===++++******************************************************************************************************+++++++++++++++++++++++********##############################################**************################*************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+==========================================================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=================================================================--------------------------------------------------------------------------------------------------------------------=------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
==============++++++++++++++++++++++++++++++++++++++++++++===============================================================================================================++++*****###################################################################################################**********###*******+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===========================-------==++++**++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++: .........:::::::::::::::::::::::::::-----------------------------------------------------------------------------------------------------------------------------------------------------========================================================================================----------------------------====================-----====------------------------------------------------------------------------------------------------------------------------+%%+--*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%################**###%%%@@@@@@@@%#%@@%%%%%%%%%###%%%%#########%@@@@@@@%********+++++++++++++++++++++++++%@%%%%%#%%%%%%%%%%%%@%%%%%%%####################%%#################################################*++++++*##*+++++++***####***************+=============-------------++++++++++***##****++++++++++************+++++++****++++++++++++++++===============+++===+*++==============================+===========-::::::===========+*****************************++-:::::::::::::::::::::::::::::::::::::::. ..........::::::::: ...................................................................................................................................................................................................................................................................................................................................................................................................... ...........................:::---==========================------================================================================================================--------------------------------------------------------------------------------------------====+++++++++++++++++++===----------------------------------------------------::::...:::-----::::.....................................................::-==+**######**+==-::.............................................................................................................................:::----=--------::::::::::::-==+********++++===--:::.....................................::-==++++==-::................................................................................................................................................................................................................................................................................................:::-=++***##***********++=--:::::::::---==++++*****************************************************************************************************++++++++++++++++++++++++*******##############################################**************################*************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+===========================================================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=================================================================--------------------------------------------------------------------------------------------------------------------=-------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
============++++++++++++++++++++++++++++++++++++++++++++++===============================================================================================================++++*****###################################################################################################********************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===========================----=++*******+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=: ..........:::::::::::::::::::::::::----------------------------------------------------------------------------------------------------------------------------------------------------==========================================================================================----------------------------===================-----====------------------------------------------------------------------------------------------------------------------------*%%=-=*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##%%%%%###########%##*###%%%@@@@@@@@%**@@@%%%%%%%%####%%@@%#######%@@@@@@@@#********+++++++++++++++++++++++++#@@%%%%##%%%%%%%%%%%%%%%%%%%%###################%%#################################################*++++++*#**++++++++**##*#***************+=============-------------=+++++++++++******++++++++++*************+++++++****++++++++**++++++===============+++=-==+++===========================================-::::=+==========+******+************************-:::::::::::::::::::::::::::::::::::::::: ...........:::::::: .................................................................................................................................................................................................................................................................................................................................................................................................... ...........................:::---==========================------================================================================================================--------------------------------------------------------------------------------------------====+++++++++++++++++++===----------------------------------------------------::::...:::-----::::.....................................................::-==+**######**++=-::.............................................................................................................................::::-------:::::::::::::::::--=+********++++===--:::.....................................::-==++++==-::.................................................................................................................................................................................................................................................................................................::-==+***##***********++=--::::::::::---==+++*****************************************************************************************************++++++++++++++++++++++++*******##############################################**************################*************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+=+=========================================================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==================================================================--------------------------------------------------------------------------------------------------------------------=--------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
==========++++++++++++++++++++++++++++++++++++++++++++++++===============================================================================================================++++*****###################################################################################################********************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===========================---=+************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-. .............:::::::::::::::::::::-----------------------------------------------------------------------------------------------------------------------------------------------------===========================================================================================----------------------------==================-------==------------------------------------------------------------------------------------------------------------------------*%%=--*%%%%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####%%%%%#########%######%%@@@@@@@@@@#**%@@%%%%%%#####%%@@@%#######%@@@@@@@%#**##****+++++++++++++++++++++++++*@@%%%%#%%%%%%%%%%%%%%%%%%%%%###################%%#################################################*++++++*##*++++++++*####*#***************+============-------------=+++++++++++++++++++++++++++*************++++++++****++++++***++++++================++==--=++============================================--===============+****************************+*=:::::::::::::::::::::::::::::::::::::::: . . . ......::::::::: .................................................................................................................................................................................................................................................................................................................................................................................................... .........................:::--==========================-------================================================================================================---------------------------------------------------------------------------------------------===+++++++++++++++++++====---------------------------------------------------:::....:::-----::::.....................................................::-==+**######**++=-::..............................................................................................................................:::::::::::::::..........::--=+********+++====--::......................................::-==++++=--::.................................................................................................................................................................................................................................................................................................::-==+****##**********++=--::::...:::::--==+++*****************************************************************************************************+++++++++++++++++++++++********#############################################**************################**************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+============================================================+*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===================================================================--------------------------------------------------------------------------------------------------------------------=------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
========+++++++++++++++++++++++++++++++++++++++++++++++++++==============================================================================================================++++*****###################################################################################################********************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==========================---=+*************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++: ..............:::::::::::::::::::------------------------------------------------------------------------------------------------------------------------------------------------------=============-===============================================================================-------------------------==================-------==-----------------------------------------------------------------------------------------------------------------------=#%%=--*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######%%%%%#######%%#*###%%%@@@@@@@@@%***%@%%%%%%######%@@@@%######%@@@@@@@@%######**+++++++++++++++++++++++++=+%@%%%%%#%%%%%%%%%%%%%%%%%%%%####################%#################################################*++++++*###++++++++*####*#***************+============-------------=+++++++++++++++++++++++++++*************++++++++****++++++***++++++================++=====+++==============================================+========++===+******************************=::::::::::::::::::::::::::::::::::::::::. . . . ......::::::::: .................................................................................................................................................................................................................................................................................................................................................................................................... .........................::---==========================------=================================================================================================---------------------------------------------------------------------------------------------===+++++++++++++++++++====---------------------------------------------------:::....::::----::::.....................................................::-==+**######**++=-::...............................................................................................................................:::::::::::.............::--=+********++++===--:::.....................................::-==++++=--::.................................................................................................................................................................................................................................................................................................::--=+****##**********++=--:::......:::--==++++****************************************************************************************************+++**++++++++++++++++++********#############################################**************################**************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+=+==========================================================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===================================================================--------------------------------------------------------------------------------------------------------------------=--------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
======+++++++++++++++++++++++++++++++++++++++++++++++++++++==============================================================================================================++++*****###################################################################################################*******************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++============================+*******+*******+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++- ................:::::::::::::::::------------------------------------------------------------------------------------------------------------------------------------------------------=========-----------------===================================================================------------------------==================-------=------------------------------------------------------------------------------------------------------------------------=#@%=--*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#*###*##%%###############%@@@@@@@@@@%#***%@%%%%%##%###%%@@@@%######@@@@@@@@@@@@%%%#*++++++++++++++++++++++++++++#@@%%%%%%%%%%##%%%%%%%%%%%%%%###################%#################################################*++++++*###*+++++++*####*#**+************+============--------------+++++++++++++++++++++++++++*************+++++++++****+++++**++++++++===============++==++++++============================================+===============+******************************=::::::::::::::::::::::::::::::::::::::::. . ..... .:::::::: .................................................................................................................................................................................................................................................................................................................................................................................................... ........................::---==========================------=================================================================================================---------------------------------------------------------------------------------------------===++++++++++++++++++++===---------------------------------------------------:::....::::----::::.....................................................::-==+**######**++=-::.................................................................................................................................:::::.................::--=+********++++===--:::.....................................::-==++++=--::.................................................................................................................................................................................................................................................................................................::--=++****#**********++=--:::.......:::--==+++*********************************************************************************************************++++++++++++++++++********#############################################**************################***************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************=============================================================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++====================================================================--------------------------------------------------------------------------------------------------------------------=-----------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
====+++++++++++++++++++++++++++++++++++++++++++++++++++++++==============================================================================================================+++++*****###################################################################################################******************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=========================++*******************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++= ..................::::::::::::::::-----------------------------------------------------------------------------------------------------------------------------------------------------=====---------------------------============================================================-----------------------==================--------------------------------------------------------------------------------------------------------------------------------=%@%=--*%%%%%%%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%################%#######%@@@@@@@@@@@#****%@%%%%%#%%###%%@@@@%#####@@@@@@@@@@@@@@@@@%%#*+++++++++++++++++++++++++*@@%%%%%%%%%%%%%%%%%%%%%%%%%%###################%#################################################*+++++++#*#*++++++++#####***+************+=============-------------=+++++++++++++++++++++++++****#**********+++++++++***++++***++++++++===============+++++++++++==-==================================================+=====+******************************=::::::::::::::::::::::::::::::::::::::::: ..... .::::::::. .................................................................................................................................................................................................................................................................................................................................................................................................... ........................::---==========================------=================================================================================================---------------------------------------------------------------------------------------------===++++++++++++++++++++===---------------------------------------------------:::....::::----::::.....................................................::-==+**######**++=-::.......................................................................................................................................................:::-=++***#***++++===--:::....................................:::-=+++++=--::.................................................................................................................................................................................................................................................................................................::--=++****#**********++=--:::........:::-==+++**********************************************************************************************************+++++++++++++++++********#############################################**************################***************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+=============================================================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=====================================================================-------------------=======------------------------------------------------------------------------------------------=-----------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
===++++++++++++++++++++++++++++++++++++++++++++++++++++++++==============================================================================================================+++++*****#####################################################################################################****************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++========================+*********************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++. .....................::::::::::::::::--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------==========================================================-------------------===================--------------------------------------------------------------------------------------------------------------------------------+%@%=--*%%%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##*##################%%@@@@%@@@@@@%#****%%%%%%%#%%#####%@@@#####%@@@@@@@@@@@@@@@@@@@@%*+++++++++++++++++++++=+++%@%%%%%%%%%%%%%%%%%%%%%%%%%%###################%##################################################+++++++###*++++++++*####*#*+************+=============-------------=+++++++++++++++++++++++++*###***********+++++++++****+++**+++++++++===============++++++++++=+================================================++==+====++******************************+:::::::::::::::::::::::::::::::::::::::::. . . ::::::::: ................................................................................................................................................................................................................................................................................................................................................................................................... .......................::---==========================------=================================================================================================---------------------------------------------------------------------------------------------===++++++++++++++++++++===---------------------------------------------------:::....::::----::::.....................................................::--=+**#######*++=-::.......................................................................................................................................................:::-=++***#****++++===-:::....................................:::-=+++++=-:::.................................................................................................................................................................................................................................................................................................:::-=++***************++=--:::........:::--=+++**********************************************************************************************************+++++++++++++++++********#############################################**************################***************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+==============================================================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=====================================================================-----------------===========----------------------------------------------------------------------------------------=-------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==============================================================================================================+++++******######################################################################################################**************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++======================+**********************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++- ........................:::::::::::::::::-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------=========================================================----------------===================---------------------------------------------------------------------------------------------------------------------------------+%@%=--*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####################%@@@%%##@@@@@@%*****%%%%%%%%%######%@@@####%@@@@@@@@@@@@@@@@@@@@@@@*++++++++++++++++++++=+++#@@%%%%%%%%%%%%%%%%%%%%%%%%%###################%%#################################################*++++++###*++++++++*####*#***************+============-------------=+++++++++++++++++++++++++*##*******++***++++++++++****+***+++++++++===============+++==+++++=++=-=====================================================++++************************+****+:::::::::::::::::::::::::::::::::::::::::. . . .:::::::: ................................................................................................................................................................................................................................................................................................................................................................................................... ......................::---==========================------=================================================================================================---------------------------------------------------------------------------------------------===++++++++++++++++++++===---------------------------------------------------:::....::::---:::::......................................................:--=+**#######*++=-::.......................................................................................................................................................:::-=++**##****++++===-:::....................................:::-=+++++=-::..................................................................................................................................................................................................................................................................................................:::-==+***************++==-:::.........::--=+++**********************************************************************************************************+++++++++++++++++********##############################################*************################****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+==============================================================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++======================================================================----------------===============-------------------------------------------------------------------------------------==--------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==============================================================================================================+++++******#######################################################################################################*************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++====================+************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++= .............................::::::::::::::::::------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------========================================================----------=====================---------------------------------------------------------------------------------------------------------------------------------+%@#=--*%%%%%%%%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#*####****###*#*##%@@%####%@@@@@%#*****%%%%%%%%########%@%####@@@@@@@@@@@@@@*********#*++++++++++++++++++++++++*@@%%%%%%%%%%#%%#%%%%%%%%%%%%##################%%#################################################*++++++*###++++++++*##*#*#***************+============--------------++++++++++++++++++++++++********++++++*+++++++++++****+**+++++++++++==============++===+++++=++=--===========================================--------=++*++***********************+****+-::::::::::::::::::::::::::::::::::::::::. . .::::::::. ................................................................................................................................................................................................................................................................................................................................................................................................... ......................::---==========================------================================================================================================----------------------------------------------------------------------------------------------===++++++++++++++++++++===---------------------------------------------------:::....::::---:::::......................................................::-=++**######**+=-::........................................................................................................................................................::-=++**##****++++===--::....................................:::-=++++==-::..................................................................................................................................................................................................................................................................................................:::--=+***************++==-:::.........::--==++**********************************************************************************************************+++++++++++++++++********##############################################*************################****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+===============================================================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=======================================================================--------------==================-------------------------------------------------------------------------------------=---------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==============================================================================================================+++++******#######################################################################################################*************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==================++**************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ... ..............................::::::::::::::::::::----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------===================================================================================---------------------------------------------------------------------------------------------------------------------------------+%@#=--*%%%%%%%%%%%%%%%%@%@%#%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#***********####%@@%###*##@@@@@@#*****#%%%%%%%%##############%@@@@@@@@@@@@@@*+++++++++++++++++++++++++++++++++++%@%%%%%%%%%%%%%##%%%%%%%%%%%##################%%#################################################*++++++*###+++++++++##*#*#***************+============--------------=++++++++++++++++++++++++*****+**++++++++++++++++++******+++++++++++=============+++===++=++==++=--==========================================-:::::::++++++*****************************-::::::::::::::::::::::::::::::::::::::::: . . ::::::::: ................................................................................................................................................................................................................................................................................................................................................................................................... .....................::---==========================------================================================================================================----------------------------------------------------------------------------------------------===++++++++++++++++++++===--------------------------------------------------::::.....:::---:::::......................................................::-=++**######**+=-::........................................................................................................................................................::-=++***#****+++++==--::....................................:::-=++++=--::..................................................................................................................................................................................................................................................................................................:::--=+***************++==-:::.........::--==+++********************************************************************************************************++++++++++++++++++*******###############################################*************#################***************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+================================================================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++========================================================================-------------==================--------------------------------------------------------------------------------------=----------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==============================================================================================================+++++******########################################################################################################************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==================+****************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++: ......................................::::::::::::::::::::::--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------===============================================================================---------------------------------------------------------------------------------------------------------------------------------+%@#=--+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#**+******##%%@@@%#**#####@@@@@@******#%%%%%%%%##############@@@@@@@@@@@@@@@*+++++++++++++++++++++++++++++++++++#@%%%%%%%%%%%%%%%%%%%%%%%%%%###################%#################################################*++++++*###*++++++++#*##*##*+************+============---------------+++++++++++======+++==++****************++++++++++**********++++++++============+++==+++=====+*=-==-======================================++++====++++++++++++*************************-::::::::::::::::::::::::::::::::::::::::: . .:::::::: ................................................................................................................................................................................................................................................................................................................................................................................................ ......................::---==========================------================================================================================================---------------------------------------------------------------------------------------------====++++++++++++++++++++===--------------------------------------------------:::......::::--:::::......................................................::--=+***#####**+=-::........................................................................................................................................................::-=++***#****+++++==--::....................................::--=++++=--::...................................................................................................................................................................................................................................................................................................::--=++**************++==-:::.........:::--=++***********************************************************************************************************++++++++++++++++********##############################################*************#################****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+===+============================================================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++========================================================================------------======================-----------------------------------------------------------------------------------=-----------------------------------------------------:::::::::-------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==============================================================================================================+++++******########################################################################################################************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++================++*****************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++= .............................................:::::::::::::::::::::--------------------------------------------------::::::::------------------------------------------------------------------------------------------------------------------=============================================================================---------------------------------------------------------------------------------------------------------------------------------*%@#=--+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*++++++**#%@@%##**######*%@@@@@#******#%%%%%%%%#############%@@@@@@@@@@@@@@@#*++++++++++++++++++++++++++++++++++#@%%%%%%%%%%%%%%%%%%%%%%%%%%###################%#################################################*++++++*###*++++++++**##*##*+************+==============-------------=+++++++=========+++++++********************+++++++*****#*****++++++++++=====-=++*+==+++======++=--=========++++++++++++++++++++==========++++++++++++++++++++*************************-:::::::::::::::::::::::::::::::::::::::::. . .::::::::. ................................................................................................................................................................................................................................................................................................................................................................................................ ......................::---==========================------================================================================================================--------------------------------------------------------------------------------------------=====++++++++++++++++++++===--------------------------------------------------:::......::::--:::::......................................................:::-=++**#####**+=-::........................................................................................................................................................::-=++***#*****++++==--::....................................::--=++++=--::...................................................................................................................................................................................................................................................................................................:::-=++**************++==--::.........:::--=+++**********************************************************************************************************+++++++++++++++++*******##############################################*************#################****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+=================================================================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==========================================================================-----------=======================----------------------------------------------------------------------------------=------------------------------------------------------::::::::-------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+++++++++++++++*******++++++++++++++++++++++++++++++++++++++=============================================================================================================+++++******########################################################################################################***********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++================+******************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++- ....................................................:::::::::::::::::::::-----------------------------------------::::::::::::::::::-----------------------------------------------------------------------------------------------------------============================================================================---------------------------------------------------------------------------------------------------------------------------------*%@#=--+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#*++++++++*******++***#####@@@@@@*******#%%%%%%%##############@@@@@@@@@@@@@@@@%**++++++++++++++++++++++++++++++++=*%%%%%%%%%%%%%%%%#%%%%%%%%%%%##################%#################################################*+++++++###*++++++++***#*****************++============---------------=++============++++++++*********************++++++++**********++++*****++====+***=-=++==-====+*=---=-=====++*****++++++++++================+++++*++++++++++++******************+******-:::::::::::::::::::::::::::::::::::::::::. ::::::::: ................................................................................................................................................................................................................................................................................................................................................................................................ ......................::---==========================-----=================================================================================================---------------------------------------------------------------------------------------==========++++++++++++++++++++===--------------------------------------------------:::......::::-::::::.......................................................::--=++**####**+=-::........................................................................................................................................................::-=++***#*****++++==--::....................................::--=+++==-:::...................................................................................................................................................................................................................................................................................................:::-=++**************+++=--::.........:::--=+++**********************************************************************************************************+++++++++++++++++*******##############################################*************################******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+=+===============================================================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===========================================================================----------=========================---------------------------------------------------------------------------------=--------------------------------------------------------::::::--------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+++++++++++*************++++++++++++++++++++++++++++++++++++=============================================================================================================+++++******########################################################################################################***********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==============+********************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=. ............................................................:::::::::::::::::::::----------------------------------:::::::::::::::::::::::-------------------------------------------------------------------------------------------------------==========================================================================----------------------------------------------------------------------------------------------------------------------------------*%@#=--=%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####%%%%%%%%%%%%%%%%%%%%%%*+++++++++++++++++++*####*#@@%@@#*******#%%%%%%%#############%@@@@@@@@@@@@@@@@@**++++++++++++++++++++++++++++++++++%@%%%%%%%%%%%#%%#%%%%%%%%%%%##################%%################################################*+++++++###*++++++++****#*****************+============---------------=======+++++++++++++++*********************+++++++++++********+*++*****++++++++*+==+++========++=----=++++++++++++=============================++*+++++++++++*******************+**+**-:::::::::::::::::::::::::::::::::::::::::: .:::::::: . ............................................................................................................................................................................................................................................................................................................................................................................................... ......................::---==========================-----=================================================================================================----------------------------------------------------------------------------=====================++++++++++++++++++++===--------------------------------------------------:::......:::::::::::........................................................::-=++**####**+=--:........................................................................................................................................................::-=++***##****++++==--::....................................::--=+++==-::....................................................................................................................................................................................................................................................................................................:::-==+***************++=--::..........::--==++**********************************************************************************************************+++++++++++++++++*******##############################################*************################******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+=+================================================================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++============================================================================-------============================--------------------------------------------------------------------------------=--------------------------------------------------------:::::-----------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
++++++++++**************++++++++++++++++++++++++++++++++++++============================================================================================================++++++******########################################################################################################***********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=============+********************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*+- .................................................................:::::::::::::::::::::::---------------------------:::::::::::::::::::::::::::::-------------------------------------------------------------------------------------------------==========================================================================-------------------------------------------------------------------------------------------------==-------------------------------*%@#=--=%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#++*+++++++++++++++++******%@#%@@********#%%%%%%%############%@@@@@%%%@@@@@@@@@@**+++++++++++++++++++++++++++++++=++#@%%%%%%%%%%%#%%##%%%%%%%%%%##################%%################################################*+++++++*##*+++++++++***#*****************+==============----------====+++++++++++++++++++++++*******************++++++++++++*******++*****+++++++++++===+++=====+===+=-=-=+==========================================+**+++++++++++******************+**+**-::::::::::::::::::::::::::::::::::::::::::. .::::::::. . ............................................................................................................................................................................................................................................................................................................................................................................................... .....................::---==========================-----=================================================================================================--------------------------------------------------------------------------======================+++++++++++++++++++++===--------------------------------------------------:::......:::::::::::........................................................::--=++*####**+=--:........................................................................................................................................................::-==+***##*****+++==--::....................................::--=++==--::....................................................................................................................................................................................................................................................................................................:::-==+***************++=--:::.........:::-==++***********************************************************************************************************++++++++++++++++*******##############################################*************################*******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************===================================================================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==============================================================================----===============================-------------------------------------------------------------------------------=------------------------------------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+++++++++*****************+++++++**+++++++++++++++++++++++++============================================================================================================++++++******#######################################################################################################************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++============+**********************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*+. .........................................................................:::::::::::::::::::::---------------------::::::::::::::::::::::::::::::::::------------------------------------------------------------------------------------------============================================================================-------------------------------------------------------------------------------------------------====-----------------------------*%@#=--=#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#+++++++++++++++++++++++**#@%*@@#********#%%%%%%#############@@@@@%%%%@@@@@@@@@@#**++++++++++++++++++++++++++++++++=*@@%%%%%%%%%###%%#%%%%%%%%%%##################%%################################################*+++++++*##*+++++++++*********************+=============-------====+++++++====================+++****************++++++++++++++******+***++++++++++++=-==++====--=+==*=--=++===========================================****+*+++++++******************+*****=::::::::::::::::::::::::::::::::::::::::::. :::-::::: . ................................................................................................................................................................................................................................................................................................................................................................................................ .....................::---==========================-----=================================================================================================-------------------------------------------------------------------------============++++++++++++++++++++++++++++++++===--------------------------------------------------:::......::::::::::..........................................................::-=++**###**+=--::.......................................................................................................................................................::-==+***##*****++++==-::....................................::--==+==--::....................................................................................................................................................................................................................................................................................................:::--=+***************++=--:::.........:::-==++************************************************************************************************************+++++++++++++++*******##############################################*************################*******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+===================================================================++++++++++++++++++++++++++++++++++++++++++++++++++++++++====================================================================================================================-----------------------------------------------------------------------------==------------------------------------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
++++++++***************************+++++++++++++++++++++++++============================================================================================================++++++******###############################################################********###############################************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===========+***********************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++: ...............................................................................::::::::::::::::::::::::::::::--::::::::::::::::::::::::::::::::::::::::::::-----------------------------------------------------------------=-----------------=============================================================================------------------------------------------------------------------------------------------------=====-----------------------------*%@#=--=#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#*+++++++++++++++++++++++*%@**@@**********%%%%%%############%@@@@%%%#%@@@@@@@@@@%**+++++++++++++++++++++++++++++++==+%@%%%%%%%%%####%##%%%%%%%%%%##################%#################################################+++++++*###+++++++++*********************+=============--====+++++++++=========================++++++++++++++++++++++++++++++**++***++**++++++++++++=-==++=-==--====++==++++==========================================+***+++++++++******************+***+*=::::::::::::::::::::::::::::::::::::::::::: ::::::::: ............................................................................................................................................................................................................................................................................................................................................................................................... .....................::---==========================----==================================================================================================-----------------------------------------------------------------------=======+++++++++++++++++++++++++++++++++++++++===--------------------------------------------------:::......::::::::::..........................................................::-=++**###**+=--::.......................................................................................................................................................::--=+***##******+++==-:::...................................::--=====-::......................................................................................................................................................................................................................................................................................................::--=++****#*********++=--:::.........:::--=+++***********************************************************************************************************+++++++++++++++*******##############################################*************################*******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+====================================================================++++++++++++++++++++++++++++++++++++++++++++++++++++++======================================================================================================================----------------------------------------------------------------------------==--------------------------------------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
++++++++****************************++++++++++++++++++++++++============================================================================================================++++++*****###############################################################************##################*****####*************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==========+*************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++= .....................................................................................::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-----------------------------------------------------------===========-------===============================================================================------------------------------------------------------------------------------------------------=====-----------------------------*@@#=--=#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#*+++++++++++++++++++++#@#*#@%**********%%%%%%###########%@@@@@%%##%@@@@@@@@@@%**+++++++++++++++++++++++++++++++=++#@@%%%%%%%%%###%##%%%%%%%%%%##################%#################################################+++++++*###+++++++++*********************+================++++++++++============================+++++++++++++++++++++++++++++++++++**+**+++++++++++=-==+++====-===+=++=++*++===========================================+*+*++++++++*****************++***+*=::::::::::::::::::::::::::::::::::::::::::: .::::::::. ............................................................................................................................................................................................................................................................................................................................................................................................... .....................::---==========================----==================================================================================================----------------------------------------------------------------------=====++++++++++++++++++++++++++++++++++++++++++===--------------------------------------------------:::......::::::::::..........................................................::-==+**###**+=--::.......................................................................................................................................................::--=+***####*****++==-:::...................................::--====--::......................................................................................................................................................................................................................................................................................................::--=++****#*********++==-:::..........::--==++***********************************************************************************************************+++++++++++++++*******##############################################**************################*******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+===================================================================++++++++++++++++++++++++++++++++++++++++++++++++++++++======================================================================================================================----------------------------------------------------------------------------==---------------------------------------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+++++++*****************************++++++++++++++++++++++++============================================================================================================++++++*****###############################################################**************************************##************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=+======+****************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*=. ............................................................................................:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-------------------------------------------------------------==============================================================================================------------------------------------------------------------------------------------------------=====-----------------------------*@@*=--=#%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#*++++++++++++++++++*%%*+%@#*#********%%%%%###########%@@@@@%%%%##@@@@@@@@@@@**++++++++++++++++++++++++++++++++==*@@%%%%%%%%%######%%%%%%%%%%##################%#################################################+++++++*###*++++++++*#*******************++==========+++++++++++++===============================+++++++++++++++++++++++++++++++++++*+**+++++++++++==-=+++====--==+++++++++++===========================================++*+*+***++******************+**+**+:::::::::::::::::::::::::::::::::::::::::::. ::::::::: .............................................................................................................................................................................................................................................................................................................................................................................................. ...................:::---==========================----==================================================================================================---------------------------------------------------------------------=====+++++++++++++++++++++++++++++++++++++++++++====-------------------------------------------------:::......::::::::::...........................................................:--=+**###**+=--::.......................................................................................................................................................::--=+***###******+++=--::...................................::-=====--::......................................................................................................................................................................................................................................................................................................:::-=++***#*##*******++==-:::..........:::-==++****************************************************************************+++++++++++++******************+++++++++++++++********##############################################************#################*******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+====================================================================++++++++++++++++++++++++++++++++++++++++++++++++++++=========================================================================================================================---------------------------------------------------------------------------=----------------------------------------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
++++++*******************************++++++++++++++**+++++++============================================================================================================++++++*****##############################################################***************************************##************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=========+******************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**= ....................................................................................................::::::::::::::::::::::::::::::::::::::::::::::.......:::::::::::------------------------------------------------------------=============================================================================================------------------------------------------------------------------------------------------------=====-----------------------------*@@*=--=#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#*++++++++++++++++#%%**@@#*#********%@%%%%##########%@@@@@%%%%#%@@@@@@@@@@@#*++++++++++++++++++++++++++++++=++=+%@%%%%%%%%#######%%%%%%%%%%##################%#################################################+++++++*###*+++++++++#*******************++=====++++++++++**+++==================================+++++++++++++++++++++++++++++++++++*+**++++++++++===-=+++===-=--=+++++++++++===========================================+*+**++++***********************+**+:::::::::::::::::::::::::::::::::::::::::::: ::::::::: .............................................................................................................................................................................................................................................................................................................................................................................................. ...................:::---==========================----==================================================================================================---------------------------------------------------------------------====++++++++++++++++++++++++++++++++++++++++++++====-------------------------------------------------:::......::::::::::...........................................................:--=+**###**+=--::.......................................................................................................................................................::--=+***#####*****++=--::...................................::-=====-:::......................................................................................................................................................................................................................................................................................................:::-=++*****##********+==-:::..........:::--=+++***************************************************************************+++++++++++++******************+++++++++++++++********##############################################************#################********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************=====================================================================++++++++++++++++++++++++++++++++++++++++++++++++++===========================================================================================================================--------------------------------------------------------------------------=-----------------------------------------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
++++++*******************************+++++++++++++****++++++============================================================================================================++++++*****#############################################################***************************************###************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==+======+*********************************************+++++++++++++++++++++++++++++++++++++++++++=-:..=++++++++++++++++++++++++++++*+**: ...................................................................................................................:::::::::::::::::::::::::::::...............::::::::-------------------------------------------------------------==--======================================================================================------------------------------------------------------------------------------------------------=====-----------------------------*%@#=--=#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#%%%#*+++++++++++++*%%#+#@@**##*******#@@%%%#########%@@@@@%%%%%##@@@@@@@@@@@%*+++++++++++++++++++++++++++++++++=+#@@%%%%%%%########%%%%%%%%%##################%%################################################++++++++*##*+++++++++*********************+==++++++++****+++++====================================+++++++++++++++++++++++++++++++++++***+++++++++==--==+++=-=-=--==++++++++++============================================+******+**+********************+**+:::::::::::::::::::::::::::::::::::::::::::: .:::::::: ............................................................................................................................................................................................................................................................................................................................................................................................... ...................:::---==========================----==================================================================================================--------------------------------------------------------------------====+++++++++++++++++++++++++++++++++++++++++++++===--------------------------------------------------:::......::::::::::...........................................................:--=+**###**+=--::.......................................................................................................................................................::--=+****####*****++=--::...................................::-====--:::.......................................................................................................................................................................................................................................................................................................::-==+*****##********+==-:::...........::--==++**************************************************************************++++++++++++++******************+++++++++++++++********##############################################************#################********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+=====================================================================+++++++++++++++++++++++++++++++++++++++++++++++++===========================================================================================================================--------------------------------------------------------------------------=------------------------------------------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
++++++*******************************++++++++++++*****++++++============================================================================================================++++++*****#############################################################**************************************####************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=++====+************************************************+++++++++++++++++++++++++++++++++++++==:. =++++++++++++++++++++++++++*****+ ..............................................................................................................................::::::::::::::::..................:::::::::::----------------------------------------------------------------===================================================================================------------------------------------------------------------------------------------------------=====-----------------------------*%@#=--=#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#*+*##**++++++++++++*%%*+%@%*+*******++*@@%%%########%@@@@@%%%%%###%@@@@@@@@@@@*+++++++++++++++++++++++++++++++++==*@@%%%%%%%%%########%%%%%%%%#################%%################################################++++++++*##*+++++++++*#*******************+==++++++****+++========================================+++++++++++++++++++++++++++++++++++****+++++++==---=++++===-=--==++++++++++=============================================+*+***++*+*************+++*++*+**+-:::::::::::::::::::::::::::::::::::::::::::. .::::::::. .............................................................................................................................................................................................................................................................................................................................................................................................. ..................:::---===========================--===================================================================================================-------------------------------------------------------------------====++++++++++++++++++++++++++++++++++++++++++++++===--------------------------------------------------:::......::::::::::...........................................................:--=+**###**+=--::.......................................................................................................................................................:::-=++***####*#****+=--::...................................::-====--::........................................................................................................................................................................................................................................................................................................::--=+*****##********++=--::...........:::--=+++*************************************************************************++++++++++++++******************+++++++++++++++********##############################################************#################********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+======================================================================+++++++++++++++++++++++++++++++++++++++++++++++=============================================================================================================================-------------------------------------------------------------------------=--------------------------------------------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
++++++*******************************++++++++++++*****++++++============================================================================================================++++++*****##############################################################*************************************#####***********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=+===++***************************************************+++++++++++++++++++++++++++++++=-.. .++++++++++++++++++++++++++*+*+**. ..................................................................................................................................................................:::::::::::::::::::---------------------------------------------------------================================================================================------------------------------------------------------------------------------------------------=====-----------------------------*%@#=---#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#*++++*+++++++++++++#%#**%@#+++++++++==+%@%%%########%@@@@%%%%%%#**#@@@@@@@@@@@#*++++++++++++++++++++++++++++++++==+%@%%%%%%%%%%#######%%%%%%%%%################%%################################################++++++++*###+++++++++*#*******************+==+++++*+*+++==========================================+++++++++++++++++++++++++++++++++++****++++++==----=+++++-=-=---=++*+++++++==============================================+**+**+*************++++++++****+-:::::::::::::::::::::::::::::::::::::::::::. ::::::::: .............................................................................................................................................................................................................................................................................................................................................................................................. ..................:::---===========================--===================================================================================================-------------------------------------------------------------------===+++++++++++++++++++++++++++++++++++++++++++++++===--------------------------------------------------:::......::::::::::...........................................................:--=+**###**+==-::.......................................................................................................................................................:::-=++****#*##*****+==-::..................................::--====--::........................................................................................................................................................................................................................................................................................................::--=+*****##********++=--::............::--==+++************************************************************************+++++++++++++++++***************+++++++++++++++*********#############################################************#################*********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+=====================================================================++++++++++++++++++++++++++++++++++++++++++++++===============================================================================================================================------------------------------------------------------------------------=---------------------------------------------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
++++++********************************++++++++++******++++++==========================================================================================================++++++++*****###############################################################************************************#####***********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=++*******************************************************+++++++++++++++++++++++++++: -++=+++++*+++++++++++++++*****+*= .....................................................................................................................................................................:::::::::::::::::::::::::::----------------------------------==--------------==============================================================================------------------------------------------------------------------------------------------------=====-----------------------------*%@#=---#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#*++++++++++++++++++*%#*+*@@*+++++++=====*@@%%%######%@@@@@%%%%%%#***%@@@@@@@@@@%*+++++++++++++++++++++++++++++++++=+#@@%%%%%%%%%######%%%%%%%%%%%################%################################################++++++++*###*++++++++*********************+=++++++++++============================================+++++++++++++***+++++++++*++++++++++***+++++=------=+++++-=-=-=-==+++++++++==============================================+**+****+******+++++++++++*+****+-:::::::::::::::::::::::::::::::::::::::::::: ::::::::: ............................................................................................................................................................................................................................................................................................................................................................................................. ..................:::--=================================================================================================================================-------------------------------------------------------------------===+++++++++++++++++++++++++++++++++++++++++++++++===--------------------------------------------------:::......::::::::::...........................................................:--=+**###**+==-::.......................................................................................................................................................:::-=++******##*****+==-::..................................::--====--::........................................................................................................................................................................................................................................................................................................::--=++****##********++=--::............:::-==+++***********************************************************************+++++++++++++++++++**************+++++++++++++++*********#############################################************#################*********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+======================================================================++++++++++++++++++++++++++++++++++++++++++++================================================================================================================================------------------------------------------------------------------------=----------------------------------------------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+++++*********************************+++++++++*******++++++=========================================================================================================++++++++******################################################################***********************************#####***********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++************************************************************+++++++++++++++++++++- .+- .=++++*+++++++++++++******+**. .......................................................................................................................................................................:::::::::::::::::::::::::::------------------------------======----------------=========================================================================-------------------------------------------------------------------------------------------------=====-----------------------------*%@#=---*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#*++++++++++++++++++++*##*+%@%++++++++======%@%%%%####%@@@@@%%%#%%%****#@@@@@@@@@@@#*+++++++++++++++++++++++++++++++++=*@@%%%%%%%%%######%#%%%%%%%%%################%################################################*+++++++*###*+++++++++********************++++++++=+==============================================++++++++***********+++++++++++++++++*+*++===-------=+++++=====-===+++++++++===============================================+******++****++++++++++++*+****+-::::::::::::::::::::::::::::::::::::::::::::. .::::::::. ............................................................................................................................................................................................................................................................................................................................................................................................. ..................::---=================================================================================================================================------------------------------------------------------------------====+++++++++++++++++++++++++++++++++++++++++++++++===--------------------------------------------------:::......::::::::::...........................................................:--=+**###**++=-::.......................................................................................................................................................:::-=++******#*#****+==-::..................................::--====--::........................................................................................................................................................................................................................................................................................................:::-=++****##********++==-:::...........:::--==++***********************************************************************+++++++++++++++++++**************+++++++++++++++*********#############################################************#################**********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************=======================================================================+++++++++++++++++++++++++++++++++++++++++++================================================================================================================================------------------------------------------------------------------------==----------------------------------------------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+++++*********************************++++++++********++++++========================================================================================================+++++++++******################################################################**********************************######***********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=+**************************************************************+++++++++++++++++++: -- =++++++++++**+********+****- .............................................................................................................................................................................::::::::::::::::::::::::---------------------------=======--------------------====================================================================--------------------------------------------------------------------------------------------------=====-----------------------------*%@#=---*%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#**++++++++++++++++++++++*#*+*%@#++++++++======*@@%%%%###%@@@@@%%##%#%*+***@@@@@@@@@@@#*+++++++++++++++++++++++++++++++=+++%@%%%%%%%%%########%%%%%%%%%################%################################################*+++++++*###*+++++++++*********************+++++=+================================================++++**************++++++++++++++++++++++=----------=+++++=========++++++++++===============================================+***+**+***+++++++++++++*+****+-::::::::::::::::::::::::::::::::::::::::::::. ::::::::: ............................................................................................................................................................................................................................................................................................................................................................................................ ..................::---=================================================================================================================================------------------------------------------------------------------===++++++++++++++++++++++++++++++++++++++++++++++++===--------------------------------------------------:::......::::::::::...........................................................:--=+**###**++=-::........................................................................................................................................................::-=++********#****++=-:::.................................::--====--::........................................................................................................................................................................................................................................................................................................:::-=++****##********++==-:::...........:::--==++**********************************************************************++++++++++++++++++++**************+++++++++++++++*********#############################################************#################**********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+======================================================================++++++++++++++++++++++++++++++++++++++++++=================================================================================================================================------------------------------------------------------------------------==----------------------------------------------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+++++*********************************++++++++********++++++======================================================================================================+++++++++++******#################################################################********************************#######**********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=+=+==***************************************************************+++*+**++++++++*+-. .= =++++*+**+****************+ ......................................................................................................................................................................................:::::::::::::::::::---------:::::::::-------========--------------------===================================================================--------------------------------------------------------------------------------------------------====------------------------------*%@%=---+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##**+++++++++++++++++++++++++**++#@%*+++++++++======#@%%%%%#%@@@@@@%######*+***%@@@@@@@@@@%*++++++++++++++++++++++++++++++++==+#@@%%%%%%%%%%######%%%%%%%%%################%################################################*++++++++###*+++++++++*#*******************+++++=================================================++***************+++++++++++++++++*+++++++----------=++++++=====++++++++++++++++=============================================***+***+++++++++++++++++******-::::::::::::::::::::::::::::::::::::::::::::: ::::::::: .......................................................................................................................................................................................................................................................................................................................................................................................... ..................::---=================================================================================================================================------------------------------------------------------------------===+++++++++++++++++++++++++++++++++++++++++++++++====--------------------------------------------------:::......::::::::::...........................................................:--=+**###**+==-::........................................................................................................................................................::-=++*************++=--::.................................::--====--::.........................................................................................................................................................................................................................................................................................................::-=++****##********++==-:::............:::-==++***********************************************************************+++++++++++++++++++++***********++++++++++++++++*********#############################################*************################**********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+=======================================================================++++++++++++++++++++++++++++++++++++++++==================================================================================================================================------------------------------------------------------------------------==-------------------------------------------------------------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+++++*********************************+++++++*********++++++======================================================================================================+++++++++++******#################################################################*******************************########**********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=+*************************************************************+******+++*++*++++: :: .=*+*+**+**+**************+: .........................................................................................................................................................................................:::::::::::::::::::::::::::::::::::-------======------------------------===============================================================---------------------------------------------------------------------------------------------------====------------------------------*%@%=---+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#%%%%%%%%%%%%%%%%%%%%%%%%#***++++++++++++++++++++++++++++++++#%#++++++++++======+%@%%%%%@@@@@@%%######*++**#@@@@@@@@@@%#*++++++++++++++++++++++++++++++++==*@@%%%%%%%%%%######%%%%%%%%%################%################################################*++++++++###*+++++++++*#*******************+++++===============================================++++*********++++++++++++++++++++=++++++++++=---------=+++++++++++++++++++++++++++++===========================================+**+++*+++++++++++++++++******-::::::::::::::::::::::::::::::::::::::::::::: .::::::::. .......................................................................................................................................................................................................................................................................................................................................................................................... ..................::---=================================================================================================================================------------------------------------------------------------------===+++++++++++++++++++++++++++++++++++++++++++++++====--------------------------------------------------:::......::::::::::...........................................................:--=+**###**+==-::........................................................................................................................................................::-==+**************+=--::.................................::--====--::.........................................................................................................................................................................................................................................................................................................::-==+**************++==--:::........:::::--==++***********************************************************************++++++++++++++++++++++**********++++++++++++++++*********##############################################************################***********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+=======================================================================+++++++++++++++++++++++++++++++++++++++=====================================================================================================================================---==----------------------------------------------------------------==--------------------------------------------------------------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::
++++***********************************++++++*********++++++=====================================================================================================++++++++++++******###############################################*******############******************************########**********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==++***********************************************************+*****+++**+*++++++-. .- .+**+*********************= ................................................................................................................................................................................................::::::::::::::::::::::::::::::-------=-==----------------------------============================================================---------------------------------------------------------------------------------------------------====------------------------------+%@%=---=#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##%%%%%%%%%%%%%%%%%%##*++++++++++++++++++++++++++++++++++++*##*+++++++++++======*@@%%%%@@@@@%%##**###*++***%@@@@@@@@@@%*+++++++++++++++++++++++++++++++++=+%@%%%%%%%%%%######%%%%%%%%%################%%###############################################*++++++++*###+++++++++*#*******************+++++=+===========================================+++++*******++++++++++++++++++++++=-=+++++++++=---------==++++++++++++++++++++++++++++============================================+****++++++++++++++++++++****=:::::::::::::::::::::::::::::::::::::::::::::. .::::::::. .......................................................................................................................................................................................................................................................................................................................................................................................... ..................::---=================================================================================================================================-----------------------------------------------------------------====+++++++++++++++++++++++++++++++++++++++++++++++===---------------------------------------------------:::......::::::::::...........................................................::-=+**###**+=--::........................................................................................................................................................::-==++********#****+=--::.................................::--====--::.........................................................................................................................................................................................................................................................................................................::--=+**************+++=--::::::::::::::::--==++***********************************************************************+++++++++++++++++++++++*********++++++++++++++++*********##############################################***********#################***********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+========================================================================+++++++++++++++++++++++++++++++++++++============================================================================================================================================---------------------------------------------------------------==----------------------------------------------------------------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::
++++***********************************++++++*********++++++===============================================================================================++++++++++++++++++******############################################***********############*****************************########**********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********************************************************************++*++*++-. .- :++****+******************. .........................................................................................................................................................................................................:::::::::::::::::::::::::---------------------------------------=========================================================----------------------------------------------------------------------------------------------------====------------------------------+%@%=---=#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*##%%%%%%%%%%%%%#*++++++++++++++++++++++++++++++++++++++++*##++++++++++++=======#@%%%@@@@@@%###**###*+++**#@@@@@@@@@@%#*++++++++++++++++++++++++++++++++++#@@%%%%%%%%%%#####%%%%%%%%%%###############%%###############################################*++++++++*###*++++++++*#********************++++++========================================+++++++++***++++++++++++++++++++++++++=+++++++++++----------=+++++++++++++++++++++++++++++===========================================+++*++++++++++++++++++++++**+=:::::::::::::::::::::::::::::::::::::::::::::. ::::::::: ......................................................................................................................................................................................................................................................................................................................................................................................... ..................::---=================================================================================================================================-----------------------------------------------------------------====+++++++++++++++++++++++++++++++++++++++++++++++===---------------------------------------------------:::......::::::::::...........................................................::-=+***##**+=--::........................................................................................................................................................::--=++*************+=--::.................................::--====-:::.........................................................................................................................................................................................................................................................................................................::--=++**************++=--::::::::::::::---==+++***********************************************************************+++++++++++++++++++++++*********++++++++++++++++********###############################################***********#################***********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+========================================================================++++++++++++++++++++++++++++++++++++======================================================================+=======================================================================-----=---------------------------------------------------------=------------------------------------------------------------------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::
+++************************************++++++*********++++++====================================================================================+++++++++++++++++++++++++++++******############################################***********##############***************************########**********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=+*****************************************************************+*+*+**++=. :: :+*++********************- ............................................................................................................................................................................................................:::::::::::::::::::::::----------------------------------------=======================================================----------------------------------------------------------------------------------------------------====------------------------------+%@%=---=#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#%@%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#*##%%%%%%%%#*+++++++++++++++++++++++++++++++++++++++++++*#*+++++++++++++======+@@@@@@@@@%###****##*++++**%@@@@@@@@@%%*+++++++++++++++++++++++++++++++++=*@@%%%%%%%%%%######%%%%%%%%%###############%%###############################################*++++++++*###*+++++++++*********************++++++=======================================++++++++++++++++++++++++++++++++++++++++*++++++++++=--------===++++++++++++++++++++++++++++++===========================+++++++========+**+++++++++++++++++++++++++=:::::::::::::::::::::::::::::::::::::::::::::: ::::::::: ....................................................................................................................................................................................................................................................................................................................................................................................... ..................::---=================================================================================================================================-----------------------------------------------------------------===+++++++++++++++++++++++++++++++++++++++++++++++====---------------------------------------------------:::......::::::::::...........................................................::-=+***##**+=--::........................................................................................................................................................::--=++*************+=--::.................................::--====-::..........................................................................................................................................................................................................................................................................................................::--=++****#*#*******++==---::::::::------===+++***********************************************************************++++++++++++++++++++++**********++++++++++++++++********###############################################***********#################************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+========================================================================++++++++++++++++++++++++++++++++++======================================================================+++=======================================================================----=---------------------------------------------------------=---------------------------------------------------------------------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::
+**************************************++++++*********++++++=================================================================================++++++++++++++++++++++++++++++++******#############################################********################***************************#########*********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=+++**********************************************************************++-. :. -**+*+******************+ ....................................................................................................................................................................................................................::::::::::::::::---------------------------------------=======================================================----------------------------------------------------------------------------------------------------====------------------------------=%@@=---=#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#%@@%%%%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#**#%%%%%#*+++++++++++++++++++++++++++++++++++++++++++++##++++++++++++++======+%@@@@@@@@%###*****#*++++**#@@@@@@@@@@%#+++++++++++++++++++++++++++++++++=+%@%%%%%%%%%%######%%%%%%%%%###############%%###############################################*++++++++*###*+++++++++*********************+++++++++==================================++++++++++++++++++++++++++++++++++++++++++++++++++++++--------=-=++++++*****++++++++++++++++++++++===-:------=============++++++++++=====++++++++++++++++++++++++++++=::::::::::::::::::::::::::::::::::::::::::::::. .::::::::. ............... ...................................................................................................................................................................................................................................................................................................................................................................... .................::---=================================================================================================================================-----------------------------------------------------------------===+++++++++++++++++++++++++++++++++++++++++++++++===----------------------------------------------------:::......::::::::::...........................................::::............::-=+***##**+=--:.........................................................................................................................................................::--=+++************+=--::.................................::-====--::..........................................................................................................................................................................................................................................................................................................:::-=++****###*******+++==--------------====+++************************************************************************+++++++++++++++++++++***********++++++++++++++++********###############################################************#################***********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+=========================================================================+++++++++++++++++++++++++++++++++=====================================================================+++++========================================================================------------------------------------------------------------=----------------------------------------------------------------------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::
***************************************+++++**********++++++================================================================================+++++++++++++++++++++++++++++++++******################################################***###################*************************##########*********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=+***++=++**********************************************************++-: . -**+*+******************: ...........................................................................................................................................................................................................................::::::::::::::-------------------------------------======================================================----------------------------------------------------------------------------------------------------====------------------------------=#@@+----#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*#%@%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#*######*++++*++++++++++++++++++++++++++++++++++++++++*#*++++++++++++++++====+#@@@@@@@%###***++***+++++**%@@@@@@@@@%#*++++++++++++++++++++++++++++++++++#@@%%%%%%%%%#######%%%%%%%%################%###############################################*+++++++++###*+++++++++*********************+++++++++===============================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++-------====++++++++++++++++++++++++++++++++++++=:::::::::::----=====++++++++++++++++++*++++++++++++++++++++*+++=::::::::::::::::::::::::::::::::::::::::::::::. .::::::::: ...................................................................................................................................................................................................................................................................................................................................................................................... ................::---=================================================================================================================================-----------------------------------------------------------------===++++++++++++++++++++++++++++++++++++++++++++++====----------------------------------------------------:::......::::::::::..........................................::::::...........::-=++******+=--:.........................................................................................................................................................::--=+++************+=--::................................:::-====--::..........................................................................................................................................................................................................................................................................................................:::-=++******#********++====--============++++*************************************************************************+++++++++++++++*+++*************++++++++++++++++********###############################################************#################************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+========================================================================++++++++++++++++++++++++++++++++======================================================================++++++========================================================================-----------------------------------------------------------=------------------------------------------------------------------------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::
****************************************++++**********++++++===============================================================================++++++++++++++++++++++++++++++++++******########################################################################***********************##########*********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=++=++=========++***************************************************+=:. -**+*******************= ..............................................................................................................................................................................................................................:::::::::::::::::--------------------------------=====================================================-----------------------------------------------------------------------------------------------------=====------------------------------#@@+----#%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%**#%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#*####*+++++++++++++++++++++++++++++++++++++++++++++*#*++++++++++++++*+====+*@@@@@@@%##***++++**+++++***@@@@@@@@@%%*+++++++++++++++++++++++++++++++=+=*@@%%%%%%%%%%###%##%%%%%%%%%###############%###############################################*+++++++++###*+++++++++*********************++++++++++============================++++===++++++++++++++++++++++++++++++++++++++++++++++++++++=------===+++++++++++++++++++++++++++++++++++++*-:::::::::::::::::--==+++++++++*++*+*+++++++++++++++++++++**+++=::::::::::::::::::::::::::::::::::::::::::::::: ::::::::: ..................................................................................................................................................................................................................................................................................................................................................................................... ................::---=================================================================================================================================-----------------------------------------------------------------===++++++++++++++++++++++++++++++++++++++++++++++====----------------------------------------------------:::......::::::::::..........................................::::::...........::-=++*****++=-::.........................................................................................................................................................:::-=+++++++********+=--::................................:::-====--::...........................................................................................................................................................................................................................................................................................................::-==+******#********+++=============+++++++**************************************************************************+++++++++++++++*****************++++++++++++++++********###############################################************#################************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+=========================================================================++++++++++++++++++++++++++++++=======================================================================++++++========================================================================-----------------------------------------------------------==-------------------------------------------------------------------------------------------------------------::::::::::::::::::::::::::::::::::::::::::::
****************************************++++**********++++++============================================================================+++++++++++++++++++++++++++++++++++++******###########################################################################********************##########********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==============+*********************************************++=-:. -+*+******************+. ................................................................................................................................................................................................................................::....::::::::::::::::::::::::::::::::::::-----=====================================================----------------------------------------------------------------------------------------------------======------------------------------*@@*----*%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%***%@%%%%%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#**#*++++++++++++++++++++++++++++++++++++++++++++++##+++++++++++++++**+===+*%@@@@@@##***+++++++++++++**#@@@@@@@@@%#+++++++++++++++++++++++++++++++++++%@@%%%%%%%%##%####%%%%%%%%%###############%%###############################################+++++++++*###+++++++++*#********************++++++++++==========================++++===+++++++++++++++++++++++++++++++++++++++++++++++++++++=-----=-=++++++++++*++*+++++++++++*+++++++++*++*=:::::::::::::::::::::--==++++++++++++++++++++++++++++++*++**+++-:::::::::::::::::::::::::::::::::::::::::::::: .:::::::: ... ..........................................................................................................................................................................................................................................................................................................................................................................::..... ..............::---=================================================================================================================================-----------------------------------------------------------------===+++++++++++++++++++++++++++++++++++++++++++++====-----------------------------------------------------:::......:::::::::..........................................:::::::...........::-==+*****++=-::.........................................................................................................................................................:::-=+++++++********+=--::................................:::-====--::...........................................................................................................................................................................................................................................................................................................::-==+****###*********+++++++++++++++++++++*************************************************************************+++++++++++++++++*******************++++++++++++++********###############################################************#################************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+==========================================================================++++++++++++++++++++++++++++=======================================================================++++++++=======================================================================-----------------------------------------------------------==----------------------------------------------------------------------------------------------------------------:::::::::::::::::::::::::::::::::::::::::
****************************************++++**********++++++==========================================================================+++++++++++++++++++++++++++++++++++++++******############################################################################*******************##########********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++================+***************************************++=-:. . :+********************: ...........................................................................................................................................................................................................................................::::::::::::::::::::::::::::::::::----====================================================----------------------------------------------------------------------------------------------------======------------------------------*@@#----+%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%***#@%%%%%%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###*+++++++++++++++++++++++++++++++++++++++++++++*#*+++++++++++++++***++=+#%%@@@@%#***++++++++++++++***%@@@@@@@@%%*+++++++++++++++++++++++++++++++++=#@%%%%%%%%%%%%####%%%%%%%%%###############%%###############################################+++++++++*###+++++++++**********************++++++++++===============================++++++++++++++++++++++++++++++++++++++++++++++++++++++++-----===++++++++++++++++++**+++++*+**+**++++++++:::::::::::::::::::::::::-==++++++*+++**+++++*+++++++++++++++++-::::::::::::::::::::::::::::::::::::::::::::::. .::::::::. ... ..........................................................................................................................................................................................................................................................................................................................................................................::..... ..............::---=================================================================================================================================-----------------------------------------------------------------===+++++++++++++++++++++++++++++++++++++++++++++====-----------------------------------------------------:::......:::::::::..........................................:::::::............:--=+*****+==-::..........................................................................................................................................................::-=+++++++********+==-::................................:::-====--::...........................................................................................................................................................................................................................................................................................................::--=+*****##**********+++++++++++++++++++***************************************************************************++++++++++++++++*******************++++++++++++++********###############################################************#################************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************++=========================================================================++++++++++++++++++++++++++++=======================================================================+++++++++========================================================================---------------------------------------------------------==----------------------------------------------------------------------------------------------------------------:::::::::::::::::::::::::::::::::::::::::
****************************************+++***********++++++========================================================================+++++++++++++++++++++++++++++++++++++++++******#############################################################################******************##########********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=================+********************************+++=-:.. . . .-****+**************- ...................................................................................................................................................................................................................................................::::::::::::::::::::::::::::---========-----======================================-----------------------------------------------------------------------------------------------------======------------------------------*%@%=---=%%@@%%%%%%%@%%%%%%%%%%%%%%%%%%%%****%@%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#*+++++++++++++++++++++++++++++++++++++++++++++##+++++++++++++++++****++##%@@@@#***++++++++++++++++**#@@@@@@@@%%#+++++++++++++++++++++++++++++++++=+@@%%%%%%%%%%%#####%%%%%%%%%##############%%###############################################+++++++++*###*+++++++++*********************++++++++++=============================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=---==++++++++++**++++*++++++++***++++***+++++++=::::::::::::::::::::::::::---==+++++++++**+++++++++++++*++++++-::::::::::::::::::::::::::::::::::::::::::::::: ::::::::: .............................................................................................................................................................................................................................................................................................................................................................................:::..... ..............::---================================================================================================================================------------------------------------------------------------------===+++++++++++++++++++++++++++++++++++++++++++++===-----------------------------------------------------:::.......:::::::::..........................................::::::::...........::-=+*****+==-::..........................................................................................................................................................::-==++++++********+==-::................................:::-====--::...........................................................................................................................................................................................................................................................................................................::--=++****##***********+++++++++++++++++****************************************************************************+++++++++++++++++*****************+++++++++++++++********###############################################************#################*************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+==========================================================================++++++++++++++++++++++++++=======================================================================++++++++++++++======================================================================-------------------------------------------------------==-----------------------------------------------------------------------------------------------------------------::::::::::::::::::::::::::::::::::::::::
****************************************+++***********++++++=======================================================================++++++++++++++++++++++++++++++++++++++++++******#############################################################################******************##########********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===================++*******************+++++==-:.... .:+*****************= .............................................................................................................................................................................................................................................................................:::::----=====-------======================================-----------------------------------------------------------------------------------------------------======------------------------------+%@%=---=%%%@%%%%%%@@%%%%%%%%%%%%%%%%%%%@#****%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*+++++++++++++++++++++++++++++++++++++++++++++##++++++++++++++++++***#**##%@@@%#**+++++++++++++++++***#@@@@@@@@%#*++++++++++++++++++++++++++++++++=+%@%%%%%%%%%%#%####%%%%%%%%%##############%%###############################################*++++++++*###*+++++++++*********************++++++++++===========================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=--==+++++++++++++++*+++++++++*+======+++++++++++-:::::::::::::::::::::::::::----==+++++***++++++++++++++++++++=::::::::::::::::::::::::::::::::::::::::::::::: ::::::::: ............................................................................................................................................................................................................................................................................................................................................................................:::..... ..............::---================================================================================================================================------------------------------------------------------------------===++++++++++++++++++++++++++++++++++++++++++++====-----------------------------------------------------:::.......:::::::::..........................................::::::::...........::-=+*****+=--:...........................................................................................................................................................::-==++++++********++=-::................................:::-====--::...........................................................................................................................................................................................................................................................................................................:::-=++*****#***********+++++++++++++++++************************************+++++++++++++++************************+++++++++++++++++++****************+++++++++++++++********###############################################************#################*************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+==========================================================================++++++++++++++++++++++++++=======================================================================+++++++++++++++++++===================================================================------------------------------------------------------=------------------------------------------------------------------------------------------------------------------:::::::::::::::::::::::::::::::::::::::
******************************************************++++++=================================================================++++++++++++++++++++++++++++++++++++++++++++++++******#############################################################################******************##########********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=======================++++++++++++===--:.... . .=****************+. . ..................................................................................................................................................................................................................................................................................:::::---===----------=====================================-----------------------------------------------------------------------------------------------------======------------------------------+%@@=----%@%@@%%%%%@@%%%%%%%%%%%%%%%%%%%@#****#@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##*+++++++++++++++++++++++++++++++++++++++++++++***+++++++++++++++++++***####%@@%#**+++++++++++++++++++***%@@@@@@@%%#+++++++++++++++++++++++++++++++++=*@%%%%%%%%%%#%####%%%%%%%%%##############%%###############################################*+++++++++###*+++++++++*********************++++++++++=========================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===++++++++++++++*++++**+++++++=--=---===+++++++++::::::::::::::::::::::::::::::---===++++++++++++++++++==+++++=:::::::::::::::::::::::::::::::::::::::::::::::. .:::::::: ..............................................................................................................................................................................................................:.............................................................................................................................................................::::.... ..............::---================================================================================================================================------------------------------------------------------------------===++++++++++++++++++++++++++++++++++++++++++++====-----------------------------------------------------:::.......:::::::::..........................................::::::::...........::-==+***++=-::...........................................................................................................................................................::-==+++++++*******++=-::................................:::-====--::...........................................................................................................................................................................................................................................................................................................:::-=++******************++++++++++++++++++**+*****++++++++++++++++++++++++++++++++++++++++++**********************+++++++++++++++++++++**************++++++++++++++++********################################################***********#################**************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+==========================================================================++++++++++++++++++++++++=======================================================================++++++++++++++++++++++=====================================================================-----===------------------------------------------=--------------------------------------------------------------------------------------------------------------------:::::::::::::::::::::::::::::::::::::
******************************************************++++++================================================================+++++++++++++++++++++++++++++++++++++++++++++++++*******############################################################################******************##########********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===================================---::...... . . . . .=***************+. . ......................................................................................................................................................................................................................................................................................:::---------------======================================-----------------------------------------------------------------------------------------------------======------------------------------=%@@+----%@%@@%@%%%@@%%%%%%%%%%%%%%%%%%%%#*****%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****##@@%##*+++++++++++++++++++++***%@@@@@@%%#*++++++++++++++++++++++++++++++++=+%@%%%%%%%%%#%#####%%%%%%%%###############%###############################################*+++++++++###*+++++++++***************+*****++++++++++=======================+++++++++++++++++++++++++++++++++++++++++++++*+++++++++++++++++++=+++++++++++++++++**+++++++**=---=-------==+++++*=:::::::::::::::::::::::::::::::----===+++++++++++++++--+++++=:::::::::::::::::::::::::::::::::::::::::::::::: .::::::::. ............................................................................................................................................................................................................::.............................................................................................................................................................::::.... ..............::---================================================================================================================================------------------------------------------------------------------===++++++++++++++++++++++++++++++++++++++++++++===------------------------------------------------------:::.......:::::::::..........................................::::::::............:--=++**+==-::...........................................................................................................................................................::-==+++++++*******++=-:::...............................:::-====--::...........................................................................................................................................................................................................................................................................................................:::-=++*******************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******************+++++++++++++++++++++++*************+++++++++++++++++********################################################***********#################**************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+==========================================================================++++++++++++++++++++++++=======================================================================+++++++++++++++++++++++====================================================================-----===------------------------------------------=----------------------------------------------------------------------------------------------------------------------:::::::::::::::::::::::::::::::::::
******************************************************++++++==============================================================+++++++++++++++++++++++++++++++++++++++++++++++++++*******############################################################################******************##########********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=================================----::........ . . .. :+**************: . ......................................................................................................................................................................................................................................................................................::::--------------==========-============================----------------------------------------------------------------------------------------------------======-------------------------------#%@*----#@@@@%@@%@@@%%%%%%%%%%%%%%%%%%@%#*****#%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****#@%##*++++++++++++++++++++++***#@@@@@@%%%*++++++++++++++++++++++++++++++++==#@@%%%%%%%%%%#####%%%%%%%%###############%###############################################*+++++++++*###+++++++++***************+******++++++++++====================+++++++++++++++++++++++++++++++++++++++++++++++*+++++++++++++++++===++++++++++++++++*+----==+++++-==---=-==---==+++++-:::::::::::::::::::::::::::::::::----==+++++++++++++=-=++++=-::::::::::::::::::::::::::::::::::::::::::::::: ::::::::: ...........................................................................................................................................................................................................:::............................................................................................................................................................::::.... ...............::---================================================================================================================================------------------------------------------------------------------===++++++++++++++++++++++++++++++++++++++++++++===------------------------------------------------------:::.......:::::::::..........................................::::::::............::-=+++++=--::...........................................................................................................................................................::--=+++++++*******++=-:::...............................::--====--::...........................................................................................................................................................................................................................................................................................................:::-=++*****************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==+++++++++*************++++++++++++++++++++++++++++************+++++++++++++++++********################################################***********#################***************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+==========================================================================++++++++++++++++++++++=======================================================================+++++++++++++++++++++++++======================================================================--===------------------------------------------=-----------------------------------------------------------------------------------------------------------------------::::::::::::::::::::::::::::::::::
*****************************************************+++++++========================================================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******#############################################################################*****************##########********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==================================---::...... .. . .+*************: . . .......................................................................................................................................................................................................................................................................................:::::-------------==========-============================----------------------------------------------------------------------------------------------------======-------------------------------#%@#----#@@%@@@@%@@@%%@%%%%%%%%%%%%%%%%@#******%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****%@#***+++++++++++++++++++++++***#@@@@%@%%#*+++++++++++++++++++++++++++++++==*@@%%%%%%%%%###%##%%%%%%%%###############%###############################################*+++++++++*###+++++++++***************+******++++++++++===================+++++++++++++++++++++++++++++++++++++++++++++++*+++++++++++++++++-:-=+++++++++++++++++-::::-=+++++----------==---==++++:::::::::::::::::::::::::::::::::::::---==+++++++++++==++++=-:::::::::::::::::::::::::::::::::::::::::::::::. ::::::::: ...........................................................................................................................................................................................................:::............................................................................................................................................................::::.... ...............::---================================================================================================================================------------------------------------------------------------------===++++++++++++++++++++++++++++++++++++++++++++===------------------------------------------------------:::.......:::::::::..........................................::::::::............::--=+++==-::............................................................................................................................................................::--=+++++++*******++=--::...............................::--====--::............................................................................................................................................................................................................................................................................................................::-==+****************++++++====++++++++++++++++++++++++++++++++++++++++++++++++=========++++++***********++++++++++++++++++++++++++++++************+++++++++++++++++********################################################***********#################***************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+==========================================================================++++++++++++++++++++++=======================================================================+++++++++++++++++++++++++======================================================================---==------------------------------------------=-----------------------------------------------------------------------------------------------------------------------::::::::::::::::::::::::::::::::::
*****************************************************+++++++====================================================++++++++=++++++++++++++++++++++++++++++++++++++++++++++++++++*******################################################**###########################****************##########*********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=================================---::........ .... . .=************- . ..........................................................................................................................................................................................................................................................................................::::::-----------==========--============================---------------------------------------------------------------------------------------------------======-------------------------------*@@%=---+@%%@%@@@@@@%%%%%%%%%%%%%%%%%%%@#*******%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*%%****++++++++++++++++++++++++***#@@@@@%%#*+++++++++++++++++++++++++++++++==+%@%%%%%%%%%%######%%%%%%%%##############%################################################+++++++++*###*+++++++++**************+******+++++++++++================++++++++++++++++++++++++++++++++++++++++++++++++**++++++++++++++**=:::=++++++++++++++++=:::::-==+++===-=-=-----------=++*+:::::::::::::::::::::::::::::::::::::::---=+++++++++==++++=-:::::::::::::::::::::::::::::::::::::::::::::::: .::::::::. . ...........................................................................................................................................................................................................::::............................................................................................................................................................::::.... ...............::---================================================================================================================================------------------------------------------------------------------===++++++++++++++++++++++++++++++++++++++++++++===------------------------------------------------------:::.......:::::::::..........................................::::::::.............::-=====--::............................................................................................................................................................:::-=+++++++********+=--::...............................::--====--::............................................................................................................................................................................................................................................................................................................::-==+****************+++==========++++++=================================================++++*++**++++++++++++++++++++++++++++++++++++++++*******+++++++++++++++++++********################################################***********#################***************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+===========================================================================++++++++++++++++++++=======================================================================+++++++++++++++++++++++++++==============================================================================--------------------------------------==-----------------------------------------------------------------------------------------------------------------------:::::::::::::::::::::::::::::::::
*****************************************************+++++++================================================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******#############################################################################****************##########*********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=================================---::........ ..... . .-***********=..............................................................................................................................................................................................................................................................................................:::::::---------==========-==============================--------------------------------------------------------------------------------------------------======-------------------------------+%@@=---=%@@%@@@@@@@%%%%%%%%%%%%%%%%%%%@#*******#@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#%*****++++++++++++++++++++++++****%@@%@%%%#*+++++++++++++++++++++++++++++++==#@%%%%%%%%%%######%%%%%%%%##############%%###############################################+++++++++*###*+++++++++**************+*******+++++++++=======++======+++++++++++++++++++++++++++++++++++++++++++++++++**+++++++++++++++*+-:::=+++++++++*+++++=-::::::-=+++=----=-------------==+*=:::::::::::::::::::::::::::::::::::::::::--==++++++===+++=-:::::::::::::::::::::::::::::::::::::::::::::::: .::::::::. ...........................................................................................................................................................................................................::::............................................................................................................................................................::::.... ...............::---================================================================================================================================------------------------------------------------------------------===++++++++++++++++++++++++++++++++++++++++++++====-----------------------------------------------------:::.......:::::::::..........................................::::::::.............::--===--::.............................................................................................................................................................:::-=+++++++********+=--::...............................::--====--::............................................................................................................................................................................................................................................................................................................::--=+***************+++===------====++======--==================================-----====++++++++*++++++++++++++++++++++++++++++++++++++++*+*****+++++++++++++++++++*******#################################################***********#################****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+==========================================================================++++++=+++++++++++++=======================================================================++++++++++++++++++++++++++++=============================================================================--------------------------------------==-----------------------------------------------------------------------------------------------------------------------:::::::::::::::::::::::::::::::::
*****************************************************+++++++============================================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******#############################################################################***************###########*********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=================================---::........ ... . :+**********. ............................................................................................................................................................................................................................................................................................::::::::--------==========-=================================--=--------------------------------------------------------------------------------------------=====--------------------------------=%%@+----%@@@@@@@@@@%%%%%%%%%%%%%%%%%%%@#********#@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*%#+++**+++++++++++++++++++++++++***#%@@%%%%#*+++++++++++++++++++++++++++++++==*%@%%%%%%%%%#######%%%%%%%##############%%###############################################*++++++++*###*+++++++++**********************++++++++++===++++++++==+++++++++++++++++++++++++==+++++++++++++++++++++++**+++++++++++++++*+::::=++++++++++++++=--:::::::-=++=--------------------=+*-:::::::::::::::::::::::::::::::::::::::::::-==++++===+++=-::::::::::::::::::::::::::::::::::::::::::::::::. ::::::::: ..........................................................................................................................................................................................................::::............................................................................................................................................................::::.... ...............::---================================================================================================================================------------------------------------------------------------------===++++++++++++++++++++++++++++++++++++++++++++====-----------------------------------------------------:::.......:::::::::..........................................::::::::..............::-----:::.............................................................................................................................................................:::-=+++++++********+=--::...............................::--====--::............................................................................................................................................................................................................................................................................................................::--=+***************+++==--------========---------------------------------------------===+++++++++++++++++++++++++++++++++++++++++++++++++++*****+++++++++++++++++++*******#################################################***********#################****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+==========================================================================+++++==+++++++++++++======================================================================+++++++++++++++++++++++++++++++============================================================================-------------------------------------==-----------------------------------------------------------------------------------------------------------------------:::::::::::::::::::::::::::::::::
*****************************************************++++++++=========================================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******#############################################################################***************###########*********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=================================---::......... . . .... . :+*********..............................................................................................................................................................................................................................................................................................::::::::--------==================================================-----------------------------------------------------------------------------------------=====---------------------------------#%@#----%@@@%@@@@@@%%%%%%%%%%%%%%%%%%%@#*********%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#+++++++++++++++++++++++++++++++++**#%@%%%%%#*+++++++++++++++++++++++++++++++=+%@%%%%%%%%%#######%%%%%%%###############%###############################################*++++++++*###*+++++++++**********************+++++++++++++++++++++++++++++++++++++++++====-----=+++++++++++++++++++++***+++++++++++++++*-:::-+++++++*+++++++==-::::::::-=+=---=--=--------=-----=++:::::::::::::::::::::::::::::::::::::::::::::--=------==-:::::::::::::::::::::::::::::::::::::::::::::::::: ::::::::: ..........................................................................................................................................................................................................:::::...........................................................................................................................................................::::.... ................::---================================================================================================================================------------------------------------------------------------------===+++++++++++++++++++++++++++++++++++++++++++++===-----------------------------------------------------:::.......:::::::::..........................................::::::::..............::::-::::..............................................................................................................................................................:::-==++++++********+=--::...............................::-===+==-:::...........................................................................................................................................................................................................................................................................................................::--=++*****#********++==--:::::---======---:::::::::::::::::-------------------------====+++++++++++++++++++++++++++++++++++++++++++++++++++******++++++++++++++++++*******##################################################**********##################****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+==========================================================================++++=++++++++++++++======================================================================+++++++++++++++++++++++++++++++============================================================================-------------------------------------==-------------------------------------------------------------------------------------------------------------------------:::::::::::::::::::::::::::::::
*****************************************************++++++++=====================================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******#############################################################################***************###########*********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=================================---::............ .... .... .=********:..............................................................................................................................................................................................................................................................................................:::::::--------===================================================-----------------------------------------------------------------------------------------====---------------------------------*%@%=---#@@@%@@@@@@%%%%%%%%%%%%%%%%%%%@%*********#@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#**+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**+*+++++++++++++++++++++++++++++++***#%@%%%%#*++++++++++++++++++++++++++++++++=#@@%%%%%%%%#######%%%%%%%%##############%###############################################*+++++++++####+++++++++***********************++++++++++++++++****++++++++++++++====--:--------=+++++++++++++++++++++**+++++++++++++++*+::::-+++++++++++==++=--:::::::::-++=-==---------------=--=+=:::::::::::::::::::::::::::-:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: .::::::::. ..........................................................................................................................................................................................................:::::...........................................................................................................................................................::::.... ................::---================================================================================================================================------------------------------------------------------------------===+++++++++++++++++++++++++++++++++++++++++++++===-----------------------------------------------------:::.......:::::::::..........................................::::::::...............:::::::................................................................................................................................................................::-==+++++*********+=--::..............................:::-==++==-:::...........................................................................................................................................................................................................................................................................................................::--=++*****#********++==--::::::--======--::::::::::::::::::::::------------------======++++++++++++++++++++++++++++++++++++++++++++++++++++******++++++++++++++++++*******##################################################**********##################****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+==========================================================================+++==+++++++++++++======================================================================+++++++++++++++++++++++++++++++++============================================================================------------------------------------==-------------------------------------------------------------------------------------------------------------------------:::::::::::::::::::::::::::::::
*****************************************************++++++++===================================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******#############################################################################***************###########*********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++================================---::............... .. ... .. ... ..-+******- .............................................................................................................................................................................................................................................................................................:::::::---------==================================================-----------------------------------------------------------------------------------------===----------------------------------+%@@=---+@@%@@@@@@@%%%%%%%%%%%%%%%%%%%@%**********#@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%***+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*+++++++++++++++++++++++++++++++++++***#%@%%%#**++++++++++++++++++++++++++++++==+%@%%%%%%%%%#######%%%%%%%##############%###############################################*+++++++++####*++++++++***********************+++++++++++*********++++++++++==--------:--------+++++++++++++++++++++***+++++++++++++++*=::::-++++++*++==-=++=--::::::::::-+=---------------=---=--=+=::::::::::::::::::::::::::-::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::. ::::::::: ..........................................................................................................................................................................................................:::::...........................................................................................................................................................::::.... ................:::---================================================================================================================================------------------------------------------------------------------===+++++++++++++++++++++++++++++++++++++++++++++====----------------------------------------------------:::.......:::::::::..........................................::::::::................:::::.................................................................................................................................................................::-==++************+==-::..............................::--=++++=--::...........................................................................................................................................................................................................................................................................................................:::-=++**************++==-::::::::--=====--::::::::::::::::::::::------------===========++++++++++++++++++++++++++++++++++++++++++++++++++++++*****++++++++++++++++++*******##################################################***********#################**************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+*++=============================================================================++++++++++++++======================================================================+++++++++++++++++++++++++++++++++==============================================================================----------------------------------==--------------------------------------------------------------------------------------------------------------------------::::::::::::::::::::::::::::::
*****************************************************+++++++++================================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******#############################################################################***************###########*********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++================================---::................ ....... ... . ... ..... .:=***+-..............................................................................................................................................................................................................................................................................................::::::----------=======================================++++++++====-----------------------------------------------------------------------------------------==----------------------------------=#@@*----%@%@@@@@@@%%%%%%%%%%%%%%%%%%%%%***********%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#***+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*+++++++++++++++++++++++++++++++****#%%%%%#*+++++++++++++++++++++++++++++++=+%@%%%%%%%%%#######%%%%%%%##############%################################################+++++++++*###*+++++++++**********************++++++++***********++++++===------------:--------+++++++++++++++++++++**+++++++++++++++*+-::::-++++++*+=--==++=--:::::::::::=+=-------------=----=---=+-:::::::::::::::::::::::::--:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: ::::::::: ..........................................................................................................................................................................................................:::::...........................................................................................................................................................::::.... .................:::---===============================================================================================================================-------------------------------------------------------------------===++++++++++++++++++++++++++++++++++++++++++++=====----------------------------------------------------:::.......:::::::::..........................................:::::::.......................................................................................................................................................................................::-==++************+==-::..............................::--=++++==-::...........................................................................................................................................................................................................................................................................................................:::-==+**************++=--::::::::--=====--::::::::::::::::::::----------============+++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****++++++++++++++++++*******##################################################***********#################*****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+=============================================================================++++++++++++++=====================================================================+++++++++++++++++++++++++++++++++++=============================================================================-----------------------------------=--------------------------------------------------------------------------------------------------------------------------::::::::::::::::::::::::::::::
*****************************************************+++++++++=+===========================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******#############################################################################***************###########********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++================================---::.................. ................ ... .......... ................. .:--:.......................................................................................................................................................................::::....................................................................................................................::::::-----------====================================+++++++++++===-----------------------------------------------------------------------------------------=------------------------------------#@@%----%@@@@@@@@@%%%%%%%%%%%%%%%%%%%%@************%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#***+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***#%%%%%#**+++++++++++++++++++++++++++++++=#@%%%%%%%%%#######%%%%%%%%#############%################################################*++++++++*###*+++++++++#**********************++++++*************+*+=----------------::-------++++++++++++++++++++***+++++++++++++++*=:::::-+++++*+=-==-=++=--::::::::::::+=---=----------=-=--=-=-=+:::::::::::::::::::::::::--:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: .:::::::: ..........................................................................................................................................................................................................::::............................................................................................................................................................::::.... .................:::---===============================================================================================================================--------------------------------------------------------------------===+++++++++++++++++++++++++++++++++++++++++++=====----------------------------------------------------:::.......:::::::::..........................................:::::::.......................................................................................................................................................................................::-==++************+==-::..............................::-==++++==-:::..........................................................................................................................................................................................................................................................................................................:::-==+**************++=--::::.:::--=====--::::::::::::::::---------===========+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******+++++++++++++++++*******##################################################***********#################*****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+============================================================================++++++++++++++======================================================================+++++++++++++++++++++++++++++++++++++===========================================================================-----------------------------------=--------------------------------------------------------------------------------------------------------------------------::::::::::::::::::::::::::::::
*****************************************************++++++++++=================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******#############################################################################***************###########********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++================================---::......................... ............................ ...............................................................................................................................................................................................................:::::::...................................................................................................................::::::------------==================================++++++++++++===------------------------------------------------------------------------------------------------------------------------------*%@@=---#@@%@@@@@@%%%%%%%%%%%%%%%%%%%%%%************%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%**#*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***#%%%%%#*++++++++++++++++++++++++++++++==+%@%%%%%%%%%####%%#%%%%%%%##############%###############################################*++++++++*###*+++++++++***********************+++*******************+=--------------:::------=++++++++++++++++++++**+++++++++++++++*+-:::::-+++++*=======++==-::::::::::::-+=----=---------------=--=-:::::::::::::::::::::::::-::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::. .::::::::. ........................................................................................................................................................................................................::::............................................................................................................................................................::::.... ..................::---===============================================================================================================================--------------------------------------------------------------------===+++++++++++++++++++++++++++++++++++++++++++=====---------------------------------------------------::::.......:::::::::...........................................::::::.......................................................................................................................................................................................::--=++************+==-::..............................::-=++++++=-:::...........................................................................................................................................................................................................................................................................................................::--=+***#*#********++=--::::::::--======--::::::::::---------===========++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********++++++++++++++++++******##################################################***********#################******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+==========================================================================+++++++++++++++=====================================================================+++++++++++++++++++++++++++++++++++++++============================================================================---------------------------------==--------------------------------------------------------------------------------------------------------------------------:::::::::::::::::::::::::::::
*****************************************************++++++++++=========++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******#############################################################################***************###########********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++================================--:::...........................................................................................................................................................................................................................................................................:::::::::..................................................................................................................::::::-------------================================+++++*****++++==------------------------------------------------------------------------------------------------------------------------------=%@@*---*@%@@@@@@@%%%%%%%%%%%%%%%%%%%@%%*************%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##****+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***#%%%%#*++++++++++++++++++++++++++++++==+%@%%%%%%%%%%%###%#%%%%%%%##############%###############################################*++++++++*###*+++++++++***********************+**********************+--------------:::------=+++++++++++++++++++***+++++++++++++++*=::::::-++++++========+==-:::::::::::::=+--------------------------::::::::::::::::::::::::--:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: .::::::::. ........................................................................................................................................................................................................::::............................................................................................................................................................::::.... ..................::---===============================================================================================================================--------------------------------------------------------------------===+++++++++++++++++++++++++++++++++++++++++=======---------------------------------------------------::::.......:::::::::...........................................:::::........................................................................................................................................................................................::--=++************+==-::..............................::-=++**++=-:::...........................................................................................................................................................................................................................................................................................................::--=+***#*#********++=--::::::::-===+===----::---------===========++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********++++++++++++++++++******##################################################***********#################******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+==========================================================================+++++++++++++++====================================================================++++++++++++++++++++++++++++++++++++++++============================================================================---------------------------------==--------------------------------------------------------------------------------------------------------------------------:::::::::::::::::::::::::::::
*****************************************************+++++++++++======++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******#############################################################################***************###########********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===============================--:::..........................................................................................................................................................................................................................................................................:::::::::::.................................................................................................................:::::---------------==============================+++++*******+++===------------------------------------------------------------------------------------------------------------------------------#@@%=--=@%@@@@@@%%%%%%%%%%%%%%%%%%%%%%@#************#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#****+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***#%%%%#*++++++++++++++++++++++++++++++==#@@%%%%%%%%%%###%#%%%%%%%%#############%###############################################*++++++++**##**++++++++***********************************************+----:--------:::------=+++++++++++++++++++**+++++++++++++++*+-::::::-++=++=--======+==-:::::::::::::-+=--=------------------=--=::::::::::::::::::::::::--:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: ::::::::: ........................................................................................................................................................................................................::::............................................................................................................................................................::::.... ..................::---===============================================================================================================================--------------------------------------------------------------------===++++++++++++++++++++++++++++++++++++++++=======----------------------------------------------------::::.......:::::::::...........................................:::::........................................................................................................................................................................................::--=++************+==-::..............................:--=++**++=--::...........................................................................................................................................................................................................................................................................................................::--=+*****#********++==-::::::::-===++===----------==========+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****+++++++++++++++++++*******##################################################***********#################*******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+========================================================================++++++++++++++++====================================================================+*+++++++++++++++++++++++++++++++++++++++===========================================================================---------------------------------==---------------------------------------------------------------------------------------------------------------------------::::::::::::::::::::::::::::
*****************************************************+++++++++++++===+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******############################################################################***************###########********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==============================--:::.........................................................................................................................................................................................................................................................................::::::::::::..............................::................................................................................::::::---------------============================++++++********+++===------------------------------------------------------------------------------------------------------------------------------*@@@*---%@%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%*************#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#***++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****#%%%#**++++++++++++++++++++++++++++++=+%@%%%%%%%%%####%##%%%%%%%##############################################################*+++++++**###*++++++++************************************************+---:--------:::------=++++++++++++++++++***+++++++++++++++++-::::::-++====-=======+==-::::::::::::::-+=---==----------------=-=-::::::::::::::::::::::::--:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::. .:::::::: ........................................................................................................................................................................................................::::............................................................................................................................................................::::.... ..................::--================================================================================================================================--------------------------------------------------------------------===++++++++++++++++++++++++++++++++++++++========-----------------------------------------------------::::.......:::::::::............................................:::.........................................................................................................................................................................................::--=++************+==-::.............................::--=++**++=--::...........................................................................................................................................................................................................................................................................................................::--=++****##*******++==--::::::--==++++=====-==========++++++++++++++++++++++++++++++++============++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******##################################################************################*******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+========================================================================+++++++++++++++====================================================================+++++++++++++++++++++++++++++++++++++++++++===========================================================================--------------------------------==---------------------------------------------------------------------------------------------------------------------------::::::::::::::::::::::::::::
*****************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********############################################################################***************##########*********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==============================--:::.........................................................................................................................................................................................................................................................................::::::::::::............................:::::...............................................................................:::::----------------===========================++++++*********+++===------------------------------------------------------------------------------------------------------------------------------+%@%%=--%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%@#*************#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%***+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***#%%##*++++++++++++++++++++++++++++++++%@%%%%%%%%%#######%%%%%%%##############################################################*+++++++**###*++++++++*************************************************=---:-------:::------=++++++++++++++++++**+++++++++++++++++=:::::::-++============+==--::::::::::::::=+=--==----------------=--=-:::::::::::::::::::::::--:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: .::::::::. .........................................................................................................................................................................................................::.............................................................................................................................................................::::.... ..................::--================================================================================================================================--------------------------------------------------------------------===+++++++++++++++++++++++++++++++++++++========------------------------------------------------------::::.......:::::::::.............................................:..........................................................................................................................................................................................:::-=++************+=--::.............................::--=++**++=--::...........................................................................................................................................................................................................................................................................................................::--=++****#********++==--:::::--===++++++=========+++++++++++++++++++++++++++++======================++++++++++++++++++++++++++++++++++++++++***+++++++++++++++++++*******###################################################***********################********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+=======================================================================+++++++++++++++====================================================================+*+++++++++++++++++++++++++++++++++++++++++===========================================================================--------------------------------==----------------------------------------------------------------------------------------------------------------------------:::::::::::::::::::::::::::
******************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********############################################################################**************###########*********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=============================--:::........................................................................................................................................................................................................................................................................::::::::::::::..........................::::::...............................................................................:::::---------------===========================+++++***********+++===------------------------------------------------------------------------------------------------------------------------------=%@%%#=-*@%@@@%%%%%%%%%%%%%%%%%%%%%%@%%@%**************#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#**++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****#%%#**++++++++++++++++++++++++++++++=#@@%%%%%%%%#######%%%%%%%%#############################################################***+++++**###*+++++++++*************************************************=--:-------:::------=++++++++++++++++++*++++++++++++++++++-:::::::=++==========-=+==--:::::::::::::::++=---=------------------==::::::::::::::::::::::::--::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: ::::::::: ........................................................................................................................................................................................................::.............................................................................................................................................................::::.... ..................::--================================================================================================================================--------------------------------------------------------------------===+++++++++++++++++++++++++++++++++++++=======-------------------------------------------------------::::.......:::::::::........................................................................................................................................................................................................................................:::-==+************+=--::..............................::-=++**++=--::...........................................................................................................................................................................................................................................................................................................:::-=++*************+++=----:----==+++++++++++++++++++++++++++++++++++++=================----------====+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******###################################################***********################********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+=======================================================================++++++++++++++====================================================================+*++++++++++++++++++++++++++++++++++++++++++++==========================================================================-------------------------------==-----------------------------------------------------------------------------------------------------------------------------::::::::::::::::::::::::::
******************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********############################################################################**************###########*********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=============================--:::........................................................................................................................................................................................................................................................................::::::::::::::..........................::::::...................................:::::::::...................................:::::---------------=========================+++++++***********+++==--------------------------------------------------------------------------------------------------------------------------------#@@%%*-+@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%#**************%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#***+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****####*++++++++++++++++++++++++++++++=*%@%%%%%%%%##%%####%%%%%%%#############################################################****++++***##*+++++++++*************************************************+=-:-------:::------=++++++++++++++++++++====++++++=++++++-:::::::=++==========-=++=--:::::::::::::::-+==---=------------------=-:::::::::::::::::::::::--:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::. ::::::::: ........................................................................................................................................................................................................:..............................................................................................................................................................::::.... .................:::--================================================================================================================================--------------------------------------------------------------------===++++++++++++++++++++++++++++++++++++======---------------------------------------------------------::::.......::::::::..........................................................................................................................................................................................................................................::-==+***********++=--::..............................::-=++**++=--::..................................................................................................................................................................................................::::......................................................................................................::-=++*************+++==------====++++++++++++++++++++++++++++================----------------------===++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******###################################################***********################********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************++======================================================================++++++++++++++====================================================================+*+++++++++++++++++++++++++++++++++++++++++++++==========================================================================------------------------------==------------------------------------------------------------------------------------------------------------------------------:::::::::::::::::::::::::
******************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********############################################################################**************#########*#*********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=============================--:::........................................................................................................................................................................................................................................................................::::::::::::::.........................:::::::..................................:::::::::::..................................:::::---------------========================++++++*************+++==--------------------------------------------------------------------------------------------------------------------------------+%@%%%=-%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%***************%%%%%%%%%%##%%%%%%%%%%%%%%%%#**+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***####*++++++++++++++++++++++++++++++=+%@%%%%%%%%%#%%#%##%%%%%%%#############################################################****++++***##*+++++++++**************************************************+-::------:::------=++++++++++++++++++++=======+++=++++++-:::::::=++==========-=++=--::::::::::::::::=+==--=--------------=-=--=-:::::::::::::::::::::::-:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: ::::::::: ........................................................................................................................................................................................................:..............................................................................................................................................................::::.... .................::---================================================================================================================================--------------------------------------------------------------------===+++++++++++++++++++++++++++++++++++======----------------------------------------------------------::::.......::::::::..........................................................................................................................................................................................................................................::-==+***********++=-:::..............................::-==++++==-:::.................................................................................................................................................................................................::::::.....................................................................................................::-=++**************++===========+++++++++++++++++++++=================--------------::::::::::::::--===++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******###################################################***********#################********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+======================================================================++++++++++++++===================================================================+*+++++++++++++++++++++++++++++++++++++++++++++++==========================================================================-----------------------------==------------------------------------------------------------------------------------------------------------------------------:::::::::::::::::::::::::
******************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********#############################################################################*************###########*********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==========+================---::.......................................................................................................................................................................................................................................................................:::::::::::::::.........................:::::::.................................::::::---:::::................................:::::---------------=======================++++++**************+++==---------------------------------------------------------------------------------------------------------------------------------#@@%@#:%@%%%%%%%%@%%%%%%%%%%%@%%%%%%%%%%***************#%%%%%%%%%%###%%%%%%%%%%%%%%%#*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***####*+++++++++++++++++++++++++++++++#@%%%%%%%%%####%%##%%%%%%%############################################################****++++***###*++++++++**************************************************+=-:------:::------+++++++++++++++++++==========+++++++*=::::::::=++=-=======--=++==--:::::::::::::::-++=-=-=-------------------=:::::::::::::::::::::::--::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: .::::::::. .......................................................................................................................................................................................................................................................................................................................................................................::::.... ...............::---================================================================================================================================--------------------------------------------------------------------====++++++++++++++++++++++++++++++++++=====-----------------------------------------------------------:::........::::::::.........................................................................................:................................................................................................................................................::-==+***********++=-:::..............................::--==++==--:::................................................................................................................................................................................................::::::::...................................................................................................:::-==+**************+++=========++++++++++++++=================--------------:::::::::::::::::::::::--===+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********###############################################************#################*********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+======================================================================++++++++++++====================================================================+*+*+++++++++++++++++++++++++++++++++++++++++++++=============================================================================---------------------------=-------------------------------------------------------------------------------------------------------------------------------::::::::::::::::::::::::
******************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********#############################################################################*************##########**********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++========++++++++==========---::.......................................................................................................................................................................................................................................................................:::::::::::::::........................::::::::................................:::::-------::::...............................:::::--------------======================+++++++***************+++==---------------------------------------------------------------------------------------------------------------------------------+@%%%@+%@%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%#***************#%%%%%%%%%%%#*###%%%%%%%%%%##*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***###**+++++++++++++++++++++++++++++=*@@%%%%%%%%%#######%%%%%%%############################################################*****+++***###*++++++++**************************************************++=--------::------+++++++++++++++++++===========+++++++=::::::::=++=-========-=++==--::::::::::::::::-++=-=--=-----------------=-::::::::::::::::::::::---::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::. .::::::::: .......................................................................................................................................................................................................................................................................................................................................................................::::.... ...............::---================================================================================================================================--------------------------------------------------------------------====+++++++++++++++++++++++++++++++++======-----------------------------------------------------------:::........::::::::.......................................................................................:::::..............................................................................................................................................::-==+***********++=-:::..............................:::--=====-:::.................................................................................................................................................................................................:::::::::...................................................................................................::-==+**************++++========++++++++===============-------------:::::::::::::::::::::::::::::::::--===+++++++++++++++=========+++++++++++++++++++++++++++++++++++********################################################***********#################*********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+=======================================================================+++++++++++===================================================================++**+++++++++++++++++++++++++++++++++++++++++++++++=============================================================================--------------------------=-------------------------------------------------------------------------------------------------------------------------------::::::::::::::::::::::::
******************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********##############################################################################************##########**********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++====++++++++++++========---::......................................................................................................................................................................................................................................................................::::::::::::::::........................::::::::...............................::::----===---::::.............................:::::---------------=====================+++++++****************++===----------------------------------------------------------------------------------------------------------------------------------#@@%%@%@%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%@%****************%%%%%%%%%%%%##**######%%%##**++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***###*+++++++++++++++++++++++++++++=+%@%%%%%%%%%#######%%%%%%%############################################################*****+++***###*++++++++**************************************************+++=------:::------++++++++++++++++++=============++++++-::::::::=++=-==========++===--::::::::::::::::=+==-=-------------------==-::::::::::::::::::::::--::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: ::::::::: .......................................................................................................................................................................................................................................................................................................................................................................::::.... ................::---================================================================================================================================---------------------------------------------------------------------===++++++++++++++++++++++++++++++++======------------------------------------------------------------:::........::::::::.......................................................................................::::::.............................................................................................................................................::--=+***********++=-::................................::--------::..................................................................................................................................................................................................:::::::::...................................................................................................::--=+**************+++++=====================--------------::::::::::::::::::::::::::::::::....::::::---====+=======================================++++++++++++++++++******################################################***********#################*************************************************************************************************************************************************************************************************############********************************************************************************************************************************************************************************************************************************************************++=======================================================================+++++++++===================================================================+****++++++++++++++++++++++++++++++++++++++++++++++++============================================================================--------------------------=--------------------------------------------------------------------------------------------------------------------------------:::::::::::::::::::::::
******************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********################################################################################**********#########***********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++========--:::......................................................................................................................................................................................................................................................................:::::::::::::::.........................:::::::................................::::--=======---:::............................:::::---------------=====================+++++******************++===----------------------------------------------------------------------------------------------------------------------------------+%@%%@%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%@%****************#%%%%%%%%%%%%%##******#%###**+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***##**++++++++++++++++++++++++++++++#@@%%%%%%%%########%%%%%%############################################################*****+++**+###*++++++++***************************************************++++=---::::-----=++++++++++++++++++==============+++++-::::::::=++============++====-::::::::::::::::-++=-=----------------------::::::::::::::::::::::---::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::. ::::::::: .......................................................................................................................................................................................................................................................................................................................................................................::::.... .................::---================================================================================================================================---------------------------------------------------------------------===++++++++++++++++++++++++++++++++=====-------------------------------------------------------------:::........::::::::......................................................................................:::::::.............................................................................................................................................::--=+***********++=-::.................................:::----::::..................................................................................................................................................................................................:::::::::...................................................................................................::--=++************++++++=============--------------::::::::::::::::::::::::......................:::::---==========------------------====================+++++++++++++++******##############################################***********#################**************************************************************************************************************************************************************************************#########################*******************************************************************************************************************************************************************************************************************************************************+=======================================================================+++++++++===================================================================+***+*+++++++++++++++++++++++++++++++++++++++++++++++++===========================================================================-------------------------==-------------------------------------------------------------------------------------------------------------------------------:::::::::::::::::::::::
******************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********#################################################################################*********#########***********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=======--:::......................................................................................................................................................................................................................................................................:::::::::::::::.........................:::::::...............................::::--===+++===---:::...........................:::::---------------====================+++++******************+++===-----------------------------------------------------------------------------------------------------------------------------------#@@@%%@%%%%%%%%%%%%%%%%%%@%%%%%%%%%%%%@%****************#%%%%%%%%%%%%%%##****#####**++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******+++++++++++++++++++++++++++++=*@%%%%%%%%%##%#####%%%%%%%############################################################*****++**+####+++++++++**************************************************+++++==-:-::-----=+++++++++++++++++===============++++=-::::::::=++=============+====--::::::::::::::::=++=--=-----------------=-=::::::::::::::::::::::---::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::. .::::::::. ........................................................................................................................................................................................................................................................................................................................................................................::::.... .................::---================================================================================================================================---------------------------------------------------------------------====++++++++++++++++++++++++++++++======-------------------------------------------------------------:::........::::::::.....................................................................................::::::::.............................................................................................................................................::--=+***********++=-::.................................::::::::::...................................................................................................................................................................................................::::::::::..................................................................................................::--=++************+++++======--------------::::::::::::::::::::::::..............................::::::----------------------------------------------=======++++++++++++++****##############################################***********#################*********************************************************************************************************************************************************************************################################*****************************************************************************************************************************************************************************************************************************************************+=======================================================================++=+++++===================================================================+*******++++++++++++++++++++++++++++++++++++++++++++++++============================================================================------------------------==--------------------------------------------------------------------------------------------------------------------------------::::::::::::::::::::::
******************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********##################################################################################********#########**********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=======--:::......................................................................................................................................................................................................................................................................:::::::::::::::.........................::::::................................:::---==++++++==---:::..........................:::::---------------===================+++++*******************+++===-----------------------------------------------------------------------------------------------------------------------------------=%@@%@@%%%%%%%%@%%%%%%%%%@%%%%%%%@%%%%@%#****************%%%%%%%%%%%%%%%%#########**+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****+++++++++++++++++++++++++++++=*%@%%%%%%%%%#%#####%%%%%%%############################################################*****++**+*###+++++++++***************************************************++++++-:::::----=+++++++++++++++++===============++++=--:::::::=+++============++===--:::::::::::::::::=++=-=-------------------=-::::::::::::::::::::::---:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: .::::::::: ........................................................................................................................................................................................................................................................................................................................................................................::::.... .................::---================================================================================================================================----------------------------------------------------------------------====+++++++++++++++++++++++++++++=====--------------------------------------------------------------:::........::::::::.....................................................................................:::::::::............................................................................................................................................::--=+***********+==-::...................................:::::::........::::........................................................................................................................................................................................::::::::::..................................................................................................::--=++************++++===-----------::::::::::::::::::::::.........................................::::::-------::::::::::::::::::::::::::::-------------===============+++***##############################################***********#################*******************************************************************************************************************************************************************************###################################*****************************************************************************************************************************************************************************************************************************************************+======================================================================++==+++===================================================================++***+*+**+++++++++++++++++++++++++++++++++++++++++++++++++==========================================================================------------------------==--------------------------------------------------------------------------------------------------------------------------------::::::::::::::::::::::
******************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******###################################################################################*******#########**********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++======--:::.....................................................................................................................................................................................................................................................................::::::::::::::............................::::.................................:::--===+++++++==---:::.........................:::::---------------==================+++++********************+++==-------------------------------------------------------------------------------------------------------------------------------------+@%@@%%%%%%%%%@%%@%%@%%%@%%%%%%%%%%%%%@%*****************%%%%%%%%%%%%%%%%%######****++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******++++++++++++++++++++++++++++++%@%%%%%%%%%%%#####%%%%%%%%###########################################################*****++**+*###*++++++++**#************************************************++++++=-::::----=++++++++++++++++================++++=--:::::::=+++============++===---::::::::::::::::-++=------------------=--==::::::::::::::::::::::---::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::. ::::::::: ........................................................................................................................................................................................................................................................................................................................................................................::::.... .................::---================================================================================================================================----------------------------------------------------------------------======++++++++++++++++++++++++++======--------------------------------------------------------------:::........::::::::.....................................................................................:::---:::.............................................................................................................................................::-=++*********++==-::.................................................:::::::......................................................................................................................................................................................::::::::::..................................................................................................:::-=++***********++++==----::::::::::::::::::::.....................................................:::::::::::::::::::::::::::::::::::::::::::::::::::------=====-----==++****#############################################***********#################******************************************************************************************************************************************************************************#####################################****************************************************************************************************************************************************************************************************************************************************++=====================================================================+=========================================================================+******+***+++++++++++++++++++++++++++++++++++++++++++++++++==========================================================================-----------------------==--------------------------------------------------------------------------------------------------------------------------------::::::::::::::::::::::
******************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******###################################################################################*******#########**********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++======--:::.....................................................................................................................................................................................................................................................................::::::::::::::............................::...................................:::--==++++**+++==---:::........................::::----------------=================+++++*********************++===--------------------------------------------------------------------------------------------------------------------------------------#@%%@%%%%%%%%%%%@%%@%%%%%%%%%%%%%%%#%@%#*****************%%%%%%%%%%%%%%%%%##*#****+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****++++++++++++++++++++++++++++++#@%%%%%%%%%%###%###%%%%%%%###########################################################*****+++*+*###*++++++++**#************************************************+++++++=-::-----=+++++++++++=++++================+++==---::::::=+++=========--=++===---:::::::::::::::::=++=------------------=--=-:::::::::::::::::::::----:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: ::::::::: ........................................................................................................................................................................................................................................................................................................................................................................::::.... .................::---===============================================================================================================================-----------------------------------------------------------------------======++++++++++++++++++++++++++=====---------------------------------------------------------------:::........::::::::....................................................................................:::----:::.............................................................................................................................................::-=++*********++==-::................................................::::::::......................................................................................................................................................................................::::::::::..................................................................................................:::-=++***********+++===--::::::::::::::..............................................................::::::::::::::::::::::::::::.::::::::::::::::::::::::--------------==++***#############################################***********#################*****************************************************************************************************************************************************************************######################################*****************************************************************************************************************************************************************************************************************************************************+=====================================================================+========================================================================+******+****++++++++++++++++++++++++++++++++++++++++++++++++++=========================================================================-----------------------==--------------------------------------------------------------------------------------------------------------------------------::::::::::::::::::::::
******************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******####################################################################################******#########**********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++======--::::....................................................................................................................................................................................................................................................................:::::::::::::.................................................................:::---==+++*****++==---:::.......................::::---------------=================+++++*********************+++===--------------------------------------------------------------------------------------------------------------------------------------=%%@%%%%%@@%@%%%%%%%%%%%%%%%%%%%%%%#%%@%#****************#%%%%%%%%%%%%%%%%####****+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****+++++++++++++++++++++++++++++*%%%%%%%%%%%%######%%%%%%%###########################################################*****+++*+*###*++++++++***#**********************************************++++++++++-::----=++++++++++==++++================+*++=---::::::=+++============+++==----::::::::::::::::-+++=---------------------=-:::::::::::::::::::::----::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: .::::::::. ........................................................................................................................................................................................................................................................................................................................................................................::::.... ...................::---===============================================================================================================================------------------------------------------------------------------------======+++++++++++++++++++++++++====----------------------------------------------------------------:::........::::::::....................................................................................::------::.............................................................................................................................................::-=++********++==--::................................................::::-::::.....................................................................................................................................................................................::::::::::..................................................................................................:::-=++*********+++++==--:::::::.:.....................................................................::::::::::.................................::::::::::::------::::--=++***#############################################***********##################****************************************************************************************************************************************************************************######################################******************************************************************************************************************************************************************************************************************************************************=====================================================================+========================================================================+************++++++++++++++++++++++++++++++++++++++++++++++++++========================================================================-----------------------==----------------------------------------------------------------------------------------------------------------------------------::::::::::::::::::::
******************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******####################################################################################******#########**********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++======--::::....................................................................................................................................................................................................................................................................::::::::::::..................................................................:::---==+++*****+++==---::::....................:::::---------------================+++++**********************+++===---------------------------------------------------------------------------------------------------------------------------------------#%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%#%%@%#*****************#%%%%%%%%%%%%%%%%###***+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****++++++++++++++++++++++++++++++#%%%%%%%%%%%######%%%%%%%###########################################################******++*++###*++++++++*************+++******************************+++++++++++++++=-----=++++++++++=++++=================**++=----:::::=+++============+++===---:::::::::::::::::=+++---=--=-----------=--==-::::::::::::::::::::----:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::. .::::::::. .........................................................................................................................................................................................................................................................................................................................................................................::::.... ...................::---===============================================================================================================================------------------------------------------------------------------------========++++++++++++++++++++++=====----------------------------------------------------------------:::........::::::::....................................................................................::--==--::.............................................................................................................................................::-=++*******+++==-::.................................................:::---:::......................................................................................................................................................................................:::::::::..................................................................................................:::-==+********+++++==--::::..............................................................................::::........................................::::::::::::::::::--=++***#############################################***********#################****************************************************************************************************************************************************************************#######################################******************************************************************************************************************************************************************************************************************************************************+====================================================================+=======================================================================+**************++++++++++++++++++++++++++++++++++++++++++++++++++=======================================================================-----------------------==----------------------------------------------------------------------------------------------------------------------------------::::::::::::::::::::
******************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******####################################################################################******#########**********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++======--::::....................................................................................................................................................................................................................................................................:::::::::::...................................................................:::---==+++******+++==---::::...................:::::---------------===============+++++***********************+++===---------------------------------------------------------------------------------------------------------------------------------------=%%@%%@@%%@%%%%%%%%%%%%%%%%%%%%%%%#%%%@%#******************####%%%%%%%%%%%%%%#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***++++++++++++++++++++++++++++++*%%%%%%%%%%%######%%%%%%%%##########################################################*********++####+++++++++************+++++**************************++++++++++++++++++==---+++++++++++=++++=================**++-----:::::=+++============++++==----:::::::::::::::::=++=-=-------------------==-::::::::::::::::::::----::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: ::::::::: .........................................................................................................................................................................................................................................................................................................................................................................::::.... ...................::---===============================================================================================================================-------------------------------------------------------------------------========++++++++++++++++++++======----------------------------------------------------------------:::........::::::::....................................................................................::-====--:.............................................................................................................................................::-==+******++===--::................................................:::-----:::.....................................................................................................................................................................................:::::::::..................................................................................................:::-==+*******++++===--::::..............................................................................................................................::::::::::::::::-==+***#############################################***********#################****************************************************************************************************************************************************************************########################################******************************************************************************************************************************************************************************************************************************************************====================================================================+======================================================================+****************+++++++++++++++++++++++++++++++++++++++++++++++++++=====================================================================-----------------------==----------------------------------------------------------------------------------------------------------------------------------::::::::::::::::::::
******************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********####################################################################################******#########**********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++======--::::...................................................................................................................................................................................................................................................................::::::::::::...................................................................:::---==+++*******+++===--::::..................:::::----------------==============++++***********************++++===----------------------------------------------------------------------------------------------------------------------------------------*%%@@%%%%@%%%%%%%%%%%%%%%%%%%%%%%#%%%%@%#****************+*#%%%%%%%%%%%%%%%@#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=*%%%%%%%%%%%#######%%%%%%%###########################################################********++*###*++++++++************+++++++************************++++++++++++++++++++===+*++++++++==+++=================+**+=------::::=+++============++++===---:::::::::::::::::-+++=---=-=---------------==-:::::::::::::::::::----::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: ::::::::: ..........................................................................................................................................................................................................................................................................................................................................................................::::.... ....................::---===============================================================================================================================--------------------------------------------------------------------------=========++++++++++++++++++=====-----------------------------------------------------------------:::........::::::::...................................................................................::--====--::............................................................................................................................................::-==+****+++===--::.................................................:::------::.....................................................................................................................................................................................:::::::::..................................................................................................:::--=++*****+++====--::::..................................................................................................................................:::::::::::::-==+***#############################################***********#################****************************************************************************************************************************************************************************########################################******************************************************************************************************************************************************************************************************************************************************+===================================================================+=====================================================================++*******************++++++++++++++++++++++++++++++++++++++++++++++++======================================================================-----------------------=----------------------------------------------------------------------------------------------------------------------------------::::::::::::::::::::
******************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********####################################################################################******########***********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++======--::::...................................................................................................................................................................................................................................................................::::::::::::...................................................................:::---===++*********++===--::::.................:::::----------------=============++++************************+++===------------------------------------------------------------------------------------------------------------------------------------------#%%%%%@%@%%%%%%%%%%%%%%%%%%%%%%%%#%%%@@%#**********+++++*+****##%%%%%%%%%%%%**+***++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#%%%%%%%%%%%######%%%%%%%###########################################################*********+*###*++++++++*#**#*******++++++++**********************+++++++++=====++=+++++==++++++++++=+++==================+**+-------::::=+++============+++++==----:::::::::::::::::=+++-=-=--------------=---==-::::::::::::::::::-----:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-. .:::::::: ..........................................................................................................................................................................................................................................................................................................................................................................:::::.... ....................::---===============================================================================================================================----------------------------------------------------------------------------=========+++++++++++++++======-----------------------------------------------------------------:::........::::::::...................................................................................::-==++==-::............................................................................................................................................::--=++**++===--::::.................................................:::------::.....................................................................................................................................................................................:::::::::...................................................................................................::--=++****+++==----::::.....................................................................................................................................:::::::::::-==+***#############################################***********#################****************************************************************************************************************************************************************************########################################*******************************************************************************************************************************************************************************************************************************************************===================================================================+=====================================================================+***********************++++++++++++++++++++++++++++++++++++++++++++++======================================================================-=--------------------==---------------------------------------------------------------------------------------------------------------------------------::::::::::::::::::::
******************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********####################################################################################******########***********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=====--::::...................................................................................................................................................................................................................................................................::::::::::::...................................................................:::---===++*********+++===--::::................::::-----------------============++++*************************+++===------------------------------------------------------------------------------------------------------------------------------------------+*%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%#%%%@@%%*******++++++++++**#***#%%%%%%%%%%@%@@@@@@%#*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*%%%%%%%%%%%#######%%%%%%###########################################################*********+*###*++++++++*#**********+++++++++*********************+++++++++=======++++++++*+++++++++++++==================+**+--------:::=+++============+++++==----:::::::::::::::::-+++=---=------------------==-::::::::::::::::::----::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: .::::::::. ...........................................................................................................................................................................................................................................................................................................................................................................:::::.... ....................::---===============================================================================================================================-----------------------------------------------------------------------------==========+++++++++++++=====------------------------------------------------------------------:::........::::::::...................................................................................::-==++==-::............................................................................................................................................::--=+++++==---::::..................................................:::--=---::......................................................................................................................................................................................::::::::...................................................................................................:::-==++++++===---:::::...........................................................................................................................................:::::--=++***##############################################**********#################***************************************************************************************************************************************************************************#########################################*******************************************************************************************************************************************************************************************************************************************************+=======================================================================================================================================+**************************+++++++++++++++++++++++++++++++++++++++++++++========================================================================-------------------==----------------------------------------------------------------------------------------------------------------------------------:::::::::::::::::::
******************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********####################################################################################******#######************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=====--::::...................................................................................................................................................................................................................................................................::::::::::::...................................................................::::--===+++**********+++==---:::..............:::::-----------------===========++++*************************+++====--------------------------------------------------------------------------------------------------------------------------------------------#%@@%%@@%%%%%%%%%%%%%%%%%%%%%%%##%%%@@%#****++++++++**##%@@@@@@@@@%%%%%%%%%@@@@@@@@%#**++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#%%%%%%%%%%%%#####%%%%%%%##########################################################*********+*###*++++++++************+++++++++++******************+++++++++===========+==+***+++++++++++===================***=--------::-=+++=============++++===----:::::::::::::::::=+++==--------------------===::::::::::::::::::-----:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: .::::::::: ...........................................................................................................................................................................................................................................................................................................................................................................:::::.... ....................::---===============================================================================================================================-------------------------------------------------------------------------------==========++++++++++======------------------------------------------------------------------:::........:::::::....................................................................................:--=++++=-::............................................................................................................................................::--=+++++==--:::....................................................:::------::......................................................................................................................................................................................::::::::....................................................................................................::--==++++==---::::::.............................................................................................................................................::::--=++***##############################################**********##################**************************************************************************************************************************************************************************#########################################********************************************************************************************************************************************************************************************************************************************************+=====================================================================================================================================++*****************************++++++++++++++++++++++++++++++++++++++++++========================================================================-------------------==----------------------------------------------------------------------------------------------------------------------------------:::::::::::::::::::
******************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********####################################################################################******#######************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=====--::::...................................................................................................................................................................................................................................................................::::::::::::...................................................................::::---===++***********+++==--::::.............:::::-----------------==========++++**************************+++===----------------------------------------------------------------------------------------------------------------------------------------------*%@@%@%%%%%%%%%%%%%%%%%%@%%%%%%#%#%%@%#**++++***#%%%@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%##***++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#%%%%%%%%%%%%%####%%%%%%%##########################################################*********+*###*++++++++**#*********+++++++++++******************++++++++================+***+++++++++====================***=---------:-=+++=============++++===----:-::::::::::::::::=+++==---------------=----==-::::::::::::::::::----::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::. ::::::::: .............................::::::::......................................................................................................................................................................................................................................................................................................................................:::::.... .....................::---===============================================================================================================================--------------------------------------------------------------------------------==========+++++++++=====-------------------------------------------------------------------:::........:::::::....................................................................................:--=++++=--:............................................................................................................................................::--=++++==--:::.....................................................:::------::......................................................................................................................................................................................::::::::....................................................................................................:::--======---:::::..............................................................................................................................................:::::--=++***##############################################**********##################***************************************************************************************************************************************************************************########################################********************************************************************************************************************************************************************************************************************************************************+=====================================================================================================================================+*******************************++++++++++++++++++++++++++++++++++++++++++========================================================================-------------=----==----------------------------------------------------------------------------------------------------------------------------------:::::::::::::::::::
*****************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********###################################################################################******#########**********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=====--::::...................................................................................................................................................................................................................................................................:::::::::::.....................................................................::::--===+++***********+++==---::.............:::::----------------==========+++++*************************+++====----------------------------------------------------------------------------------------------------------------------------------------------:-%@@%%%%%%%%%%%%@%%%@%%%%%%%%%%%%#%%%#***##%%@%@%%%%@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%#####***++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#%%%%%%%%%%%%####%%%%%%%##########################################################*********++####++++++++************++++++++++++*****************++++++++=================+***+++++++=====================***=---------:-=+++=============++++===-----:::::::::::::::::-++++-----=--==-----------===-:::::::::::::::::-----:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: ::::::::: ..........................:::::::::::::::::.................................................................................................................................................................................................................................................................................................................................:::::.... ....................::---==============================================================================================================================-----------------------------------------------------------------------------------===========++++=======-------------------------------------------------------------------:::........:::::::...................................................................................::-==++++=--:............................................................................................................................................::--=++++==-:::.......................................................::------::.......................................................................................................................................................................................:::::::....................................................................................................::::---==---::::..................................................................................................................................................::::--=++***##############################################**********##################**************************************************************************************************************************************************************************##########################################*****************************************************************************************************************************************************************************************************************************************************+**+===================================================================================================================================+*********************************++++++++++++++++++++++++++++++++++++++++++==========================================================================----------=--=-==----------------------------------------------------------------------------------------------------------------------------------:::::::::::::::::::
*****************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********###################################################################################******########***********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=====--::::...................................................................................................................................................................................................................................................................:::::::::::.....................................................................::::---==+++************+++==--::::...........:::::-----------------=========++++**************************+++====-----------------------------------------------------------------------------------------------------------------------------------------------:#@%@%%%%%%%%%%%%%%%@%%%%%%%%%###%%%%%@@@@@@%%###%@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%########***+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#%%%%%%%%%%%%####%%%%%%%##########################################################*********++*###*+++++++************+++++++++++++***************+++++++++==================+****+++++====================+***+-----------=+++=============++++====----::::::::::::::::::=+++=--=-=--=-------------===-:::::::::::::::::----:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: .::::::::. ..........................:::::::::::::::::::::::............................................................................................................................................................................................................................................................................................................................:::::.... .....................::---==============================================================================================================================-------------------------------------------------------------------------------------====================-------------------------------------------------------------------:::........:::::::...................................................................................::-=+++++==-:............................................................................................................................................:::-=++++==-::........................................................::------::.......................................................................................................................................................................................:::::::.....................................................................................................::::------::::..................................................................................................................................................:::::--=++***##############################################**********##################**************************************************************************************************************************************************************************##########################################********************************************************************************************************************************************************************************************************************************************************++================================================================================================================================++***********************************++++++++++++++++++++++++++++++++++++++++++==========================================================================------------=-==----------------------------------------------------------------------------------------------------------------------------------:::::::::::::::::::
*****************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********###################################################################################******#######************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=====--::::...................................................................................................................................................................................................................................................................:::::::::::......................................................................::::---==++*************+++==--:::...........::::------------------========++++**************************+++====----------------------------------------------------------------------------------------------------------------------------------------------:-:=@@@%%%%%%%%%@%%%%%%%%%%%%%%%%##%%%%@%%%%%%%%%%@@@@@@@@@@@@@@%%%%%%%%%%%%%%%###############**++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#%%%%%%%%%%%%####%%%%%%%#########################################################*********++*###*++++++++***********++++++++++++++*************+++++++++=====================++*+++======================+**++=----------=+++=============++++====-----:::::::::::::::::-=+++=-----=--------------====:::::::::::::::::-----::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-. .::::::::. ...........................::::::::::::::::::::::::::::::::....................................................................................................................................................................................................................................................................................................................:::::.... .....................::---==============================================================================================================================---------------------------------------------------------------------------------------=================--------------------------------------------------------------------:::........:::::::...................................................................................::-=++**+==-::...........................................................................................................................................:::-=++++=--::........................................................::------::.......................................................................................................................................................................................:::::::......................................................................................................:::::::::::....................................................................................................................................................:::::--=++***###############################################*********##################***************************************************************************************************************************************************************************#########################################*********************************************************************************************************************************************************************************************************************************************************+================================================================================================================================+*************************************++++++++++++++++++++++++++++++++++++++++++==========================================================================---------=-=-==----------------------------------------------------------------------------------------------------------------------------------:::::::::::::::::::
*****************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********###################################################################################******######************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=====--::::....................................................................................................................................................................................................................................................................::::::::::.......................................................................::::--==+++*************+++==--:::..........::::------------------=======++++***************************+++====----------------------------------------------------------------------------------------------------------------------------------------------:::-%@%%%%%%%%%%@%%%%%@%%%%%%%%%%%%#%%%%%%%%%%@@@@@@@@@@@@@@@%%%%%%%%%%%#######################***++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#%%%%%%%%%%%%#%##%%%%%%%##########################################################********++*###*++++++++*#*********++++++++++++==++*******+****+++++++========================+++=======================***+++----------=+++=============+++++====------::::::::::::::::=+++=--------=-----------=====::::::::::::::::-----::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-. ::::::::: ..........................:::::::::::::::::::::::::::::::::::::::..............................................................................................................................................................................................................................................................................................................:::::.... .....................::---==============================================================================================================================----------------------------------------------------------------------------------------===============---------------------------------------------------------------------:::........:::::::...................................................................................::-=++**+==-::...........................................................................................................................................:::-==+++=--::........................................................:::----:::........................................................................................................................................................................................:::::.........................................................................:::::..........................:::::::::.....................................................................................................................................................::::::-==+***##############################################************################***************************************************************************************************************************************************************************#########################################*********************************************************************************************************************************************************************************************************************************************************++=============================================================================================================================++***************************************++++++++++++++++++++++++++++++++++++++++++=========================================================================---------=-=-==----------------------------------------------------------------------------------------------------------------------------------:::::::::::::::::::
*****************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********####################################################################################*#***#######***********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++====---::::....................................................................................................................................................................................................................................................................:::::::::........................................................................::::---==++**************+++==--:::........:::::------------------======+++++**************************+++=====---------------------------------------------------------------------------------------------------------------------------=====----------------::#@%%%%%%%%%%@%%%%%%%%@%%%%%%%%#%%%%%%%%%@@@@@@@@@@@@%%######################################**+++*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++##%%%%%%%%%%%#%###%%%%%%%#########################################################********++*####++++++++*##********+++++++++++++===+*******+***+++++++==================================================***+++=---------=+++=============+++++====------::::::::::::::::-=+++=--=-------------=----===-::::::::::::::::-----::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: ::::::::: ............................::::::::::::---::::::::::::::::::::::::::::::::::....................................................................................................................................................................................................................................................................................................:::::.... ......................::---==============================================================================================================================------------------------------------------------------------------------------------------============----------------------------------------------------------------------:::........:::::::...................................................................................::-=+***+==-::...........................................................................................................................................:::-==+++==-::........................................................:::----:::........................................................................................................................................................................................:::::.......................................................................::::::::............................:::........................................................................................................................................................::::::-==+***##############################################*****************###########***************************************************************************************************************************************************************************#########################################**********************************************************************************************************************************************************************************************************************************************************+============================================================================================================================++****************************************+++++++++++++++++++++++++++++++++++++++++++================================================================================-=-=-==----------------------------------------------------------------------------------------------------------------------------------:::::::::::::::::::
*****************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********#######################################################################################**#######***********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++====---::::.....................................................................................................................................................................................................................................................................:::::::..........................................................................::::--==++***************+++==--:::.......:::::------------------======++++**************************++++====---------------------------------------------------------------------------------------------------------------------------=======-------------:-::=@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@%%#########################################***+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#%%%%%%%%%%%%%###%%%%%%%#########################################################********+++*###++++++++*##*********++++++++++++====+***+***+***+++++==================================================+**+++++---------++++=============++++++====------:::::::::::::::-=++++=---------------------===-:::::::::::::::------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::- .::::::::. ..............................:::::::::---------------:::::::::::::::::::::::::::::::::::..........................................................................................................................................................................................................................................................................................:::::.... ......................::---==============================================================================================================================--------------------------------------------------------------------------------------------=========-----------------------------------------------------------------------:::........:::::::...................................................................................:--=+***+==-::............................................................................................................................................::-==+++==-::.........................................................:::---:::.........................................................................................................................................................................................::::......................................................................::::::::::.......................................................................................................................................................................................:::::--=+***#############################################**********************#######***************************************************************************************************************************************************************************#########################################********************************************************************************************************************************************************************************************************************************************************+**+=========================================================================================================================+++******************************************++++++++++++++++++++++++++++++++++++++++++=================================================================================----===----------------------------------------------------------------------------------------------------------------------------------::::::::::::::::::
*****************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********#######################################################################################*#######************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++====---::::......................................................................................................................................................................................................................................................................:::::............................................................................::::--=+++***************+++==--:::......:::::------------------=====++++***************************+++=====----------------------------------------------------------------------------------------------------------------------------======-------------:::::%@@%%%%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%@@@@@@@@%%############################################**+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#%%%%%%%%%%%%%%##%%%%%%%#########################################################********+++*###*+++++++**#*********++++++++++++=====+********+***++++=================================================+**+++++=-------=++++==============+++++====------::::::::::::::::-=+++=--=--------------=---====-:::::::::::::::-----:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-. .::::::::. ...............................::::::::--------------------------::::::::::::::::::::::::::::.......................................................................................................................................................................................................................................................................................:::::.... ......................::---==============================================================================================================================-------------------------------------------------------------------------------------------------==-------------------------------------------------------------------------:::.........::::::..................................................................................::-==+***++=-::............................................................................................................................................::--=+++==-::.........................................................:::---:::.........................................................................................................................................................................................::::....................................................................::::::::::::........................................................................................................................................................................................::::--=++***########################################****************************#####***************************************************************************************************************************************************************************#########################################***********************************************************************************************************************************************************************************************************************************************************++======================================================================================================================++++********************************************+++++++++++++++++++++++++++++++++++++++++++===============================================================================-=--===----------------------------------------------------------------------------------------------------------------------------------::::::::::::::::::
*****************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********##########################################################################################*###*************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++====---::::........................................................................................................................................................................................................................................................................................................................................................:::--==++****************++===--::......::::-------------------=====++++***************************+++====------------------------------------------------------------------------------------------------------------------------------====---------------::::*@%%%%%%%%%%%@%%@%%%%@%%%%%%%%%%%%%%%%%%%@@@@@@%%##############################################***+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++##%%@%%%%%%%%%%##%%%%%%%#########################################################*******#+++*###*+++++++**#*********+++++++++++++======+*+**+*++***+===================================================***+++++=-------=++++==============+++=++====------:::::::::::::::-==+++=-=------------=----====+-:::::::::::::::------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-. .::::::::: ................................::::::::--------------------------------------:::::::::::::::::......................................................................................................................................................................................................................................................................................:::::.... ......................::---==============================================================================================================================----------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::.........::::::..................................................................................::-==+***++=-::............................................................................................................................................::--=++++=-:::........................................................::::--:::.........................................................................................................................................................................................::......................................................................:::::::::::::.......................................................................................................................................................................................::::--=++***###################################*********************************#####***************************************************************************************************************************************************************************#########################################************************************************************************************************************************************************************************************************************************************************************+=====================================================================================================================++***********************************************+++++++++++++++++++++++++++++++++++++++++++===============================================================================-=--===----------------------------------------------------------------------------------------------------------------------------------::::::::::::::::::
*****************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********#############################################################################################**************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++====---::::........................................................................................................................................................................................................................................................................................................................................................::::-==++*****************++==--:::....:::::-------------------====++++***************************+++=====-------------------------------------------------------------------------------------------------------------------------------==-----------------:::-@@%%%%%%%@%@%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%@@@@%#################################################***+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#%%%%%%%%%%#%%%##%%%%%%%########################################################*********++*###*++++++++#**********+++++++++++++=======+**+*+*+++**++=================================================***++++++-------=++++==============++=-++=====-----::::::::::::::::-=+++=--=-=-----------------===-::::::::::::::------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: ::::::::: .................................::::::::-----------------------------------------------::::::::......................................................................................................................................................................................................................................................................................:::::.... ......................::---==============================================================================================================================----------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::.........::::::......................................................::..........................::-=++***++=-::............................................................................................................................................::--=++++=-:::........................................................:::::::::................................................................................................................................................................................................................................................................::::::::::::::........................................................................................................................................................................................::::-=++***###############################**************************************####***************************************************************************************************************************************************************************#########################################*************************************************************************************************************************************************************************************************************************************************************+====================================================================================================================***************************************************+++++++++++++++++++++++++++++++++++++++++++=============================================================================-=--===---------------------------------------------------------------------------------------------------------------------------------:::::::::::::::::::
*****************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********###########################################################################################***************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++====---::::.......................................................................................................................................................................................................................................................................................................................:::...............................:::--=+++*****************++==--::::..:::::------------------====++++****************************++=====---------------------------------------------------------------------------------------------------------------------------------=----------------:::::#@@%@##@%%@%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%##################################################***+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=+#%%%%%%%%%%%%%###%%%%%%%########################################################*********++*###*++++++++*#*********+++++++++++++========+*++*+++++*+++===============================================+**+++++++-------=++++==============++=-++=====-----::::::::::::::::-==+++==-=------------------====-::::::::::::::------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: ::::::::: ...................................::::::::---------------------------------------------------::::......................................................................................................................................................................................................................................................................................:::::.... ......................::---==============================================================================================================================----------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::.........::::::....................................................::::..........................::-=++***++=-::............................................................................................................................................::--=++++=-:::.........................................................::::::::................................................................................................................................................................................................................................................................::::::---:::::........................................................................................................................................................................................::::-==+***##############################*********************+++++++++++*******####***************************************************************************************************************************************************************************#########################################**************************************************************************************************************************************************************************************************************************************************************+==================================================================================================================+****************************************************+++++++++++++++++++++++++++++++++++++++++++============================================================================-=---==----------------------------------------------------------------------------------------------------------------------------------::::::::::::::::::
*****************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********###########################################################################################**************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++====---::::.....................................................................................................................................................................................................................................................................................................................:::::::..............................::--==++*****************+++==--::::::::::------------------====++++***************************+++====---------------------------------------------------------------------------------------------------------------------------------------------------::::.+@%@%##%%@%%%%%%@%#%@%%%%%%%%%%%%%%%%%%%%%%@@%####################################################***++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#%%%%%%%%%%%%###%%%%%%%########################################################*********++*####++++++++*#*********+++++++++++++=========+++*++*+++*+++==============================================+**+++++++=------=++++==============++=:=++====------::::::::::::::::-==+++=-=-=-----------------====::::::::::::::------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::. .::::::::. .....................................:::::::----------------------------------------------------:::......................................................................................................................................................................................................................................................................................:::::.... .....................:::---==============================================================================================================================----------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::.........::::::...................................................::::::.........................::-=+****++=-::............................................................................................................................................::--=++++=--::.........................................................::::::::...............................................................................................................................................................................................................................................................::::::----:::::........................................................................................................................................................................................::::--=+***#############################*****************+++++++++++++++++******####***************************************************************************************************************************************************************************##########################################**************************************************************************************************************************************************************************************************************************************************************+================================================================================================================+*******************************************************++++++++++++++++++++++++++++++++++++++++++===========================================================================-==--==----------------------------------------------------------------------------------------------------------------------------------::::::::::::::::::
*****************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********###########################################################################################**************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++====---::::....................................................................................................................................................................................................................................................................................................................::::::::..............................:::--=++******************+++==--:::::::::------------------===++++***************************+++====---------------------------------------------------------------------------------------------------------------------------------------------------:-::::-%@@%###@%%@%%@%%%#%@%%%%%%%%##%%%%%%%%%%%%%@%####################################################****+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#%%%%%%%%%%%%###%%%%%%%#########################################################*********++*###*+++++++*#*********+++++++++++++==========+*++++++++++++=============================================+*++++++++=------=++++==============++=:-++=====-----::::::::::::::::--=+++==---------------------===-::::::::::::::------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: .::::::::. .......................................::::::::--------------------------------------------------::::......................................................................................................................................................................................................................................................................................:::::.... .....................:::---==============================================================================================================================----------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::.........::::::...................................................::::::........................::--=+*****+=-::............................................................................................................................................::--=++++=--::.........................................................:::::::::..............................................................................................................................................................................................................................................................:::::-----:::::.........................................................................................................................................................................................:::--=+****############################*******+++++++++++++++++++++++++++******###*****************************************************************************************************************************************************************************#########################################***************************************************************************************************************************************************************************************************************************************************************+===============================================================================================================**********************************************************+++++++++++++++++++++++++++++++++++++++++==============================================================================-==----------------------------------------------------------------------------------------------------------------------------------::::::::::::::::::
*****************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********##########################################################################################***************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++====---::::...................................................................................................................................................................................................................................................................................................................:::::::::..............................:::--=+++******************+++==--::::::::------------------===++++***************************+++===--------------------------------------------------------------------------------------------====----------------------------------------------------:-:::::*@%%###%@%%%%@%%%%%@%%%%%%%#=*#%%%%%%%%%%%%@%%####################################################****+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=+#%%%%%%%%%%%%###%%%%%%%%########################################################*********++*###*+++++++*#*********+++++++++++++===========+++++++++++++==========================================-==*++++++++++------=++++==============++=::=+=====-----:::::::::::::::::-==+++=-------------------=-====-:::::::::::::------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: .::::::::: .......................................::::::::--------------------------------------------------::::......................................................................................................................................................................................................................................................................................:::::.... .....................:::--===============================================================================================================================----------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::.........::::::..................................................::::::::.......................::-==+*****+=--:............................................................................................................................................::--=++++=--::.........................................................::::::::..............................................................................................................................................................................................................................................................::::::----::::::.........................................................................................................................................................................................:::--=+****###########################******+++++++++++++++++++++++++++++******###*****************************************************************************************************************************************************************************#########################################****************************************************************************************************************************************************************************************************************************************************************+=============================================================================================================+**********************************************************++++++++++++++++++++++++++++++++++++++++++=============================================================================-==----------------------------------------------------------------------------------------------------------------------------------::::::::::::::::::
*****************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********##########################################################################################***************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++====---::::..................................................................................................................................................................................................................................................................................................................::::::::::...............................:::-==++*******************+++==--::::::------------------====+++****************************++===---------------------------------------------------------------------------------------------=============---==---------------------------------------:::::.=@%%#####@%%%%%%%%%@%%%%%%*=:=##%%%%%%%%%%%%%%%####################################################****++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*+++++++++++++++++++++++++++++*#%%%%%%%%%%%%##%%%%%%%%########################################################*********++*###*+++++++*#*#*******+++++++++++++============+*+++++++++++=========================================-=++++++++++++------=++*+==============++=::=++=====-----::::::::::::::::--=+++==---------------------====::::::::::::::------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-. ::::::::: .........................................::::::::::-----------------------------------------------::::......................................................................................................................................................................................................................................................................................:::::.... .....................:::--===============================================================================================================================----------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::.........::::::.................................................:::::::::.......................::-=++*****+=--:.............................................................................................................................................::-=++++=--::.........................................................::::::::..............................................................................................................................................................................................................................................................:::::-----::::::.........................................................................................................................................................................................:::--=++***###########################*****++++++++++++++++++++++++++++++*****####*****************************************************************************************************************************************************************************#########################################*****************************************************************************************************************************************************************************************************************************************************************+===========================================================================================================+*************************************************************++++++++++++++++++++++++++++++++++++++++=============================================================================-==----------------------------------------------------------------------------------------------------------------------------------::::::::::::::::::
*****************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***********##########################################################################################***************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++====---::::..................................................................................................................................................................................................................................................................................................................::::::::::...............................:::--=+++*******************++==---:::::------------------===++++***************************+++===-------------------------------------------------------------------------------------------=========================----------------------------------::::.::%%%###*-%@@%%%%%%%%%%%%*=:-::-*##%%%%%%%%%%%@%%###################################################****+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**+++++++++++++++++++++++++++++*#%%%%%%%%%%%####%%%%%%%########################################################************###*+++++++*#*#*******+++++++++++++=============+++++++++++++==========================================++++++++++++=-----=++**===============+=::-=+=====-----:::::::::::::::::--=+++==--------------------=-==-:::::::::::::------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::. :::::::::. .........................................::::::::::::::::::::::::-------------------------------:::::.......................................................................................................................................................................................................................................................................................:::::.... .....................:::--===============================================================================================================================----------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::.........:::::..................................................:::---:::.......................::-=++*****+=--::............................................................................................................................................::-=++++=--::.........................................................::::::::.............................................................................................................................................................................................................................................................::::::----::::::...........................................................................................................................................................................................:::-=++***###########################*****+++++++++++++++++++++++++++++******#####****************************************************************************************************************************************************************************#########################################*************************************************************************************************************************************************************************************************************************************************************+****+=========================================================================================================+**************************************************************+++++++++++++++++++++++++++++++++++++++++============================================================================-==----------------------------------------------------------------------------------------------------------------------------------::::::::::::::::::
*****************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***********##########################################################################################***************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++====---::::.................................................................................................................................................................................................................................................................................................................:::::::::::...............................:::--==++********************++==---:::-------------------===+++****************************++===--------------------------------------------------------------------------------------------===========================-------------------------------::::::..+@%###+.*@%%%%@%%%%%%%#-..-:.:-*##%%%%%%%%%%@%%%###################################################****++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**++++++++++++++++++++++++++++++#%%@%%%%%%%%#####%%%%%%%#######################################################************####+++++++***#********+++++++++++++=============+*+++++++++++=========================================*+++++++++++=-----=++**===============+=:::=+======-----::::::::::::::::--==+++-=------------------=-==-=::::::::::::::------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: .::::::::. .........................................:::::::::::::::::::::::::::::::-----------------::::::::::::.......................................................................................................................................................................................................................................................................................:::::.... .....................:::--===============================================================================================================================----------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::.........:::::..................................................::-----::.......................::-=+******+=--::............................................................................................................................................::-=++++==-::.........................................................::::::::.............................................................................................................................................................................................................................................................::::::--::::::::...........................................................................................................................................................................................:::-=++***###########################*****++++++++++++++++++++++++++++******######****************************************************************************************************************************************************************************#########################################**************************************************************************************************************************************************************************************************************************************************************+**+*+=======================================================================================================+****************************************************************+++++++++++++++++++++++++++++++++++++++++===========================================================================-===----------------------------------------------------------------------------------------------------------------------------------:::::::::::::::::
*****************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********#########################################################################################****************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++====---:::::...............................................................................................................................................................................................................................................................................................................::::::::::::................................:::-==++********************+++==-----------------------====+++***************************+++==---------------------==---------------------------------------------------------------------================================---------------------------::::::..:@%###:.-@@%%%@%%%%%%%=...--:.:-*##%%%%%%%%%%@%%%%########################################%%%%%%%%%#***++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**++++++++++++++++++++++++++++++*#%@%%%%%%%%####%%%%%%%%#######################################################*************###+++++++*#**#*******+++++++++++++==============++++++++++++++====================================-=+*+++++++++++=-----=++**===============+=:::-++=====-----:::::::::::::::::--=+++=-------=-------------====-:::::::::::::------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: .::::::::: .........................................::::::::::::::::::::::::::::::::::::----------:::::::::::::.......................................................................................................................................................................................................................................................................................::::::.... .......................::---==============================================================================================================================-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::.........:::::.................................................:::-----:::......................::-=+******+=--::............................................................................................................................................::-==+++==-::..........................................................:::::::.............................................................................................................................................................................................................................................................:::::--::::::::............................................................................................................................................................................................:::-==+***###########################*****+++++++++++++++++++++++++++*******#####*****************************************************************************************************************************************************************************#########################################********************************************************************************************************************************************************************************************************************************************************************+====================================================================================================++*******************************************************************+++++++++++++++++++++++++++++++++++++++===============================================================================-=-------------------------------------------------------------------------------------------------------------------------------::::::::::::::::::
*****************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********#########################################################################################****************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++====---:::::...............................................................................................................................................................................................................................................................................................................:::::::::::.................................:::--==++********************+++==----------------------===+++****************************++===--------------------===----------------------------------------------------======----------========================================--------------------::::::...#%%##...#@@@%%@%%%%%*....:=:..:-+###%%%%%%%%%%%%%%#################################%%%%@@@@@@@@@@@#****+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*+++++++++++++++++++++++++++++++*#%@%%%%%%%%#####%%%%%%%#######################################################*************###*+++++++***********+++++++++++++===============+++*+++++++++======================================**++++++++++++-----=++**===============+=::::=+=====------::::::::::::::::-===+++=--=----=-------------====-::::::::::::-------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::. .::::::::: .........................................::::::::::...............:::::::::::::::::-:::::::::::::..........................................................................................................................................................................................................................................................................................::::::.... ........................::---==============================================================================================================================----------------------------------------------------------------------------------------------------------------------------------------------------------------------------::::.........:::::.................................................:::-----:::......................::-=+******+=--::............................................................................................................................................::-==+++==-::..........................................................::::::..............................................................................................................................................................................................................................................................:::::::::::::::............................................................................................................................................................................................:::--=+***###########################*****++++++++++++++++++++++++++********######****************************************************************************************************************************************************************************#########################################********************************************************************************************************************************************************************************************************************************************************************++=================================================================================================++**********************************************************************+++++++++++++++++++++++++++++++++++++++==============================================================================-=--------------------------------------------------------------------------------------------------------------------------------:::::::::::::::::
*****************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********#########################################################################################****************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===----:::::..........................................................................................................................................................................................................................................................................:::::................................::::::::::...................................:::--=+++********************+++==---------------------===+++***************************+++==---------------------===--------------------------------------------------================================================================--------------::::::...=@%%*...-%@%@@%%%%%+:.....--:.--:=###%%%%%%%%%@@@%%#############################%%@@@@@@@@@@@@@%%%#****+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*++++++++++++++++++++++++++++++++##%@%%%%%#%#####%%%%%%%%######################################################*************###*+++++++*#*********+++++++++++++================++++++++++++++====================================**++++=+++++++-----=++**+==============+=::::-++=====-----:::::::::::::::::-==++++=-=--=-=--------------====:::::::::::::-------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: ::::::::: .........................................::::::..........................:::::::::::::::::.................................................................................................................................................................................................................................................................................................::::::.... ........................::---==============================================================================================================================----------------------------------------------------------------------------------------------------------------------------------------------------------------------------::::.........:::::.................................................::---=---::......................:--=+******+=--::............................................................................................................................................::-==+++==-:::...........................................................:::..............................................................................................................................................................................................................................................................::::::::::::::::............................................................................................................................................................................................:::--=+***###########################*****+++++++++++++++++++++++++*******########****************************************************************************************************************************************************************************#########################################**********************************************************************************************************************************************************************************************************************************************************************+==============================================================================================++*************************************************************************++++++++++++++++++++++++++++++++++++++==============================================================================-=-=------------------------------------------------------------------------------------------------------------------------------:::::::::::::::::
*****************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********#########################################################################################***************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===----:::::.........................................................................................................................................................................................................................................................................:::::::...............................:::::::::....................................:::--==++*********************+++===------------------===+++****************************++===---------------------====--------------------------------------------------================================================================--------------:::::...:%%%+....#@%@%%%%@%-......:--:=-.:=*##%%%%%%%%%%@@%############################%%%%%%%@@@@@@@@@@%%#*****+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++##%@%%%%%#%#####%%%%%%%%#######################################################************###*+++++++*#*********++++++++++++++================*++++++++++++===================================+#*++++-=++++++=----=++**+==============+=:::::=+=====------::::::::::::::::-===+++=----==------------------=-::::::::::::-------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: ::::::::: ..............................................................................::::::::::...................................................................................................................................................................................................................................................................................................::::::.... ........................::---==============================================================================================================================----------------------------------------------------------------------------------------------------------------------------------------------------------------------------::::.........:::::.................................................::--===--::......................:--=+******+=--::............................................................................................................................................::--=++++=-:::............................................................................................................................................................................................................................................................................................................................::::::::::::::..............................................................................................................................................................................................:::--=++**###########################******+++++++++++++++++++++++**********####******************************************************************************************************************************************************************************########################################************************************************************************************************************************************************************************************************************************************************************************+==========================================================================================+++****************************************************************************+++++++++++++++++++++++++++++++++++++++============================================================================-=-=------------------------------------------------------------------------------------------------------------------------------:::::::::::::::::
*****************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********#########################################################################################***************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===----:::::.........................................................................................................................................................................................................................................................................:::::::..........:::.................::::::::::.....................................:::--==++*********************+++===-----------------===+++***************************+++==----------------------====---------------------------------------------------================================================================--------------::::....*%%=....-@@%%@%@%@+.......:==-....:+#%%%%%%%%%%%@@%########################%%@@@@@@@@@@@@@@@@@@@@%#****++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=*#%%%%%%%%%%#####%%%%%%%#######################################################************####+++++++*#**********+++++++++++++=============--=+*++++++++++++==================================***++++=-++++++=----=++**+==============+=:::::-+======-----:::::::::::::::::-==++++=--=---------------------=-::::::::::::-------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::. .::::::::. ..................................................................................::::.....................................................................................................................................................................................................................................................................................................::::::.... ........................::---==============================================================================================================================----------------------------------------------------------------------------------------------------------------------------------------------------------------------------::::.........:::::.................................................::--===--::......................:--=+******+=--::............................................................................................................................................::--=++++=-:::............................................................................................................................................................................................................................................................................................................................:::::::::::::................................................................................................................................................:::::...........................................:::-=++**###########################*******+++++++++++++++++++++************##*******************************************************************************************************************************************************************************########################################*************************************************************************************************************************************************************************************************************************************************************************++======================================================================================++*********************************************************************************+++++++++++++++++++++++++++++++++++++============================================================================-=-=------------------------------------------------------------------------------------------------------------------------------:::::::::::::::::
*****************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********#########################################################################################***************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===----:::::........................................................................................................................................................................................................................................................................::::::::.........::::.................::::::::::.....................................:::--==+++*********************+++===----------------===++****************************++===----------------------====----------------------------------------------------------==========================================================-------------::::....-@%=.....#@%@%@%%@#:.......:-:.....:-*%@%%%%%%%%%@%%###################%%@@@@@@@@@@@@@@@@%##%%%%%%#*****+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++##%@%%%%%%%#####%%%%%%%#######################################################************####+++++++*#**********+++++++++++++==============-=-++++++++++++++=================================***+++++-++++++=----=++**+==============+=::::::=+=====------::::::::::::::::---=++++=---------------------=-=-::::::::::::-------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::. .::::::::: ...........................................................................................................................................................................................................................................................................................................................................................................................::::::.... ........................::---==============================================================================================================================----------------------------------------------------------------------------------------------------------------------------------------------------------------------------::::.........:::::.................................................::--====-::......................:--=+******+=--::............................................................................................................................................::--=++++=--::............................................................................................................................................................................................................................................................................................................................::::::::::::...............................................................................................................................................:::::::::.........................................:::-=++***##########################*******+++++++++++++++++++++**********************************************************************************************************************************************************************************************######################################************************************************************************************************************************************************************************************************************************************************************************+**++===================================================================================++************************************************************************************+++++++++++++++++++++++++++++++++++++========================================================================-==--==-=----------------------------------------------------------------------------------------------------------------------------:::::::::::::::::
*****************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********#########################################################################################***************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===----:::::........................................................................................................................................................................................................................................................................:::::::::.......:::::.................:::::::::.......................................:::--==++**********************+++====-------------===+++***************************+++==-----------------------====-----------------------------------------------------------------====================================================-------------::::....%%=.....-%@%@%@%%%+.................:+%@%%%%%%%%%@%################%%@@@@@@@@@@@@@@@@@@#********###****+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#%@%%%%%%%######%%%%%%%######################################################*************###*++++++*#**********+++++++++++++===========-===-==+++++++++++++++==============================+***+++++-=+++++=----=++**+================-:::::-=======-----:::::::::::::::::---+++++=-=------------------=--=-:::::::::::--------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: .::::::::: ...................................................... ...................................................................................................................................................................................................................................................................................................................................::::::.... ........................::---==============================================================================================================================----------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::..........:::::.................................................::-=====--::....................::--=+******+=--::............................................................................................................................................::--=++++=--::.............................................................................................................................................................................................................................................................................................................................::::::::::...............................................................................................................................................::::::::::.........................................:::-==+****#####*###################********+++++++++++++++++++***********************************************************************************************************************************************************************************************######################################**************************************************************************************************************************************************************************************************************************************************************************++++================================================================================++****************************************************************************************+++++++++++++++++++++++++++++++++++========================================================================-==--==-=-----------------------------------------------------------------------------------------------------------------------------::::::::::::::::
*****************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********########################################################################################****************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===----:::::.......................................................................................................................................................................................................................................................................::::::::::.......:::::................::::::::::........................................:::--=+++*********************++++====------------===+++**************************+++===-----------------------====--------------------------------------------------------------------==================================================------------::::....+%-......*@@%@%@%@#...................*%%%%%%%%%%@%#############%%@@@@@@@@@@@@@@@@@@@%%%%#****#%%###***+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#%@%%%%%%%######%%%%%%%######################################################*************###*++++++*#*#********+++++++++++++============------=++++++++++++++++============================+**++++++--++++++----=++**+================-::::::=+=====-----:::::::::::::::::---=+++++--=-------------==----==--:::::::::::-------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::- ::::::::: .................................................. .......... .......................................................................................................................................................................................................................................................................................................................::::::.... ........................::---==============================================================================================================================----------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::..........:::::.................................................::-=====--::....................::--=+******+==-::............................................................................................................................................::--=++++=--::.............................................................................................................................................................................................................................................................................................................................:::::::::................................................................................................................................................:::::::::::........................................:::--=+*************################********+++++++++++++++++++***********************************************************************************************************************************************************************************************##################*##################******************************************************************************************************************************************************************************************************************************************************************************++=============================================================================++********************************************************************************************++++++++++++++++++++++++++++++++++=======================================================================-==--=--=------------------------------------------------------------------------------------------------------------------------------:::::::::::::::
+++**************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********########################################################################################****************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++====----::::........................................................................................................................................................................................................................................................................::::::::::......:::::::...............::::::::::........................................::::-==+++**********************+++====----------===+++***************************+++==------------------------====-----------------------------------------------------------------------================================================------------:::....:-.......-%@@%%%@@%=..................:%%%%%%%%%%%%##########%%@@%%@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%###**+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++##%@%%%%%%######%%%%%%%#######################################################************###*++++++*#**********+++++++++++++==========---------+++++++++++++++*+===========================***++++++=-++++++----=++**+=================:::::::=======-----:::::::::::::::::--=+++++=-=-===----=----------===-:::::::::::--------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::. :::::::::. .............................................. .................................................................................................................................................................................................................................................................................................................................::::::.... ........................::---==============================================================================================================================----------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::..........::::..................................................::-=====--::....................::-=++**#***+==-::...........:................................................................................................................................::--=++++=--::...............................................................................................................................................................................................................................................................................................................................:::::................................................................................................................................................:::::::::::::.........................................::--=++*************###############********++++++++++++++++++**************************************++*********************************************************************************************************************************************************#############********##############********************************************************************************************************************************************************************************************************************************************************************************++==========================================================================++**********************************************************************************************+++++++++++++++++++++++++++++++++++============================================================================-=------------------------------------------------------------------------------------------------------------------------------::::::::::::::::
+++**************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********########################################################################################****************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++====----::::........................................................................................................................................................................................................................................................................:::::::::.......:::::::...............::::::::::.........................................:::--==++***********************+++====--------====++****************************++===------------------------====------------------------------------------------------------------------=================================================----------::::............:+%@@%@%%@*...................*%%%%%%%%%%%%########%%%#%@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%###**+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++##%@%%%%%%######%%%%%%%#######################################################************###*+++++++***********++++++++++++++========----------=++++++++++++++**+=========================+***++++++=-=+++++----=++**+=================-::::::-+======----:::::::::::::::::---=+++++=-========----------=--==-:::::::::::--------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: .::::::::. ............................................. .................................................................................................................................................................................................................................................................................................................................::::::.... .........................::---==============================================================================================================================----------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::..........::::..................................................::-=====--::....................::-=++**##**+==-::.........::::................................................................................................................................::-=++++=--::...................................................................................................................................................................................................................................................................................................................................................................................................................................................................................::::::::::::::.........................................::--=++**************#############*********++++++++++++++++++*************************************************************************************************************************************************************************************************#############********##############*********************************************************************************************************************************************************************************************************************************************************************************++=======================================================================++*************************************************************************************************+++++++++++++++++++++++++++++++++++===========================================================================-=------------------------------------------------------------------------------------------------------------------------------::::::::::::::::
++++*************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********########################################################################################****************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++====----::::.......................................................................................................................................................................................................................................................................::::::::::.......:::::::...............::::::::::.........................................::::--=+++***********************+++====------====+++***************************+++==-------------------------====--------------------------------------------------------------------------================================================---------::::.............:+@@@%@%@%-..................-%%%%%%%%%%%%%#####*#%###%@@@@@@@@@@@@%%%%%%%%%%%%##%%%%%%###*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#%@@%%%%%######%%%%%%%#######################################################************####+++++++**#********++++++++++++++========-----------=+++++++++++++**+=========================+#*++++++++-=+++++----=++**+=================-:::::::=======-----:::::::::::::::::---+++++=-========---------==--==-:::::::::::--------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::- .::::::::: ......................................... ........ .. ....................................................................................................................................................................................................................................................................................................................::::::.... ..........................::--===============================================================================================================================----------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::..........::::..................................................::-======-::....................::-=++**##**+==-::........::::::...............................................................................................................................::-==+++==-::...................................................................................................................................................................................................................................................................................................................................................................................................................................................................................::::::::::::::.........................................:::-==+**************###########***********++++++++++++++++++**************************************************************************************************************************************************************************************************###########**********#############**********************************************************************************************************************************************************************************************************************************************************************************++===================================================================++******************************************************************************************************+++++++++++++++++++++++++++++++++++============================================================================-----------------------------------------------------------------------------------------------------------------------------::::::::::::::::
+++++************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********########################################################################################****************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++====----::::.......................................................................................................................................................................................................................................................................:::::::::........:::::::...............::::::::::..........................................:::--==++************************+++====----=====++***************************+++===-------------------------====-------------------------------------------------------------------------------=============================================-------::::...............#@%%@%%@+...................#%%%%%%%%%%@%#######%###@@@%@@@@@@@%%%%%%%%%%%%%#####%%%%###*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=*##@%%%%%%#######%%%%%%#######################################################*************###*++++++**#********++++++++++++++========----------=-=++++++++++++****+=======================***++++++++--+++++=---=++**+=================-:::::::-+======----:::::::::::::::::---=+++++=--========----------==-=-:::::::::::--------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-. ::::::::: ......................................... ....... ..................................................................................................................................................................................................................................................................................................................:::::..... ...........................::--===============================================================================================================================----------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::..........::::..................................................::-======-::....................::-=++**##**++=-::........::::::...............................................................................................................................::-==+++==-::...................................................................................................................................................................................................................................................................................................................................................................................................................................................................................::::::::::::::.........................................:::--=++**************#########************+++++++++++++++++****************************************************************************************************************************************************************************************************##########**********##########**************************************************************************************************************************************************************************************************************************************************************************************+++===============================================================++********************************************************************************************************+++++++++++++++++++++++++++++++++++============================================================================-----------------------------------------------------------------------------------------------------------------------------::::::::::::::::
+++++************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********#######################################################################################****************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++====----::::.......................................................................................................................................................................................................................................................................:::::::::.......:::::::::.............::::::::::................::::........................:::--==++************************+++===========+++***************************+++==--------------------------====------------------------------------------------------------------------------------=========================================------::::...............-@%@%%@@#:..................=%%%%%%%%%%%%%%%###%###%@@@@@@@@@@%#%%%%%%%%%%%#######%%%###*++=++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++##%@%%%%%#######%%%%%%#######################################################*****#*******###*++++++*##********++++++++++++++========----------==-=+++++++++++*****+======================***++++++++--+++++=---=++**+==================::::::::=======-----::::::::::::::::-=--=++++=--====-====--------===-=-:::::::::::--------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: ::::::::: ..................................... .. ....... .................................................................................................................................................................................................................................................................................................................:::::..... ...........................::--===============================================================================================================================----------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::...........:::..................................................::-==+===-::....................::-=+***##**++=-::........::::::...............................................................................................................................::-==+++==-::.................................................................................................................................................................................................................................................................................................................................................................................................................................................................................::::::::::::::::.........................................:::--=+++*************########*************++++++++++++++++++***************************************************************************************************************************************************************************************************#########************#########*************************************************************************************************************************************************************************************************************************************************************************************+*++==============================================================++**********************************************************************************************************++++++++++++++++++++++++++++++++++============================================================================-=---------------------------------------------------------------------------------------------------------------------------::::::::::::::::
++++++***********************************+++*********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++************######################################################################################****************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++====----:::::......................................................................................................................................................................................................................................................................::::::::........:::::::::::...........::::::::::...............:::::.........................:::--=++*****############********+++==========++***************************+++===--------------------------====-----------------------------------------------------------------------------------------===================================-------::::................*@@%@@%@=..................:%%%%%%%%%%%@%%%#######%@@%@@@@@@%##%%%%%%%%%%%########%%###*++=-==+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#%@%%%%%########%%%%%%######################################################*****#*******###*++++++*##********++++++++++++++========----------==--++++++++++********+===================+#**++++++++=-=++++=---=++**+==================::::::::-======-----::::::::::::::::-=--=+++++=-====-====--------=-==-=-::::::::::---------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::- :::::::::. ................................. ..... ................................................................................................................................................................................................................................................................................................................:::::..... ...............................:::--===============================================================================================================================----------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::...........:::..................................................::-==++==--::...................::-=+***##**++=-::........::::::...............................................................................................................................::--=++++=-::.................................................................................................................................................................................................................................................................................................................................................................................................................................................................................::::::::::::::::.........................................:::--==+++*************######*************++++++++++++++++++++*************************************************************************************************************************************************************************************************************************#*######************************************************************************************************************************************************************************************************************************************************************************************++*+++===========================================================+*************************************************************************************************************++++++++++++++++++++++++++++++++++===========================================================================-=---------------------------------------------------------------------------------------------------------------------------::::::::::::::::
++++++***********************************+++*********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++************######################################################################################****************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++====----:::::................................................................................................................................................................................................................................................................:.....:::::::.........::::::::::::::::::::::::::::::::..............::::::.........................:::--==++****##############*******++++=======+++**************##*##*******++++===--------------------------===----------------------------------------------------------------------------------------------===============================------::::.................:%@@%@@@*:..................*@%%%%%%%%%%%%#######%@@@@@@@@@%**#@%%%%%%%%%#########%%###*+=-::-=++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*##%@%%%%########%%%%%%######################################################*****#*******###*++++++*##********++++++++++++++========----------=----+++++++++*********+==================+#*+++++++++=-=++++=---=+++*+==================:::::::::-======-----:::::::::::::::--=-==++++============-----===--=-=-:::::::::::---------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-. .::::::::. .............................. ..... . ................................................................................................................................................................................................................................................................................................................:::::..... ...............................:::--===============================================================================================================================----------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::...........:::..................................................::-==++==--::...................::-=+***##**+==-::.......:::::::...............................................................................................................................::--=++++=--::...........................................................:::..................................................................................................................................................................................................................................................................................................................................................................................................................::::::::::::::::..........................................:::-==+++++++++*******#####**************+++++++++++++++++++++++++***********************************************************************************************************************************************************************************************************************####**********************************************************************************************************************************************************************************************************************************************************************************+***+***++==========================================================+****************************************************************************************************************++++++++++++++++++++++++++++++++==========================================================================-=----------------------------------------------------------------------------------------------------------------------------:::::::::::::::
++++++***********************************+++*********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++************######################################################################################****************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++====----:::::...............................................................................................................................................................................................................................................................::.::..::::::..........::::::::::::::::::::::::::::::::..............::::::..........................:::--==++****##############*******+++++====+++**********#***###*###******++++==---------------------------===--------------------------------------------------------------------------------------------------==========================------::::...................+@@@%@@#:..................-%@%%%%%%%%%%%#######%@@%@@@@@%***#@%%%%%%%%%##%######%%##**+=-:::=+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++##%@%%%%########%%%%%%######################################################*****#*******###*++++++**#********++++++++++++++========----------==---=++++++++***********+================+**+++++++++=--++++=---=+++*+==================::::::::::=+====-----::::::::::::::::-=-==+++++==--===-===-----=--=--===-::::::::::---------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: .::::::::: ............................. ..... .. ................................................................................................................................................................................................................................................................................................................:::::..... ...............................:::--===============================================================================================================================----------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::...........:::..................................................::-==++==--::...................::-=+***##**+==-::.......:::::::...............................................................................................................................::--=++++=--::.........................................................::::::.................................................................................................................................................................................................................................................................................................................................................................................................................:::::::::::::::...........................................:::-==++++++++++*******###***************++++++++++++++++++++++++++***********************************************************************************************************************************************************************************************************************###****************************************************************************************************************************************************************************************************************************************************************************************++*++=========================================================+****************************************************************************************************************+++++++++++++++++++++++++++++++++=======================================================================-=-==---------------------------------------------------------------------------------------------------------------------------:::::::::::::::
++++++*********************************++++++********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********########################################################################################****************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++====----:::::..............................................................................................................................................................................................................................................................:::.::..:::::..........:::::::::::::::::::::::::::::::::.............:::::::...........................:::--=++*****##############*******+++++++++++******##############******++++===---------------------------===------------------------------------------------------------------------------------------------------=====================------::::....................:#@@@%@*....................#@@%%%%%%%%%%%%#####@@@@@@@@@#***#@%%%##%%%%%%#######%###*++=::::-+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*##@%%%############%%%#######################################################****#********##**+++++*#*********+++++++++++++++=======----------==----++++++++*************+==============+*+++++++++++--++++=---+++++==================+::::::::::-=====------:::::::::::::::-=-=-=++++=-==-=-======---------===-:::::::::::---------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::- ::::::::: ............................ ... .................................................................................................................................................................................................................................................................................................................:::::..... ...............................::---==============================================================================================================================-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::...........:::.................................................:::-==+++=--::...................::-=+***#***+=--:........:::::::...............................................................................................................................::--=++++=--::........................................................::::::::................................................................................................................................................................................................................................................................................................................................................................................................................:::::::::::::::..........................................::::--==+++++++++*************************++++++++++++++++++++++++++++++++*********++++++++++****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************++++===========================================================******************************************************************************************************************+++++++++++++++++++++++++++++++++========================================================================-====-------------------------------------------------------------------------------------------------------------------------:::::::::::::::
++++++*********************************++++++********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++************######################################################################################****************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===-----:::::..............................................................................................................................................................................................................................................................:::.......::...........:::::::::::::::::::::::::::::::::.............:::::::...........................:::--==++****################*******++++++++*******##############*****+++++===---------------------------===-----------------------------------------------------------------------------------------------------------================-----:::::.....................-%@%@@*....................*@%%%%%%%%%%%%%%%%%%@@@@@@@@%****#%%###%%%%@@@%######%##**+=-:::::=++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*##%@%%%#%#########%%%#######################################################****#********###*+++++************++++++++++++++=======----------==-----+++++++**************+=============+*+++++++++++--=+++=---+++++==================+-::::::::::======-----:::::::::::::::---===+++++====-=======-------======-::::::::::---------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-. ::::::::: ............................ ... ................................................................................................................................................................................................................................................................................................................:::::..... ...............................::---==============================================================================================================================-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::...........::..................................................::--=++++=--::...................::-=+*******+=--:........:::::::...............................................................................................................................::--=++++=--::........................................................::::::::................................................................................................................................................................................................................................................................................................................................................................................................................::::::::::::::...........................................:::--==+++++++++++***********************++++++++++++++++++++++++++++++++++++++++++++++++++++**********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+***++===============================================================*******************************************************************************************************************++++++++++++++++++++++++++++++++=============================================================================-------------------------------------------------------------------------------------------------------------------------:::::::::::::::
++++++*********************************++++++********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++************#####################################################################################****************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===-----:::::..............................................................................................................................................................................................................................................................:::....................:::::::::::::::::::::::::::::::::.............::::::.............................:::--==++***#################********+++++******################****+++++====---------------------------===------------------------------------------------------------------------------------------------------------------========------:::........................*@@@@*....................=%@@%%%%%%%%%%%%%%%@@@@@@@@@*****#%%###%%##@@@%######%##**+=-:::::-=++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++##%@%%%%%#########%%%#######################################################****#********###*+++++************++++++++++++++=======----------==-----+++++++****************+===========+*+++++++++++--=++++---+++++==================+-:::::::::::=====------:::::::::::::::-=====++++=--=-========--===========::::::::::----------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-: :::::::::. ........................... ... ................................................................................................................................................................................................................................................................................................................:::::..... ...............................::---==============================================================================================================================-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::...............................................................::--=++++==-::...................::-=+*******+=-::........:::::::...............................................................................................................................:::-=++++=--::.......................................................::::---:::....................................................................................................................................................................................................................................................................................::::......................................................................................................................::::::::::::::..........................................:::::--==+++++++++++***********************++++++++++++++++++++++++++++++++++++++++++++++++++++************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+++================================================================********************************************************************************************************************++++++++++++++++++++++++++++++++=============================================================================------------------------------------------------------------------------------------------------------------------------:::::::::::::::
++++++********************************+++++++*******++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++************#####################################################################################****************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===-----:::::..............................................................................................................................................................................................................................................................:::...................::::::::::::::::::::::::::::::::::.............::::::.............................:::--==++****##################****************#################****++++=====---------------------------===---------------------------------------------------------------------------------------------------------------------====------::::........................:#@@@+....................:%@@%%%%%%%%%%%%%%@@@@@@@@@#******%%###%%##@@@@#####%%#**+==:::::::-++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++###@%%%%%##########%%#######################################################****#********###*++++++*##********++++++++++++++=======----------==-----=++++++******************+========-+++++++++++++---++++---+++++==================*-:::::::::::-======----::::::::::::::::-=-==+++++-=-===================-==-::::::::::---------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: .::::::::. ......................... .. ... ...........................................................................................................................................................................................................................................................................................................::::...... ................................::---==============================================================================================================================-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::...............................................................::--=++++==-::...................::-=++*****++=-::........::::::.................................................................................................................................::-==+++==-::.......................................................::------::..................................................................................................................................................................................................................................................................................:::::::.....................................................................................................................:::::::::::::..........................................::::::--==++++++++++++**********************++++++++++++++++++++++++++++++++++++++++++++++++++++**********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************++===================================================================********************************************************************************************************************+++++++++++++++++++++++++++++++++=============================================================================-----------------------------------------------------------------------------------------------------------------------:::::::::::::::
++++++********************************+++++++*******++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********#######################################################################################****************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===-----:::::.............................................................................................................................................................................................................................................................::::...................:::::::::::::-----:::::::::::::::::............::::::.............................::::--==++****##################**************#################****++++======---------------------------====------------------------------------------------------------------------------------------------------------------------------::::.........................=%@%-.....................*@@%%%%%%%%%%%%@@@@@@@@@@@*******#%##%%###@@@@#####%%#**+=-::::::--=+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*##%%%%#%##########%%#######################################################****#********####++++++*##********++++++++++++++=======----------==------++++++*********************+======+++++++++++++=--++++--=+++++==================*-::::::::::::-=====----::::::::::::::::-=-==+++++====-=====================-:::::::::----------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-. .::::::::: ......................... .. .. .....................................................................................................................:.....................................................................................................................................................................................:::...... ................................::---==============================================================================================================================-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::...............................................................::-==++++==-::...................::-=++*****+==-:.........::::::.................................................................................................................................::-==+++==-::......................................................:::--==---::.................................................................................................................................................................................................................................................................................::::::::....................................................................................................................::::::::::::......................................:.::::::::--==+++++++++++++********************++++++++++++++++++++++++++++++++++++++++++++++++++++++********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************++====================================================================+*******************************************************************************************************************+++++++++++++++++++++++++++++++++++============================================================================-----------------------------------------------------------------------------------------------------------------------:::::::::::::::
++++++********************************++++++++******++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********#######################################################################################*****************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===-----:::::.............................................................................................................................................................................................................................................................::::...................:::::::::::::-----::::::::::::::::::...........::::::..............................::::--==++***###################*************################****+++========-----------=---------------====------------------------------------------------------------------------------------------------------------------------------::::..........................+@#:.....................+@@@%%%%%%%%%%@@@@@@@@@@@@#******#%#%%####@@@@#####%%#**+=:::::::--=+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*##%@%%#%##########%%########################################################***##********###*+++++*##********+++++++++++++++======----------==------++++++*********************#*++++++++++++++++++=--=+++--=+++++=================+*-:::::::::::::-=====----::::::::::::::::===-=++++=-==-=====================-::::::::::---------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: .::::::::: ........................ .. .....................................................................................................................:.....................................................................................................................................................................................:::...... ................................::---==============================================================================================================================-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::...............................................................::-==++++==-::...................::--=+****++=-::.........::::::.................................................................................................................................::-==+++==-::......................................................::--====--:::................................................................................................................................................................................................................................................................................:::::::::...................................................................................................................:::::::::::..................................:::::::::::::---===++++++++++++++******************++++++++++++++++++++++++++++++++++++++++++++++++++++++*******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************++======================================================================+**********************************************************************************************************************+++++++++++++++++++++++++++++++++=============================================================================----------------------------------------------------------------------------------------------------------------------::::::::::::::
++++++********************************++++++++******++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********#######################################################################**##############*****************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++====-----:::::............................................................................................................................................................................................................................................................:::::..................::::::::::::::::::::::::::::::::::::::::.......:::::::..............................::::--==++****####################*********#################****+++=========----------====------------=====--------------------------------------------------------------------------------------------------::::------------------------:::::.........................:#*......................=%@@%%%%%%%%@@@@@@@@@@@@@@#******#%%%#####%@@%#####%#***=-::::::----=+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++###%%%%%##########%%########################################################****#********###*+++++*##********+++++++++++++++=====-----------==-----=++++++******************++**#####*+++++++++++++=--=+++--=+++++=================+*-::::::::::::::-=====---::::::::::::::::-==-=+++++==========================-:::::::::----------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: :::::::::. ........................ .. .....................................................................................................................:.....................................................................................................................................................................................:::...... .................................::---==============================================================================================================================-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::...............................................................::-==+++++=-::....................::-=+++*++==-::.........::::::.................................................................................................................................::-==++++=-::.....................................................:::-===+==-:::...............................................................................................................................................................................................................................................................................::::::::::....................................................................................................................:::::::::...........................:::::::::::::::::::----===++++++++++++++++*************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+++========================================================================+**********************************************************************************************************************++++++++++++++++++++++++++++++++++============================================================================----------------------------------------------------------------------------------------------------------------------::::::::::::::
++++++*******************************+++++++++******++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********########################################################################***#############*****************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++====-----:::::............................................................................................................................................................................................................................................................:::::..................:::::::::::::-::::::::::::::::::::::::::::::::::::::::.............................::::::--==++****######################*****##################****+++========-----------====------------=====--------------------------------------------------------------------------------------------------::::::::--------------------::::::.........................:=......................-#@@%%%%%%%@@@@@@@@@@@@@@%*******#%%%######%%#####%%#**+=:::::::----=+=+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*##%%%%%%##########%%#######################################################****#********###*+++++*##********+++++++++++++++=====-----------==------++++++*****************+++++***##*+++++++++++++=---+++--=+++++=================+*-::::::::::::::-======---::::::::::::::::-==-=++++=-=-======================-:::::::::----------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-. :::::::::. ........................ . ....................................................................................................................:.....................................................................................................................................................................................:::...... .................................::---==============================================================================================================================-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::...............................................................::-==+++++=--::...................::--=+++++=--:..........:::::..................................................................................................................................::--=++++=-::.....................................................::--==+++=--::...............................................................................................................................................................................................................................................................................::::::::::....................................................................................................................::::::::.......................:::::::::::::::::::::-----===+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************++===========================================================================************************************************************************************************************************++++++++++++++++++++++++++++++++++===========================================================================----------------------------------------------------------------------------------------------------------------------::::::::::::::
+++++++******************************+++++++++******++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******#########################################################################****#############*****************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++====-----:::::............................................................................................................................................................................................................................................................::::..................:::::::::::::::::::::::::::::::::::::::::::::::::::::::.............................::::::---==++***############################################****++==========----------=====------------=====-----------------------------------------------------------------------------------------------::::::::::::::-----------------:::::::................................................:*@%@%%%%%%@@@@@@@@@@@@@@@#*******%%%#############%%#**+-:::::::----=+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*###%%%#%###########%#######################################################****#********###*+++++*####******+++++++++++++++======----------==------++++++*****************+++++++**#*+++++++++++++=---+++--=+++++=================+*=:::::::::::::::-=====---::::::::::::::::--=-=+++++==========================-:::::::::----------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: .::::::::. ...................... ...................................................................................................................:::.....................................................................................................................................................................................:....... .................................::---==============================================================================================================================-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::...............................................................::-==+++++=--::....................::--==+==--::...........::::..................................................................................................................................::--=++++=--::....................................................::-==++++==-::...............................................................................................................................................................................................................................................................................:::::::::::....................................................................................................................:::::.......................::::::::::::::------------====++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************++=============================================================================***********************************************************************************************************************++++++++++++++++++++++++++++++++++++==========================================================================-----------------------------------------------------------------------------------------------------------------------:::::::::::::
+++++++******************************+++++++++******+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******#########################################################################****############******************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++====-----:::::............................................................................................................................................................................................................................................................::::.................::::::::::::::--::::::::::::::::::::::::::::::::::::::::::..........................::::::::--==+++****#########################################****+++=========-----------=====------------=====-----------------------------------------------------------------------------------------------::::::::::::::::---------------:::::::.................................................+%@@%%%%%%%@@@@@@@@@@@@@@#*******#%%#############%#***+-:::::::----===+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*###%%%%%#%#########%#######################################################***##********###*+++++*#*##*******++++++++++++++======----------==------++++++*****************++++++++***++++++++++++++---+++--=+++++=================+*=:::::::::::::::-======---::::::::::::::::-===+++++==========================-:::::::::-----------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: .::::::::: ...................... ...................................................................................................................:::............................................................................................................................................................................................. .................................::--===============================================================================================================================-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::...............................................................::-==+++++=--::....................:::--===--:::...........::::..................................................................................................................................::--=++++=--::...................................................:::-=+++++==-::...............................................................................................................................................................................................................................................................................:::::::::::.....................................................................................................................:::.......................:::::::::-------------=======++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************++====================================++++========================================************************************************************************************************************************+++++++++++++++++++++++++++++++++++===========================================================================---------------------------------------------------------------------------------------------------------------------::::::::::::::
+++++++******************************+++++++++******+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****##########################################################################*****############*****************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++====----::::::...........................................................................................................................................................................................................................................................:::::........:::...::::::::::::::::------:::::::::::::::::::::::::::::::::::::::::::....................:::::::::::--==++****########################################****+++=======-------------======-----------======-----------------------------------------------------------------------------------------------::::::::::::::::::::----------:::::::::................................................-%@@%%%%%%%%%%@@@@@@@@@@@@#****++#%%############%%#***=::::::::----===++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++###%%%%%#%#################################################################***##********####*++++*#**********++++++++++++++======----------==------++++++****************++++++++++++++++++++++++++---=++=-=+++++=================+*=::::::::::::::::-======--::::::::::::::::--===++++===========================::::::::::----------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::. .::::::::: ..................... ...................................................................................................................:::............................................................................................................................................................................................. .................................::--===============================================================================================================================-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::..............................................................::--==+++++==-::.....................:::-----:::.............::...................................................................................................................................::--=++++=--::...................................................::--=++**++=-:::.............................................................................................................................................................................................................................................................................:::::::::::::.............................................................................................................................................::::::--------==============+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+++=====================================+****+======================================+**************************************************************************************************************************++++++++++++++++++++++++++++++++++===========================================================================--------------------------------------------------------------------------------------------------------------------::::::::::::::
+++++++++***************************++++++++++******+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****##########################################################################*****###########******************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++====----::::::...........................................................................................................................................................................................................................................................:::::.......:::::::::::::::::::::::-------:::::::::::::::::::::::::::::::::::::::::::::::..............:::::::::::::--==++****######################################****+++=====----------------======-----------======-----------------------------------------------------------------------------------------------:::::::::::::::::::::--------:::::::::::................................................#@@@%%%%%%%%%%%@@@@@@@@@@@#**++=+#%%###########%%#**+-::::::::----===++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#*#%%%%#%##################################################################**##*********###*++++**##********+++++++++++++++=====----------==------=+++++****************++++++++++++++++++++++++++=--=++=-=+++++=================+*=::::::::::::::::-======--:::::::::::::::::-===+++++==========================-:::::::::-----------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-. ::::::::: ..................... ...................................................................................................................::::............................................................................................................................................................................................ .................................::--===============================================================================================================================-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::..............................................................::--==+++++==-::......................::::--:::...................................................................................................................................................:::-=++++==-::...................................................::-==+***++=--::.............................................................................................................................................................................................................................................................................:::::::::::::............................................................................................................................................::::-----============+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+++=====================================+******+======================================+**************************************************************************************************************************+++++++++++++++++++++++++++++++++++==========================================================================--------------------------------------------------------------------------------------------------------------------::::::::::::::
++++++++++**************************++++++++++*****++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****#########################################################################******###########******************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===-----::::::...........................................................................................................................................................................................................................................................:::::.......::::::::::::::::::::::--------::::::::::::::::::::::::::::::::::::::::::::::::::::.......:::::::::::::::---==++****####################################****+++=====----------------=======----------=======-----------------------------------------------------------------------------------------------:::::::::::::::::::::::----:::::::::::::................................................=%@@%%%%%%%%%%%%@@@@@@@@@@@%*+==+*%%%##########%#***+-::::::::----===++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#*#%%%%#%##################################################################**##*********###*+++++*###*******+++++++++++++++=====----------==------=+++++***************+++++++++++++++++++++++++++=---++=-++++++=================+*=:::::::::::::::::-======--::::::::::::::::-====++++===========================::::::::::-----------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: .::::::::. .................... ...................................................................................................................::::............................................................................................................................................................................................ ................................:::--===============================================================================================================================-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::..............................................................::--=++++++==-::.......................::::::::....................................................................................................................................................::-==+++==-::...................................................::-=++****+=--::.............................................................................................................................................................................................................................................................................:::::--::::::............................................................................................................................................:::----========++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+++=====================================++*******+======================================+**************************************************************************************************************************+++++++++++++++++++++++++++++++++++===========================================================================--------------------------------------------------------------------------------------------------------------------:::::::::::::
+++++++++++************************+++++++++++*****++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****##########################################################################******##########*******************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===-----::::::...........................................................................................................................................................................................................................................................:::::.......::::::::::::::::::::::---------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---=+++****##################################****+++=====----------------========----------=======-----------------------------------------------------------------------------------------------:::::::::::::::::::::::::-::::::::::::::................................................:%@@@%%%%%%%%%%%%%%@@@@@@@@@%*+==+*%%%########%%#***=:::::::::----===++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*####%%%%%%#################################################################**##*********###*+++++*###*******+++++++++++++++=====-----------=------=+++++**************++++++++++++++++++++++++++++=---++==++++++=================+*=:::::::::::::::::-======--:::::::::::::::::-===+++++==========================-:::::::::-----------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-. .::::::::. .................... ..................................................................................................................:::::............................................................................................................................................................................................ ................................:::--===============================================================================================================================-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::..............................................................::--=++++++==-::.........................:::::.....................................................................................................................................................::-==+++==-::..................................................::--=++****+=--::.............................................................................................................................................................................................................................................................................:::::---::::::..........................................................................................................................................:::---====++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************++=======================================+*********+======================================***************************************************************************************************************************++++++++++++++++++++++++++++++++++++==========================================================================----------------------------------------------------------------------------------------------------------------------:::::::::::
++++++++++++++********************++++++++++++*****+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****###########################################################################******##########******************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===-----::::::..........................................................................................................................................................................................................................................................:::::........::::::::::::::::::::::----------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--==++****#################################****+++=====----------------=========---------=======------------------------------------------------------------------------------------------------::::::::::::::::::::::::::::::::::::::::.................................................*@@@%%%%%%%%%%%%%%%%%%%@@@@@@#++=+*%%%#######%#***+-:::::::::----====++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#*#%%%%%##################################################################***#*********###*+++++*###*******+++++++++++++++=====-----------=-------++++***************++++++++++++++++++++++++++++=---+++=++++++=================+*=::::::::::::::::::-======--::::::::::::::::--===++++===========================-:::::::::-----------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::. .::::::::. .................... ...................................................................................................................::::::.......................................................................................................................................................................................... ................................::---===============================================================================================================================-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::..............................................................::-==++++++==-::.........................:::::.....................................................................................................................................................::-==++++=-:::.................................................::--=+*****+=--::.............................................................................................................................................................................................................................................................................:::::---::::::..........................................................................................................................................:::--===++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************++========================================+**********+======================================****************************************************************************************************************************++++++++++++++++++++++++++++++++++++=========================================================================----------------------------------------------------------------------------------------------------------------------:::::::::::
+++++++++++++++*******************++++++++++++*****+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****##########################################################################*******##########******************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===-----::::::..........................................................................................................................................................................................................................................................:::::.......:::::::::::::::::::::::------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---==++****################################***+++=====----------------===========-------========------------------------------------------------------------------------------------------------::::::::::::::::::::::::::::::::::::::::.................................................=@@%%%%%%%%%%%%%%%%%%%%%%@@@@@%++=+#%%%#####%%#***+-:::::::::----=====+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#*##%%%%#%################################################################***#*********####*++++*###*******+++++++++++++++======----------=-------++++**************++++++++++++++++++++++++++++++---=++=++++++=================+*=::::::::::::::::::--=====--:::::::::::::::::-===++++===========================-:::::::::-----------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: ::::::::: ................... ...................................................................................................................::::::.......................................................................................................................................................................................... .................... ...........::---==============================================================================================================================------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::..............................................................::-==++++++==-::..........................::::.....................................................................................................................................................::-==++++=-:::.................................................::--=+*****+=--::.............................................................................................................................................................................................................................................................................:::::::--:::::..........................................................................................................................................:::--==+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************++=======================================++************+======================================****************************************************************************************************************************++++++++++++++++++++++++++++++++++++==========================================================================---------------------------------------------------------------------------------------------------------------------:::::::::::
++++++++++++++++****************++++++++++++++*****+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****##########################################################################*******#########*******************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++====-----::::::..........................................................................................................................................................................................................................................................::::::......::::::::----::::::::::--------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---==++****##############################****+++====-------------================----==========---------------------------------------------------------------------------------------------------:::::::::::::::::::::::::::::::::::::.................................................:%@@%%%%%%%%%%%%%%%%%%%%%%%%@@@@#+=+#%@%####%#***+=::::::::::----====++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#**#%%%#%%#################################################################**##*********###*++++*###*******++++++++++++++++======--------==-------=+++*************+++++++++++++++++++++++++++++++---=+++++++++=================+*=:::::::::::::::::::-======--::::::::::::::::-===+++++===========================:::::::::------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: ::::::::: .................. ............ . .. .................................................................................................................::::::.......................................................................................................................................................................................... ..............................::---==============================================================================================================================------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::..............................................................::-==++++++==-::...........................::......................................................................................................................................................::-==++++=--::.................................................::-==+****++=-:::.............................................................................................................................................................................................................................................................................::::::---:::::..........................................................................................................................................:::--==+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************++========================================+**************+=====================================+*****************************************************************************************************************************++++++++++++++++++++++++++++++++++++==========================================================================-------------------------------------------------------------------------------------------------------------------::::::::::::
++++++++++++++++****************++++++++++++++*****+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****##########################################################################*******########********************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++====-----::::::..........................................................................................................................................................................................................................................................:::::.......:::::::-----::::::::::---------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--==+++***##############################****++=====------------===============================----------------------------------------------------------------------------------------------------::::::::::::::::::::::::::::::::::::..................................................#@@%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%*+*#%@###%%#***+-::::::::::----=====++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#*##%%%%%%#####################################################################*********###*++++*###********+++++++++++++++=======-------==-------=+++*************+++++++++++++++++++++++++++++++=--=+++++++++=================+*=::::::::::::::::::::-=====--:::::::::::::::::-===++++===========================-:::::::::-----------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::. :::::::::. .................. ................. .. .................................................................................................................::::::.......................................................................................................................................................................................... ..............................::---==============================================================================================================================------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::..............................................................::-==++++++==-::...........................::......................................................................................................................................................::-==++++=--::.................................................::-==++***++=-:::.............................................................................................................................................................................................................................................................................::::::---:::::..........................................................................................................................................:::--==+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************++========================================+****************+=====================================+******************************************************************************************************************************++++++++++++++++++++++++++++++++++++=========================================================================---------------------------------------------------------------------------------------------------------------------::::::::::
++++++++++++++++*************+++++++++++++++++*****+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****##########################################################################*******########********************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++====-----::::::..........................................................................................................................................................................................................................................................:::::.......::::::------::::::::::---------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--==++****#############################***+++====------------================================-----------------------------------------------------------------------------------------------------:::::::::::::::::::::::::::::::::::..................................................=@@@%%%%%%%%%%%%%%%%%%%%%%%%#%@%#####%%%#%%#***+=-::::::::::----=====++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**###%%%#%#####################################################################*********###*++++*###********+++++++++++++++========------==--------=++***********+++++++++++++++++++++++++++++++++=--=+++++++++=================+*=:::::::::::::::::::::-=====-:::::::::::::::::-===+++++==========================-:::::::::------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: .::::::::. .................. ................... . ......................................................................................................................::::::.......................................................................................................................................................................................... ..............................::---==============================================================================================================================-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------::::..............................................................::-==+++++++=--::..........................::......................................................................................................................................................::--=++++=--::.................................................::--=++**++==-::...............................................................................................................................................................................................................................................................................:::::---:::::..........................................................................................................................................:::--===++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************++========================================++*****************+=====================================+*******************************************************************************************************************************+++++++++++++++++++++++++++++++++++==========================================================================----------------------------------------------------------------------------------------------------------------------::::::::
++++++++++++++++**********++++++++++++++++++++*****+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****##########################################################################*******#######*********************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++====-----::::::..........................................................................................................................................................................................................................................................:::::......::::::-------::::::::::---------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--==++***#############################***+++====------------================================--------------------------===--------------------------------------------------------------------------:--------::::::::::::::::::::::::..................................................:%@%%%%%%%%%%%%%%%%%%%%%%%%%########%%@%%%#****+--::::::::::----=====++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#**#%%%#%#####################################################################*********####++++*###********+++++++++++++++========------==--------=++***********+++++++++++++++++++++++++++++++++=---+++++++++=================+*=:::::::::::::::::::::-=====--:::::::::::::::::-===++++===========================:::::::::-------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: .::::::::. .................. .................... ..........................................................................................................................::::::.......................................................................................................................................................................................... ..............................::---==============================================================================================================================-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------::::..............................................................::-==+++++++=--::..........................:.......................................................................................................................................................::--=++++=--::.................................................::--==++++==-:::...............................................................................................................................................................................................................................................................................:::::---:::::..........................................................................................................................................::::--====+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+=========================================++*******************+=====================================+*******************************************************************************************************************************+++++++++++++++++++++++++++++++++++===========================================================================-----------------------------------------------------------------------------------------------------------------------------
++++++++++++++++********++++++++++++++++++++++****++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****########################################################################********#######*********************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===------::::::.........................................................................................................................................................................................................................................................::::::......::::::-------::::::::::---------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--==++***############################***+++=====----------=================================------------------------======----------------------------------------------------------------------------------::--::::::::::::::::::::...................................................*@%%%%%%%%%%%%%%%%%%%%%%%%@%#######%%@%%%***++=--::::::::::----=====++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#**##%%%%%#####################################################################********####*+++*###********+++++++++++++++========-------=------=-=++**********++++++++++++++++++++++++++++++++++=---+++++++++=================+*=::::::::::::::::::::::-=====-::::::::::::::::::-==++++===========================-:::::::::------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::. .::::::::: .................. ...................... ...........................................................................................................................:::::.......................................................................................................................................................................................... .................................::---==============================================================================================================================-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------::::..............................................................::-==+++++++=--::..................................................................................................................................................................................:::-=++++==-::.................................................:::-===++==--:::...............................................................................................................................................................................................................................................................................:::::---:::::..........................................................................................................................................::::---========++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************++=========================================+*********************======================================*********************************************************************************************************************************+++++++++++++++++++++++++++++++++++===========================================================================----------------------------------------------------------------------------------------------------------------------------
++++++++++++++++++****++++++++++++++++++++++++****++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****#####################################################*****##############********######**********************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===------:::::...........................................................................................................................................................................................................................................................::::......::::::--------::::::::::---------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---=++***############################****++=====---------==================================------------------------======--------------------------------------------------------------------------------------::::::::::::::::::::...................................................=@@%%%%%%%%%%%%%%%%%%%%%%%%%#######%%%%%#**+=----::::::::::---====+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#*#*#%%%%%#####################################################################*********###*+++*###********+++++++++++++++========-------=------=--=+*********++++++++++++++++++++++++++++++++++++=--=++++++++=================+*-:::::::::::::::::::::::-====-::::::::::::::::::-===++++==========================-:::::::::-------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: ::::::::: ................. .........:::............ ...........................................................................................................................:::::.......................................................................................................................................................................................... ..................................::---=============================================================================================================================------------------------------------------------------------------------------------------------------------------------------------------------------------------------------::::.............................................................:::-==+++++++=--::..................................................................................................................................................................................:::-=++++==-::..................................................::---====--:::................................................................................................................................................................................................................................................................................::::::-::::::..........................................................................................................................................:::::------======+++++++=++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************++=========================================+***********************======================================*********************************************************************************************************************************++++++++++++++++++++++++++++++++++++==========================================================================------------------------------------------------------------------------------------------------------------==--------------
++++++++++++++++++**+++++++++++++++++++++++++++***++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****####################################################*******############*********######**********************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===------:::::...........................................................................................................................................................................................................................................................:::.......:::::---------::::::::::--------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--==++***############################***+++=====--------===================================---------------------==========-------------------------------------------------------------------------------------:::::::::::::::::::...................................................:%@@%%%%%%%%%%%%%%%%%%%%%%%%%###*#####%#**+=--:-:::::::::::---===++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**#*##%%%%#####################################################################*********###*+++*###********+++++++++++++++========-------=------==-=+********+++++++++++++++++++++++++++++++++++++=--=++++++++=================+*-:::::::::::::::::::::::--====-::::::::::::::::::-==++++===========================::::::::::-------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: .::::::::. ................. ......:::::::::......... ............................................................................................................... ........:::::.......................................................................................................................................................................................... ..................................::--==============================================================================================================================------------------------------------------------------------------------------------------------------------------------------------------------------------------------------::::.............................................................:::-=++++++++=--::..................................................................................................................................................................................:::-==+++==-::..................................................:::-------:::..................................................................................................................................................................................................................................................................................:::::-::::::...........................................................................................................................................::::::-------====++++========+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************++=========================================++************************=====================================+**********************************************************************************************************************************+++++++++++++++++++++++++++++++++++===========================================================================------------------------------------------------------------------------------------------------------=====================
+++++++++++++++++++*+++++++++++++++++++++++++++**+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******##################################################********############*********######**********************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===------:::::............................................................................................................................................................................................................................................................:.......::::::---------::::::::::-------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--==++**############################****+++====--------====================================-------------------===========-------------------------------------------------------------------------------------:::::::::::::::::::....................................................#@@%%%%%%%%%%%%%%%%%%%%%%%%@##**######**+=-----::::::::::---==++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****#%%%%######################################################################********###*++++###********+++++++++++++++========-------=------==--+********+++++++++++++++++++++++++++++++++++++=--=++++++++==================*-::::::::::::::::::::::::-====-::::::::::::::::::-==++++===========================-:::::::::-------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::. .::::::::. ................ ......:::::::::::........ ............................................................................................................. ......:::::.......................................................................................................................................................................................... ..................................::--==============================================================================================================================------------------------------------------------------------------------------------------------------------------------------------------------------------------------------::::.............................................................::--=++++++++=--::..................................................................................................................................................................................:::-==++++=-:::..................................................::::---::::...................................................................................................................................................................................................................................................................................::::::::::::............................................................................................................................................::::::::::----===+++=========++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+++=========================================+**************************=====================================+**********************************************************************************************************************************+++++++++++++++++++++++++++++++++++======================================================-====================--------------------------------------------------------------------------------------------------======================+++
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******##################################################*********##########**********#####***********************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++====------::::::..................................................................................................................................................................................................................................................................::::::----------:::::::::-------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::...::::::--=++***############################****+++====-------==============================================--------==============------------------------------------------------------------------------------------::::::::::::::::::....................................................+@@@%%%%%%%%%%%%%%%%%%%%%%%@%########**+-::---::::::::::--==++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#**##%%%%#####################################################################*********###**+++*###********+++++++++++++++===-===-------=------=+--+*******++++++++++++++++++++++++++++++++++++++=--=+++++++++++===============*-:::::::::::::::::::::::::-====-::::::::::::::::::-==++++==========================-::::::::::-------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: .::::::::. ................ ......:::::--::::::........ ........................................................................................................... ....::::........................................................................................................................................................................................... ....................................::--==============================================================================================================================------------------------------------------------------------------------------------------------------------------------------------------------------------------------------::::.............................................................::--=++++++++=--::...................................................................................................................................................................................::-==++++=-:::...................................................:::::::::....................................................................................................................................................................................................................................................................................:::::::::::..............................................................................................................................................:::::::::::--====++========++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+++==+======================================+****************************=====================================+***********************************************************************************************************************************+++++++++++++++++++++++++++++++++++=====================================================-====================----------------------------------------------------------------------------------------------==========+++++++++++++++++++
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******##################################################**********#####***************###************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++====------:::::...................................................................................................................................................................................................................................................................:::::-----------:::::::::-------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::....:::::--==++**#############################****++=====------=====================================================================-----------------------------------------------------------------------------------::::::::::::::::::....................................................-%@%%%%%%%%%%%%%%%%%%%%%%%%@%#######*+=-:--:-::::::::----==+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****##%%%######################################################################********####*+++*###********+++++++++++++++===-===-------=------=+=-=*******++++++++++++++++++++++++++++++++++++++=--=+++++*+++++===============*-:::::::::::::::::::::::::--===-::::::::::::::::::-==++++==========================-::::::::::-------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: .::::::::. ............... .....::::------::::......... .......................................................................................................... ....::::........................................................................................................................................................................................... ................ ................::--==============================================================================================================================------------------------------------------------------------------------------------------------------------------------------------------------------------------------------::::.............................................................::--=++++++++=--::...................................................................................................................................................................................::--=++++=--::....................................................::::::......................................................................................................................................................................................................................................................................................:::::::::::................................................................................................................................................:::::::::---===++========++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+++==+======================================++*****************************=====================================************************************************************************************************************************************++++++++++++++++++++++++++++++++++++==========================================================================-------------------------------------------------------------------------------------------=========++++++++++*++++++*****
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********#################################################**********************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++====------:::::..................................................................................................................................................................................................................................................................::::::-----------:::::::::------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.......::::--=++**##############################***+++====------=======================================================================--------------------------------------------------------------------------------:::::::::::::::::::.....................................................#@@%%%%%%%%%%%%%%%%%%%%%%%%@%#%##**+--::::--::::----=====+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****##%%%######################################################################*********###*+++*##*********+++++++++++++++===-===-------=------=+=-=******+++++++++++++++++++++++++++++++++++++++==-=++++**++++++==============+-::::::::::::::::::::::::::-===-:::::::::::::::::::-==++++==========================::::::::::--------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::. ::::::::: ............... .....::::--------::::........ .......................................................................................................... ....:::........................................................................................................................................................................................... .............. ..............::--==============================================================================================================================------------------------------------------------------------------------------------------------------------------------------------------------------------------------------::::.............................................................::--=++++++++=--::...................................................................................................................................................................................::--=++++=--::................................................................................................................................................................................................................................................................................................................................................:::::::::::..................................................................................................................................................:.::::::--==+++======++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************++++===++===================================++*******************************=====================================*************************************************************************************************************************************++++++++++++++++++++++++++++++++++++==========================================================================---------------------------------------------------------------------------------------========+++++++++*****************
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********###############################################***********************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++====------:::::..................................................................................................................................................................................................................................................................:::::-----------::::::::::-----------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.........:::--=++***##############################***+++====-----=========================================================================------------------------------------------------------------------------------:::::::::::::::::::.....................................................+@@%%%%%@%%%%%%%%%%%%%%%%%%@%%##*+--::--::::-----====+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*+++++++++++++++++++++++++++++++++++++++++++++++++++++++*****##%%%#####################################################################*********###*+++*##*#*******+++++++++++++++===-===--------------=++--******+++++++++++++++++++++++++++++++++++++++==-=+++***++++++=============++:::::::::::::::::::::::::::-====-::::::::::::::::::-==++++==========================:::::::::::-------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: ::::::::: .............. .....::::----------::::....... .......................................................................................................... ....:::........................................................................................................................................................................................... .............. ..............:---==============================================================================================================================------------------------------------------------------------------------------------------------------------------------------------------------------------------------------::::.............................................................::--=++++++++=--::...................................................................................................................................................................................::--=++++=--::.................................................................................................................................................................................................................................................................................................................................................::::::::::.....................................................................................................................................................:::::--==+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************++==+++===+================================++********************************+====================================+*************************************************************************************************************************************++++++++++++++++++++++++++++++++++++===========================================================================----------------------------------------------------------------------------------==========+++++++*********************
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********###############################################**********************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++====------:::::.................................................................................................................................................................................................................................................................:::::------------::::::::::----------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.........:::--==+***###############################***++====-----==========================================================================-----------------------------------------------------------------------------:::::::::::::::::::.....................................................-@@%%%%%@%%%%%%%%%%%%%%%%%%%%%#*=-::::::-----====++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#*++++++++++++++++++++++++++++++++++++++++++++++++++++++*#****#%%%######################################################################********###*+++*##*#*******+++++++++++++++===-===--------------=++=-+#***+++++++++++++++++++++++++++++++++++++++++=-=++****++++++=============++:::::::::::::::::::::::::::--===-:::::::::::::::::::-=++++==========================-::::::::::--------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::. .::::::::. .............. .....:::------------:::....... .......................................................................................................... ....:.............................................................................................................................................................................................. .............. ..............:---==============================================================================================================================------------------------------------------------------------------------------------------------------------------------------------------------------------------------------::::.............................................................::--=++++++++==-::...................................................................................................................................................................................::--=++++=--::.................................................................................................................................................................................................................................................................................................................................................::::::::::......................................................................................................................................................::::--==+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************++=++++++++=================================+**********************************+====================================+**************************************************************************************************************************************++++++++++++++++++++++++++++++++++++==========================================================================-------------------------------------------------------------------------------==========++++++++***************########
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********##############################################**********************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++====------:::::................................................................................................................................................................................................................................................................::::::------------::::::::::---------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.........::::-==++**###############################***+++====----===========================================================================---------------------------------------------------------------------------::::::::::::::::::::.....................................................:%@%%%%%@%%%%%%%%%%%%%%%%%%%%#*=:::-:----====++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**##%*+++++++++++++++++++++++++++++++++++++++++++++++++++++******##%%######################################################################********###**++*##*#********++++++++++++++===-===--------------=++=-+#***+++++++++++++++++++++++++++++++++++++++++=-=++***+++++++=============*+:::::::::::::::::::::::::::--====-::::::::::::::::::-==++++=========================-:::::::::::-------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::. .::::::::. ............. .....:::-------------:::....... ........................................................................................................... .................................................................................................................................................................................................... .............. .............::---==============================================================================================================================------------------------------------------------------------------------------------------------------------------------------------------------------------------------------::::.............................................................::--=++++++++==-::...................................................................................................................................................................................::--=++++=--::.................................................................................................................................................................................................................................................................................................................................................::::::::::.......................................................................................................................................................:::--==+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+++++++===++===============================++***********************************+====================================+**************************************************************************************************************************************++++++++++++++++++++++++++++++++++++===========================================================================---------------------------------------------------------------------------==========++++++++************##############
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++************############################################*********************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++====------:::::..............................................................................................................................................................................................................................................................:::::::------------:::::::::::--------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::...........:::--=++**################################***++====-----===========================================================================------------------------------------=====---------------------------------::::::::::::::::::::......................................................+@@%%%%@@%%%%%%%%%%%%%%%%%%#*+------====+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#####*++++++++++++++++++++++++++++++++++++++++++++++++++++++*****###%#######################################################################*******####*++*##*#********+++++++++++++++==-===--------------=++=-=#***+++++++++++++++++++++++++++++++++++++++++===++**++++++++=============*+::::::::::::::::::::::::::::--===-:::::::::::::::::::-=++++=========================-:::::::::::--------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::. .::::::::. .............. .....:::--------------::::...... ........................................................................................................... .................................................................................................................................................................................................... .............. .............::---=============================================================================================================================-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::..............................................................::--=++++++++==-::...................................................................................................................................................................................::--=++++=--::.................................................................................................................................................................................................................................................................................................................................................:::::::::.......................................................................................................................................................::::--==+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************++++++=+++++===+============================+*************************************+====================================+**************************************************************************************************************************************+++++++++++++++++++++++++++++++++++++===========================================================================--==-----------------------------------------------------------------===========++++++++++**************##############
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**************#########################################**********************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===-------:::::.............................................................................................................................................................................................................................................................:::::::-------------:::::::::::--------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::...........:::--=++**#################################**+++====----===========================================================================------------------------------------======--------------------------------::::::::::::::::::::......................................................-%@%%%%@@%%%%%%%%%%%%%%%%%#**+========++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#####*+++++++++++++++++++++++++++++++++++++++++++++++++++++++******##%%######################################################################********###*++*##*#********+++++++++++++++==-====-------------=+++--*#**+++++++++++++++++++++++++++++++++++++++++===++**++++++++=============*+::::::::::::::::::::::::::::---==-:::::::::::::::::::-==+++=========================-:::::::::::---------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::: .::::::::: .............. .....:::---------------:::....... ........................................................................................................... ................................................................................................................................................................................................... ............... ..............::---=============================================================================================================================-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::..............................................................::-==++++++++==-::...................................................................................................................................................................................:::-=++++=--::.................................................................................................................................................................................................................................................................................................................................................:::::::::........................................................................................................................................................:::--==+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+++++++++++================================+***************************************+====================================****************************************************************************************************************************************++++++++++++++++++++++++++++++++++++============================================================================-==-----------------------------------------------------------==============++++++++++*****************##############
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********************************####################************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++====-------:::::..........................................................................................::::..............................................................................................................................................................::::::::-------------::::::::::-------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::...........:::--=++**##################################**++====-----==========================================================================-----------------------------------========------------------------------:::::::::::::::::::::.......................................................#@@%%%@@@%%%%%%%%%%%%%%%****++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#####*++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#****###%#%####################################################################********###*++*##*#*********++++++++++++++==-===--------------=+++=-+#***+++++++++++++++++++++++++++++++++++++++++==++**+++++++=============+*+:::::::::::::::::::::::::::::--===-:::::::::::::::::::-=+++++=======================-::::::::::::---------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::. ::::::::: .............. .....:::----------------:::...... ............................................................................................................ ................................................................................................................................................................................................... . ........... ..............::---=============================================================================================================================-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::..............................................................::-==++++++++==-::...................................................................................................................................................................................:::-==+++==-::..................................................................................................................................................................................................................................................................................................................................................::::::::........................................................................................................................................................:::--==+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+++++++++++++==++========================++****************************************+===================================+****************************************************************************************************************************************+++++++++++++++++++++++++++++++++++++++===========================================================================------------------------------------------------=====================++++++++++++**********************##**********
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++====-------:::::........................................................................................::::::::...........................................................................................................................................................::::::::--------------::::::::::-------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::...........:::-==+***##################################***++===------==========================================================================----------------------------------=========----------------------------:::::::::::::::::::::........................................................=@@%%%%@@@%%%%%%%%%%%%%#****++++++++++++++++++++++++++++++++++++++++****++*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#####*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#****###%######################################################################********###**+*####*********++++++++++++++======--------------=+++=:=#***+++++++++++++++++++++++++++++++++++++++++==+**++++++++=============+*+:::::::::::::::::::::::::::::--===-:::::::::::::::::::-==+++========================-::::::::::::---------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::. :::::::::. ................ .....::::----------------:::...... ........................................................................................................... ................................................................................................................................................................................................... .......... ..............::---=============================================================================================================================-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::..............................................................::-==++++++++==-::....................................................................................................................................................................................::-==+++==-::..................................................................................................................................................................................................................................................................................................................................................::::::::........................................................................................................................................................:::--==+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+++++++++++++==========================++******************************************+===================================+****************************************************************************************************************************************+++++++++++++++++++++++++++++++++++++++============================================================================--==---------------=============================================++++++++++++**************************************
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***++++++++**************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++====-------:::::.......................................................................................::::::::::.........................................................................................................................................................::::::::---------------::::::::::------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::...........:::-==+***###################################**++====--------=======================================================================----------------------------------=========----------------------------:::::::::::::::::::::........................................................:%@@%%%@@@%%%%%%%%%%%%%#*****++++++++++++++++++++++++++++++++++************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#####*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#****##%#%######################################################################*******###**+**####*********+++++++++++++=-=====-------------=++++--#***+++++++++++++++++++++++++++++++++++++++++==+**+++++================+*=::::::::::::::::::::::::::::::--===-:::::::::::::::::::-==+++=======================-:::::::::::::---------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::. .::::::::. ............... ......:::-----------------::....... ........................................................................................................... ................................................................................................................................................................................................... ........ ...............::---=============================================================================================================================-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::..............................................................::-==++++++++==-::....................................................................................................................................................................................::-==++++=-::..................................................................................................................................................................................................................................................................................................................................................::::::::........................................................................................................................................................:::--==++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+++++++++++++++++++==================+*********************************************+===================================+*****************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++=====================================================================================================================================+++++++++++++********************************************
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++====-------:::::......................................................................................:::::--:::::........................................................................................................................................................::::::-----------------::::::::::------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::...........::--==+***###################################**+++===----------======================================================================---------------------------------==========--------------------------::::::::::::::::::::::.........................................................*@@%%%@@@@%%%%%%%%%%%%%#*****+++++++++++++++++++++++++++++++***************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*####**++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#*****###%######################################################################*******####*++*####*********+++++++++++++=-=====--------=----=++++=-****+++++++++++++++++++++++++++++++++++++++++==++*++++++===============**=::::::::::::::::::::::::::::::--===-:::::::::::::::::::-==++++======================-:::::::::::::----------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::: .::::::::. ......................:::-----------------:::....... ........................................................................................................... .................................................................................................................................................................................................. ...... ...............::---=============================================================================================================================-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::..............................................................::-==++++++++==-::....................................................................................................................................................................................::-==++++=--:...................................................................................................................................................................................................................................................................................................................................................:::::::........................................................................................................................................................:::--==++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+++++++++====================++***********************************************+===================================+******************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++============================================================================================================================+++++++++++++++**************************************************
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=====++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******************************+++************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++====-------:::::......................................................................................:::------:::........................................................................................................................................................:::::------------------::::::::::------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::..........:::--=++**####################################***++====-----------=====================================================================--------------------------------==========------------------------::::::::::::::::::::::::.........................................................-%@%%%%@@@%%%%%%%%%%%%%%#*****+++++++++++++++++++++++*******#*****++++*****++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*###***+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******###%%#%####################################################################******####*++*#####********+++++++++++++=-=====--------==---=++++=-****+++++++++++++++++++++++++++++++++++++++++==++*+++++++==============**=:::::::::::::::::::::::::::::::--==--:::::::::::::::::::-==+++======================-::::::::::::::---------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::. .::::::::. ....................::::-----------------:::....... ........................................................................................................... .................................................................................................................................................................................................. ..... ...............::---=============================================================================================================================-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::.............................................................:::-==++++++++==--:....................................................................................................................................................................................::-==++++=--:...................................................................................................................................................................................................................................................................................................................................................::::::.........................................................................................................................................................::::-==++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************++++++++++++==+++===+====+++**************************************************+===================================+*******************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++================================================================================================================+++++++++++++++++++++*******************************************************
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=========++++==========================================++++++++++++++++++++++++************************+++++***********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++====-------:::::.....................................................................................:::-------:::.......................................................................................................................................................::::::-----------------:::::::::::-----::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::..........:::-==++**#####################################**+++===-------------===---------============================================================---------------------------==========----------------------::::::::::::::::::::::::::..........................................................#@%%%%@@@%%%%%%%%%%%%%%%#*****+++++++++++++++++++++++********++++++++++***+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*##****++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******###%%%%####################################################################******####*++*#####********+++++++++++++=-=====--------==---=+++++-=#**+++++++++++++++++++++++++++++++++++++++++++++*+++++===============+**-::::::::::::::::::::::::::::::::-===-:::::::::::::::::::-===++======================-::::::::::::::----------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::. ::::::::: ...................:::------------------:::....... ........................................................................................................... .................................................................................................................................................................................................. . ...............::---=============================================================================================================================-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::.............................................................:::-==+++++++++=--:....................................................................................................................................................................................::--=++++=--:...................................................................................................................................................................................................................................................................................................................................................::::::.........................................................................................................................................................::::-==++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+++++++++==++=========+++******************************************************+==================================+*********************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++=======================================================================================================++++++++++++++++++++++**************************************************************
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++========================================================================++++++++++********************+++++++**********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++====------::::::....................................................................................:::---------:::......................................................................................................................................................:::::------------------:::::::::::-----:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.........:::-==+***#####################################***++====---------------------------==============================================================---------------------===========---------------------:::::::::::::::::::::::::::..........................................................+@%%%%%@@%%%%%%%%%%%%%%%%#*****+++++++++++++++++++++++++++++++++++++++++**++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*###***+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#*****##%%%%#####################################################################******###**+*#####*********++++++++++++=-=====--------==---=+++++-=***+++++++++++++++++++++++++++++++++++++++++++++*+++++=+=============+*+-::::::::::::::::::::::::::::::::--==-::::::::::::::::::::-===++=====================--:::::::::::::-----------------::::::::::::::::::::::::::::::::::::::::::::::::::::::: :::::::::. .................:::-------------------:::....... ........................................................................................................... .................................................................................................................................................................................................. ...............::---=============================================================================================================================-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::.............................................................:::-==+++++++++=--::...................................................................................................................................................................................::--=++++=--:....................................................................................................................................................................................................................................................................................................................................................::::..........................................................................................................................................................::::-==+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+++++++++++++++++++++**********************************************************+==================================+*********************************************************************************************************************************************+++++++++++++++++++++++++++++++++++++++===============================================================================================++++++++++++++++++++++*********************************************************************
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=============================================================================++++++******************++++++++**********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++====------::::::....................................................................................:::---===---:::.....................................................................................................................................................::::::------------------:::::::::::-----:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.........::--=++**#######################################**+++===-----------------------------================================================================-----------------===========--------------------::::::::::::::::::::::::::::..........................................................-@@%%%%@@@%%%%%%%%%%%%%%%%#*****+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*##****+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#*****##%%%%#####################################################################******###**+*#####*********++++++++++++=======--------==---=+++++--***+++++++++++++++++++++++++++++++++++++++++++++*+++++=+=============+*+::::::::::::::::::::::::::::::::-:-===-:::::::::::::::::::-===++=====================--::::::::::::::----------------::::::::::::::::::::::::::::::::::::::::::::::::::::::: :::::::::. ................:::-------------------:::........ ........................................................................................................... .................................................................................................................................................................................................. ...............::---=============================================================================================================================-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::.............................................................:::-==++++++++==--::....................................................................................................................................................................................:--=++++=--:....................................................................................................................................................................................................................................................................................................................................................::::..........................................................................................................................................................::::-==+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************++++++++++*********************************************************************+==================================+**********************************************************************************************************************************************+++++++++++++++++++++++++++++++++++++++=========================================================================================++++++++++++++++++++****************************************************************************
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++================================================================================+++++**************++++++++++**********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++====------::::::....................................................................................:::--=====--:::.....................................................................................................................................................:::::-------------------:::::::::::----:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.......:::--=++**#######################################**+++===-------------------------------======================------------===============================------------=============-----------------------::::::::::::::::::::::::............................................................%@%%%%%@%@%%%%%%%%%%%%%%%%#******++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*###***++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******#%%%%%####################################################################******###**+*###*#*********++++++++++++=======-------===---=++++*=-***++++++++++++++++++++++++++++++++++++++++++++***++++++++===========+*+:::::::::::::::::::::::::::::::::---==-:::::::::::::::::::--===+=====================--::::::::::::::----------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::. .::::::::. ............::::-------------------:::....... .......... ................................................................................................. .................................................................................................................................................................................................. ...............::---============================================================================================================================--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::.............................................................:::-==++++++++==--::....................................................................................................................................................................................:--=++++=--::.................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................::::-==+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+++++++************************************************************************===================================+*********************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++===================================================================================+++++++++++++++++++++*********************************************************************************
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=================================================================================+++++++********+++++++++++++**********+++++++++++*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===-------::::::...................................................................................:::---=====--:::.....................................................................................................................................................:::::-------------------:::::::::::----::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.....::::-==+**##############***#######################***++====-------------------------------===================---------------------================================--===============-----------------------::::::::::::::::::::::::............................................................+@%%%%%@@%%%%%%%%%%%%%%%%%%##****+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*###***+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******##%%%%#####################################################################*****###**+*#####*********++++++++++++========------===---=++++*=-+**++++++++++++++++++++++++++++++++++++++++++++***++++++++===========**+:::::::::::::::::::::::::::::::::::-==--:::::::::::::::::::-===+======================--::::::::::::::----------------::::::::::::::::::::::::::::::::::::::::::::::::::::::. .::::::::. ............:::--------------------::........ .. ........................................................................................................... . ................................................................................................................................................................................................. ...............::---============================================================================================================================--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::.............................................................:::-==++++++++==--::....................................................................................................................................................................................:--=++++=--::.................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................::::--=+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************++++**************************************************************************+==================================+**********************************************************************************************************************************************+++++++++++++++++++++++++++++++++++++++==============================================================================++++++++++++++++++++***************************************************************************************
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==================================================================================++++++++++++++++++++++++++**********++++++++++***++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===-------::::::...................................................................................:::--=====---:::.....................................................................................................................................................:::::-------------------:::::::::::----:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::..:::--=++**############*******#####################***+++===---------------------------------==============-----------------------------============================================------------------------:::::::::::::::::::::::............................................................-@%%%%%%@%@%%%%%%%%%%%%%%%%%##*****++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*###**+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******##%%%%%####################################################################*****####***#####*********++++++++++++========------===--=+++++*+:=**++++++++++++++++++++++++++++++++++++++++++++**+++++++++==========+**+:::::::::::::::::::::::::::::::::::--==-:::::::::::::::::::-====+=====================--::::::::::::::----------------::::::::::::::::::::::::::::::::::::::::::::::::::::::: .::::::::: ...........::::-------------------:::........................................................................................................................... ................................................................................................................................................................................................. ...............::--=============================================================================================================================--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::.............................................................::--==++++++++==--::....................................................................................................................................................................................::-==+++=--::.................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................::::--=++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*+*****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+==================================*************************************************************************************************************************************************+++++++++++++++++++++++++++++++++++++++========================================================================++++++++++++++++++++*******************************************************************************************
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++====================================================================================++++++++++++++++++++++++**********+++++++++****+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++====-------::::::...................................................................................::---=====---:::.....................................................................................................................................................::::-------------------::::::::::::----:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.::::--=++**############********#####################***++====----------------------------------===========---------------------------------=========================================------------------------:::::::::::::::::::::::.............................................................%%%%%%%@@@%%%%%%%%%%%%%%%%%%##****++*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*###**+*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******##%%%%%####################################################################*****####***#####**********+++++++++++==+=====------===--=+++++*+:=**++++++++++++++++++++++++++++++++++++++++++++**++++++++++=========+**=::::::::::::::::::::::::::::::::::::-==-::::::::::::::::::::-===+=====================--:::::::::::::::--------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::: ::::::::: ..........::::--------------------:::........................................................................................................................... ................................................................................................................................................................................................. ...............::--=============================================================================================================================--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::.............................................................::--=+++++++++==--::....................................................................................................................................................................................::-==+++=--::.................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................::::--=++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*+++***************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+==================================**************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++=====================================================================+++++++++++++++++++***********************************************************************************************
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===========++=====================================================-======================++++++++++++++++++*********+++++++++****+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++====-------::::::..................................................................................:::--======--:::.....................................................................................................................................................:::::-------------------::::::::::::----:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--==+**############**********####################***+++===---------------------:-------------=========--------------------------------------=====================================------------------------:::::::::::::::::::::::.............................................................%@%%%%%%@@@%%%%%%%%%%%%%%%@%####****+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#%##**++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******##%%%%#####################################################################****####***######*********++++++++++===+=====------===--=+++++**--**++++++++++++++++++++++++++++++++++++++++++++**+++++++++++========+**=:::::::::::::::::::::::::::::::::::::-=--:::::::::::::::::::-===+==========+===========-:::::::::::::::-------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::. :::::::::. .........:::---------------------:::........................................................................................................................... ................................................................................................................................................................................................. ...............::--=============================================================================================================================--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::.............................................................::--=+++++++++==--::....................................................................................................................................................................................::--=+++=--::.................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................::::--=+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+=================================+***************************************************************************************************************************************************+++++++++++++++++++++++++++++++++++++===================================================================++++++++++++++++++**************************************************************************************************
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==+++++++++++++=================================================================================++++++++*********+++++++++****+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++====-------::::::..................................................................................:::--======--:::.........................................................................................................................::..........................:::::-------------------::::::::::::----:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--=++**###########****++++****####################**+++===------------------:::::-------------=======------------------------------------------==================================------------------------:::::::::::::::::::::::.............................................................*@%%%%%%@@@%%%%%%%%%%%%%%%@%#####**+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#%##**+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******##%%%%#####################################################################****#####**######*********++++++++++==++=====------===--=++++++*--**++++++++++++++++++++++++++++++++++++++++++++**++++++++++++=======+**=:::::::::::::::::::::::::::::::::::::--=-::::::::::::::::::::==========================--::::::::::::::-------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::: .::::::::. ........::::--------------------:::............................................................................................................................ ................................................................................................................................................................................................. ...............::--=============================================================================================================================--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::.............................................................::--=+++++++++==--::....................................................................................................................................................................................::--=+++==-::.................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................::::--=++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+=================================+****************************************************************************************************************************************************+++++++++++++++++++++++++++++++++++++================================================================++++++++++++++++******************************************************************************************************
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===============++++++============================================================+++++********+++++++++****+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++====-------::::::..................................................................................::---=====---:::.......................................................................................................................:::::.........................:::::-------------------::::::::::::----:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-==+***###########***+++++++***###################**+++===-----------------::::::--------------=====-----------------------------------------------===============================-------------------------::::::::::::::::::::::............................................................-@%%%%%%%@@@%%%%%%%%%%%%%%@%######****+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#%##**++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********#%%%%#####################################################################****#####**######*********++++++++++==+======-----====--=++++++*=-+*++++++++++++++++++++++++++++++++++++++++++++**++++++++++++======+***-::::::::::::::::::::::::::::::::::::::-=--:::::::::::::::::::-==========================-:::::::::::::::-----------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: .::::::::. ........:::---------------------:::............................................................................................................................ ................................................................................................................................................................................................. ...............::--============================================================================================================================--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------::::.............................................................::--=+++++++++==--::....................................................................................................................................................................................::--=+++==-::.............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................::...................:::--=++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+=================================+****************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++=============================================================++++++++++++++++********************************************************************************************************
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=======+++++++++++============================================================+++********+++++++++****+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++====-------::::::.................................................................................:::---=====---:::.....................................................................................................................::::::::........................:::::-------------------::::::::::::----::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--=++**###########***+++==++++****##################**++===-----------------::::::-::-----------=====-------------------------------------------------==============================------------------------::::::::::::::::::::::............................................................:%%%%%%%%@@@%%%%%%%%%%%%%%@%%######****+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*%%##***+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#******#%%%%######################################################################***#####***#####*********++++++++++==+=+====-----===---+++++++*=:+*++++++++++++++++++++++++++++++++++++++++++++**+++++++++++++=====+***-::::::::::::::::::::::::::::::::::::::--=-:::::::::::::::::::-==========================-:::::::::::::::-----------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::..::::::::. .......::::---------------------:::............................................................................................................................. ................................................................................................................................................................................................. ...............:---============================================================================================================================-----------------------------------::::-----------------------------------------------------------------------------------------------------------------------------------------:::..............................................................::--=+++++++++==--::....................................................................................................................................................................................::--=+++==-::........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................:::::::::.................:::--=++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+=================================+*****************************************************************************************************************************************************+++++++++++++++++++++++++++++++++++++============================================================+++++++++++++++**********************************************************************************************************
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===========================================================+++*******+++++++++****+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++====-------:::::..................................................................................:::--======--:::......................................................................................................................::::::::.......................::::::-------------------:::::::::::-----::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--=+***##########***+++=====+++*****################**+++==----------------::::::::::------------====---------------------------------------------------=======----==================------------------------::::::::::::::::::::..............................................................%%%%%%%%@@%@%%%%%%%%%%%%%@%%##***###***++++++*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#%%%#***++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******##%%%%#####################################################################***######**#####**********++++++++===+++=====----===---=++++++#+:=*+++++++++++++++++++++++++++++++++++++++++++***++++++++++++++====+***-::::::::::::::::::::::::::::::::::::::--=-::::::::::::::::::::-=========================--:::::::::::::::---------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::. ::::::::: .......:::---------------------::::............................................................................................................................. .................................................................................................................................................................................................. ..............::---============================================================================================================================------------------------::::----:::::::::---------------------------------------------------------------------------------------------------------------------------------------:::..............................................................:::-==++++++++==--::....................................................................................................................................................................................::--=+++==-::.........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................:::::::::................:::--==++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+=================================******************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++===========================================================+++++++++++++************************************************************************************************************
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***++++++==========================================================+++*******+++++++++****+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++====-------:::::..................................................................................:::--======--:::.....................................................................................................................:::::::::.......................::::::--------------------:::::::::------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--==+**##########****++=======++++******#############**+++==----------------::::::::::------------===------------------------------------------------------===--------=================------------------------:::::::::::::::::::..............................................................%@%%%%%%%@%@%%%%%%%%%%%%%@%%##*++**###***********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#%%%##***++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******##%%%%#####################################################################***######**#####**********++++++++===+++=====----===---==+++++#+:=*+++++++++++++++++++++++++++++++++++++++++++***++++++++++++++====+**+-:::::::::::::::::::::::::::::::::::::::-=--:::::::::::::::::::-==========================-:::::::::::::::---------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: :::::::::. ......::::---------------------:::.............................................................................................................................. .................................................................................................................................................................................................. ..............::---============================================================================================================================-----------------------:::::::::::::::::::--------------------------------------------------------------------------------------------------------------------------------------:::..............................................................:::-==++++++++==--::....................................................................................................................................................................................::--=+++==-::........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................:::::::::::...............:::--==++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+================================+*******************************************************************************************************************************************************+++++++++++++++++++++++++++++++++++++==========================================================++++++++++++**************************************************************************************************************
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****+++++++========================================================+++*******+++++++++++*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===-------::::::.................................................................................:::---=====---::......................................................................................................................::::::::........................::::::--------------------:::::::--------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--=++**##########***++=========+++++******###########**+++==----------------:::::::::::-----------===------------------------------------------------------------------=================------------------------::::::::::::::::::..............................................................#@%%%%%%%%%%%%%%%%%%%%%%%%%%##*++++*####***********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*+#%%%##****++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********#%%%%%#####################################################################***#####**#####**********+++++++++=++++=====---====---==+++++#+:=*+++++++++++++++++++++++++++++++++++++++++++***++++++++++++++====+**+:::::::::::::::::::::::::::::::::::::::::-=-:::::::::::::::::::-==========================-::::::::::::::::--------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.:::::::::. ......::::---------------------:::.............................................................................................................................. ................................................................................................................................................................................................. ..............::---============================================================================================================================-----------------------::::::::::::::::::::-------------------------------------------------------------------------------------------------------------------------------------:::..............................................................:::-==+++++++++=--::....................................................................................................................................................................................::--=+++==-::........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................::::::::::::..............:::--==+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************================================+*********************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++=======================================================+++++++++++++***************************************************************************************************************
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******+++++++++++++++================================================+++*******++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===-------::::::.................................................................................:::--======--:::.....................................................................................................................:::::::::........................::::::-----------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--==+**##########***++============+++++++***###########**+===----------------:::::::::::------------=--------------------------------------------------------------------==================-----------------------:::::::::::::::::..............................................................*@%%%%%%%%@%@%%%%%%%%%%%%%@%##*+++++**####***********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#%%%##*****+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******#%%%%%#####################################################################***#####**######*********++++++++++++++=====---====--===+++++#+--**+++++++++++++++++++++++++++++++++++++++++****++++++++++++++===+***+:::::::::::::::::::::::::::::::::::::::::-=-:::::::::::::::::::--==========================-:::::::::::::::--------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::..::::::::. ......:::---------------------::::.............................................................................................................................. ................................................................................................................................................................................................. ..............::---===========================================================================================================================-----------------------::::::::::::::::::::::------------------------------------------------------------------------------------------------------------------------------------:::..............................................................:::-==+++++++++=--::.....................................................................................................................................................................................:--=+++==-::........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................:::::::::::...............:::--==++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************================================+**********************************************************************************************************************************************************+++++++++++++++++++++++++++++++++++======================================================+++++++++++++****************************************************************************************************************
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******+++++++++++++++++++++++++++++==================================+++*******++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===-------::::::.................................................................................:::--======--:::.....................................................................................................................:::::::::........................::::::-----------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--=++**########****+++====----=======+++++****#########**+===----------------::::::::::::---------------------------------------------------------------------------------=================------------------------::::::--::::::::..............................................................=@%%%%%%%%%%@%%%%%%%%%%%%%@%##*+++++++**####***********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#%#%%#******+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******##%%%%#####################################################################***#####**######*********+++++++++++++++====---====--===+++++*+--**+++++++++++++++++++++++++++++++++++++++++****+++++++++++++++==+***=::::::::::::::::::::::::::::::::::::::::::-=-:::::::::::::::::::-==========================-::::::::::::::::-------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.::::::::. .....::::---------------------::::.............................................................................................................................. ................................................................................................................................................................................................. ..............::---===========================================================================================================================-----------------------:::::::::::::::::::::::-----------------------------------------------------------------------------------------------------------------------------------:::..............................................................:::-==++++++++==-:::.....................................................................................................................................................................................:--=+++==-::........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................:::::::::::...............:::--==++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************================================+**********************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++====================================================+++++++++++++*****************************************************************************************************************
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****++++++++++++++++++++++++++++++++++=============================+++******+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===-------::::::.................................................................................:::--=====---:::.....................................................................................................................::::::::.........................::::::-----------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-==+**########***+++=====------========+++++***#######***+==-----------------::::::::::::---------------------------------------------------------------------------------=================--------------------------::----:::::::...............................................................-%%%%%%%%%%%%%%%%%%%%%%%%%@%##*+++++++++***###*********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#%%####******+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********#%%%%######################################################################**#####**######*********+++++++++++++++====---====--===+++++**--**+++++++++++++++++++++++++++++++++++++++++****+++++++++++++++==+***=::::::::::::::::::::::::::::::::::::::::::-=-:::::::::::::::::::-==========================-::::::::::::::::-------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.::::::::: .....:::----------------------:::............................................................................................................................... .................................................................................................................................................................................................. ..............::---===========================================================================================================================----------------------::::::::::::::::::::::::-----------------------------------------------------------------------------------------------------------------------------------:::..............................................................:::-==++++++++==-::......................................................................................................................................................................................::-=+++==-::.........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................::::::::::...............:::--==++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+===============================***********************************************************************************************************************************************************+++++++++++++++++++++++++++++++++++++==================================================++++++++++++++*****************************************************************************************************************
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*++++++++++++++++++++++++++++++++++++++++++=====================++++*******++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++====-------::::::.................................................................................::---=====--:::......................................................................................................................::::::::.........................::::::-----------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--==+**#######***+++=====---------=========++++****####***+==-----------------::::::::::::----------------------------------------------------------------------------------================--------------------------------:::::::...............................................................:%%%%%%%%%%%%@%%%%%%%%%%%%@%##*+++++++++++***###********+++++++++++++++++++++++++++++++++++++++++++++++++++++++*#%#%###******++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********#%%%%%#####################################################################***####**######*********+++++++++++++++====---====--===+++++**=-+*+++++++++++++++++++++++++++++++++++++++++****+++++++++++++++=+****-:::::::::::::::::::::::::::::::::::::::::::---::::::::::::::::::-===========================-::::::::::::::::------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.::::::::: ....::::---------------------::::............................................................................................................................... .................................................................................................................................................................................................. ..............::---==========================================================================================================================-----------------------::::::.........::::::::::----------------------------------------------------------------------------------------------------------------------------------:::..............................................................:::-==++++++++==-::......................................................................................................................................................................................::-==++==-::...........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................:::::::................:::--==++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+===============================************************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++=================================================++++++++++++++******************************************************************************************************************
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++======++++*******+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++====-------::::::................................................................................:::---=====--:::.....................................................................................................................:::::::::.........................::::::-----------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--=++**######***+++====-------------=========+++*********++==-----------------::::::::::::----------------------------------------------------------------------------------===============--------------------------------::::::::...............................................................:%%%%%%%%%%%%@%%%%%%%%%%%%@%###*++++++++++++**####*******+++++++++++++++++++++++++++++++++++++++++++++++++++++*#%%#####******++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********#%%%%%#####################################################################***#####*######*********+++++++++++++++====---====--===+++++**=-+*+++++++++++++++++++++++++++++++++++++++++****+++++++++++++++=+****-:::::::::::::::::::::::::::::::::::::::::::-=-::::::::::::::::::--==========================-::::::::::::::::------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: ....::::---------------------:::................................................................................................................................ .................................................................................................................................................................................................. ..............::---==========================================================================================================================-----------------------:::::...........:::::::::----------------------------------------------------------------------------------------------------------------------------------:::..............................................................:::-==++++++++==-::......................................................................................................................................................................................::-==++==-::.............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................::::.................:::--==++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+===============================****************************************************************************************************************************#########************************++++++++++++++++++++++++++++++++++++===============================================+++++++++++++++******************************************************************************************************************
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++====-------:::::.................................................................................:::--=====---:::.....................................................................................................................::::::::..........................:::::-------------------::::------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--=++***###****+++====----------------========++++*******++==-----------------::::::::::::----------------------------------------------------------------------------------===============-------------------------------::::::::.................................................................%@%%#%%%%%@@%@%%%%%%%%%%%%%###*++++++++++++++**####*****++++++++++++++++++++++++++++++++++++++++++++++++++++*#%######******++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******#%%%%%#%####################################################################**############*********++++++++++++++=====---====--===+++++**=-=*+++++++++++++++++++++++++++++++++++++++++#***+++++++++++++++=+****-::::::::::::::::::::::::::::::::::::::::::::=-:::::::::::::::::::-==========================-:::::::::::::::::-----::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::. .....:::---------------------::::................................................................................................................................ .................................................................................................................................................................................................. ..............::---==========================================================================================================================----------------------:::::.............:::::::::---------------------------------------------------------------------------------------------------------------------------------:::..............................................................:::-==++++++++==-::......................................................................................................................................................................................::-==++==-::..................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................:::--==++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+==============================+*******************************************************************************************************************#####################**********************+++++++++++++++++++++++++++++++++++++================================+===========++++++++++++++++******************************************************************************************************************
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++====-------:::::.................................................................................:::--=====---::......................................................................................................................::::::::..........................:::::-------------------::::::---------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--=++*********+++=====------------------========++++***+++==------------------::::::::::::----------------------------------------------------------------------------------==============-------------------------------:::::::::.................................................................#@%%##%%%%%@%%%%%%%%%%%%%%@#**++++++++++++++++***###****+++++++++++++++++++++++++++++++++++++++++++++++++++#%%#######*****+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********#%%%%######################################################################**############**********+++++++++++++=====---====--+==+++++**=-=*++++++++++++++++++++++++++++++++++++++++*#***+++++++++++++++=+***+-:::::::::::::::::::::::::::::::::::::::::::--=-::::::::::::::::::-===========================:::::::::::::::::-----::.:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::. .....:::---------------------::::................................................................................................................................ .................................................................................................................................................................................................. ..............::---==========================================================================================================================----------------------::::..............::::::::::--------------------------------------------------------------------------------------------------------------------------------:::...............................................................::-==++++++++==-::......................................................................................................................................................................................::-==++==-::..................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................:::--==+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+=============================+***************************************************************************************************************###########################***########**********++++++++++++++++++++++++++++++++++++================================+==========++++++++++++++++*******************************************************************************************************************
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++====-------:::::.................................................................................:::--====---:::......................................................................................................................::::::::..........................:::::-------------------::::::::::::-:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--==++******++++=====----------------------======++++++++===------------------::::::::::::----------------------------------------------------------------------------------=============-------------------------------::::::::::.................................................................+@%%##%%%%%@%%%%%%%%%%%%%%@%*+++++++++++++++++++**##****++++++++++++++++++++++++++++++++++++++++++++++++++*%##**#####*****+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********#%%%%%##############%%#####################################################*#############**********+++++++=++++++=====--====--+==+++++**=:=*++*+++++++++++++++++++++++++++++++++++++*#***+++++++++++++++++***+-::::::::::::::::::::::::::::::::::::::::::::-=-::::::::::::::::::-===========================-:::::::::::::::::-----:.:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::. ....::::---------------------:::................................................................................................................................. .................................................................................................................................................................................................. ..............::---==========================================================================================================================----------------------:::................:::::::::--------------------------------------------------------------------------------------------------------------------------------:::...............................................................::-==++++++++=--::..........................:...........................................................................................................................................................::-==++==-::..................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................:::--==+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+=============================+*************************************************************************************************#####################################################**********+++++++++++++++++++++++++++++++++++================================+=========+++++++++++++++++*******************************************************************************************************************
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===--------:::::.................................................................................:::---==---:::.......................................................................................................................:::::::............................::::------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---=++++*++++++=====------------------------=======+++++===------------------:::::::::::::----------------------------------------------------------------------------------============-----------:::::::::::::::::::::::::::::::.................................................................=@%%##%%%%%@%%%%%%%%%%%%%%@%#*+++++++++++++++++++**#****+++++++++++++++++++++++++++++++++++++++++++++++++*%##**##*###****+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******#%%%%%#############%%%%%##################################################################*********+++++++=++++++=====--====--+==+++++**=:=++**+++++++++++++++++++++++++++++++++++++*#***++++++++++++++++****+:::::::::::::::::::::::::::::::::::::::::::-::-=-::::::::::::::::::-==========================-:::::::::::::::::-----::.::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: ....::::--------------------::::................................................................................................................................. .................................................................................................................................................................................................. ..............::---==========================================================================================================================----------------------:::................::::::::::-------------------------------------------------------------------------------------------------------------------------------:::...............................................................::-==++++++++=--::.........................::...........................................................................................................................................................::--=++==-::..................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................:::--==++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************=============================**************************************************************************************##################################################################*********++++++++++++++++++++++++++++++++++++===============================+=========++++++++++++++++********************************************************************************************************************
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===-------:::::..................................................................................:::---=----:::.......................................................................................................................:::::::............................::::------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--===+++++++======--------------------------==============------------------:::::::::::::----------------------------------------------------------------------------------============----------:::::::::::::::::::::::::::::::::................................................................-%%%###%%%%%%%%%%%%%%%%%%%%%#*++++++++++++++++++++*****+++++++++++++++++++++++++++++++++++++++++++++++++*##***####*#****++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******##%%%%#############%%%%%%%%%##############################################################*********++++++++++++++=====--====--+==+++++**+:=**+*+++++++++++++++++++++++++++++++++++++*#***++++++++++++++++****+::::::::::::::::::::::::::::::::::::::::::::::-=-::::::::::::::::::-==========================-:::::::::::::::::-----::.:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::. .....::::--------------------:::.................................................................................................................................. .................................................................................................................................................................................................. ..............::---==========================================================================================================================----------------------:::.................:::::::::-------------------------------------------------------------------------------------------------------------------------------:::...............................................................::-==++++++++=--::..........................:...........................................................................................................................................................::--=++==-::..................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................:::--==++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+============================****************************************************************************#############################################################################*********++++++++++++++++++++++++++++++++++++==============================+========+++++++++++++++++********************************************************************************************************************
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===-------:::::...................................................................................:::------:::........................................................................................................................::::::.............................::::------------------::::::::::::::::::::::::::::::::::::::::::::::----::::::::::::::::::::::::::::::::::::::::::::::::::::::---==============----------------------------============------:------------::::::::::::::----------------------------------------------------------------------------------===========---------::::::::::::::::::::::::::::::::::................................................................:%%%###%%%%%@%%%%%%%%%%%%%%@%*+++++++++++++++++++++***++++++++++++++++++++++++++++++++++++++++++++++++*###++*######****+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********#%%%%#############%%%%%%%%%%#############################################################*********++++++++++++++=====-=====--+==+++++**+:-**+*+++++++++++++++++++++++++++++++++++++##***++++++++++++++++****=::::::::::::::::::::::::::::::::::::::::::::::---::::::::::::::::::-===========================-:::::::::::::::::-----::.::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::. ....::::--------------------::::.................................................................................................................................. ................................................................................................................................................................................................. ..............::---==========================================================================================================================----------------------:::..................::::::::-------------------------------------------------------------------------------------------------------------------------------:::...............................................................::-==++++++++=--::.......................................................................................................................................................................................:--=++==--:..................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................::::-==++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+===========================+**********************************************************************####################################################################################*********++++++++++++++++++++++++++++++++++++=============================+=======+++++++++++++++++*********************************************************************************************************************
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===-------:::::...................................................................................::::---:::::.......................................................................................................................:::::::.............................::::------------------:::::::::::::::::::::::::::::::::::::::::::::::------::::::::::::::::::::::::::::::::::::::::::::::::::::----============-----------------------------==========------::------------::::::::::::::----------------------------------------------------------------------------------===========--------:::::::::::::::::::::::::::::::::::................................................................:%@%###%%%%%%%%%%%%%%%%%%%%%%#*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*##*++#####*#****++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********#%%%%%###########%%%%%%%%%%%#############################################################*********++++++++++++++===========--+==+++++**+:-+***++++++++++++++++++++++++++++++++++++*##***+++++++++++++++*****=:::::::::::::::::::::::::::::::::::::::::::::::-=-::::::::::::::::::-==========================-:::::::::::::::::-----:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::. ....::::--------------------:::................................................................................................::................................. ................................................................................................................................................................................................. ..............::---=========================================================================================================================-----------------------:::...................::::::::------------------------------------------------------------------------------------------------------------------------------:::...............................................................::--=+++++++==-:::.......................................................................................................................................................................................::-==+==--::.................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................::::--=++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+==========================+****************************************************************##########################################################################################**********++++++++++++++++++++++++++++++++++++============================+======+++++++++++++++++**********************************************************************************************************************
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===-------:::::...................................................................................:::::::::::.......................................................................................................................::::::::.............................::::------------------::::::::::::::::::::::::::::::::::::::::::::::::-------:::::::::::::::::::::::::::::::::::::::::::::::::::-------=====--------------------------------=========------:::------------::::::::::::::----------------------------------------------------------------------------------==========---------:::::::::::::::::::::::::::::::::::................................................................:#@%###%%%%%%%%@%%%%%%%%%%%%@#**+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**#*+=+#%#####****+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********#%%%%%%##########%%%%%%%%%%%%##%#########################################################*********++++++++++++++===========--+==+++++**+--+****+++++++++++++++++++++++++++++++++++*##***+++++++++++++++*****=:::::::::::::::::::::::::::::::::::::::::::::-:-=-::::::::::::::::::-=======================+==-::::::::::::::::::-----::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: ....::::--------------------:::................................................................................................:::................................ ................................................................................................................................................................................................. ..............::---=========================================================================================================================-----------------------:::...................::::::::------------------------------------------------------------------------------------------------------------------------------:::...............................................................::--=+++++++==-::........................................................................................................................................................................................::-==+==--::.................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................::::--=+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+=========================+************************************************************###############################################################################################**********+++++++++++++++++++++++++++++++++++============================++====++++++++++++++++++**********************************************************************************************************************
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===-------:::::....................................................................................:::::::::.....................................................................................:.................................:::::::::.............................::::------------------::::::::::::::::::::::::::::::::::::::::::::::::::-----------:::::::::::::::::::::::::::::::::::::::::::::::-------------------------------------------======--------:::------------::::::::::::::----------------------------------------------------------------------------------==========---------:::::::::::::::::::::::::::::::::::.................................................................*@%###%%%%%%@%%%%%%%%%%%%%%@%**+*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*##*+=+#%######****++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******#%%%%%%%##########%%%%%%%%%%%%%##########################################################**********+++++++++++++==========---+==+++++**+--+*+*+**++++++++++++++++++++++++++++++++**##***+++++++++++++=+*****-:::::::::::::::::::::::::::::::::::::::::::::::--=-:::::::::::::::::-======================+====::::::::::::::::::------:.:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: ....:::--------------------:::................................................................................................::::................................ ......................................................................................................................................................................................::.......... ...............::---=========================================================================================================================-----------------------:::....................:::::::------------------------------------------------------------------------------------------------------------------------------:::...............................................................::--==++++++==-::........................................................................................................................................................................................::-==+==--::..................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................:::--=+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+========================+*****************************************************######################################################################################################***********+++++++++++++++++++++++++++++++++++============================+====+++++++++++++++++++*********************************************************************************************************************
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===------::::::.....................................................................................:::::::.....................................................................................::................................:::::::::..............................::::------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::----------::::::::::::::::::::::::::::::::::::::::::::::-------------------------------------------=====--------:::------------::::::::::::::----------------------------------------------------------------------------------==========---------:::::::::::::::::::::::::::::::::::.................................................................+%%###%%%%%%%%%%%%%%%%%%%%%%%#**++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*##*+=+*%######****+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********#%%%%%%#########%%%%%%%%%%%%%%##########################################################**********++++++++++++++=========---+==+++++**+--+******++++++++++++++++++++++++++++++++**##***+++++++++++++++*****-::::::::::::::::::::::::::::::::::::::::::::::::-=-::::::::::::::::::-=======================+==-::::::::::::::::::-----::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::. ....::::--------------------:::...............................................................................................:::::................................ ......................................................................................................................................................................................::.......... ..... ...............::---========================================================================================================================------------------------:::.....................::::::------------------------------------------------------------------------------------------------------------------------------:::...............................................................::--==++++++==-::........................................................................................................................................................................................::-==++=--::..................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................:::--=+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+=======================*************************************************###########################################################################################################***********+++++++++++++++++++++++++++++++++++============================+===++++++++++++++++++++*********************************************************************************************************************
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===------:::::................................................................................................................................................................................::::................................:::::::::..............................::::------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::------------:::::::::::::::::::::::::::::::::::::::::::------------------------------------------=====-------::::------------:::::::::::::---------==------------------------------------------------------------------------==========---------:::::::::::::::::::::::::::::::::::.................................................................=%%###%%%%%%%%%%%%%%%%%%%%%%@%**+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*%#*+=+#%######****++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********#%%%%%%%########%%%%%%%%%%%%%%%%########################################################**********++++++++++++++=======-=--=+==+++++*#+--+******++++++++++++++++++++++++++++++++**##***++++++++++++++*****+-::::::::::::::::::::::::::::::::::::::::::::::::----:::::::::::::::::-=======================+==-:::::::::::::::::::-----:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::. ....::::-------------------::::...............................................................................................:::::................................ .....................................................................................................................................................................................:::.......... . ......... ...............::---=======================================================================================================================-------------------------::::..........::.........:::::------------------------------------------------------------------------------------------------------------------------------:::...............................................................::--==++++++==-::........................................................................................................................................................................................::-==++=--::..................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................:::--=+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+======================********************************************#################################################################################################################************++++++++++++++++++++++++++++++++++===========================+==++++++++++++++++++++++********************************************************************************************************************
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++====------:::::...............................................................................................................................................................................:::::...............................::::::::::..............................::::------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::--------------:::::::::::::::::::::::::::::::::::::::::-----------------------------------------=====-------::::------------::::::::::::----------===----------------------------------------------------------------------===========---------:::::::::::::::::::::::::::::::::::.................................................................-%%####%%%%%%%%%%%%%%%%%%%%%%%#*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#%#*+=+#%######****++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******#%%%%%%%%#######%%%%%%%%%%%%%%%%%########################################################*********++++++++++++++=======----=+==+++++*#*--+******+++++++++++++++++++++++++++++++***##***++++++++++++++*****+-::::::::::::::::::::::::::::::::::::::::::::::::--=-::::::::::::::::::==========+===========++==-:::::::::::::::::::------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::. ....::::-------------------::::...............................................................................................:::::................................ .....................................................................................................................................................................................::::......... ............. ...............::---=======================================================================================================================--------------------------:::.........:::.........:::::------------------------------------------------------------------------------------------------------------------------------:::...............................................................::--==++++++=--::........................................................................................................................................................................................::-==++==-::..................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................:::--==+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************++===================+**************************************#######################################################################################################################*************++++++++++++++++++++++++++++++++++=========================++=+++++++++++++++++++++++********************************************************************************************************************
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===-------:::::...............................................................................................................................................................................:::::...............................:::::::::...............................::::------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::---------------:::::::::::::::::::::::::::::::::::::::----------------------------------------=====--------::::------------::::::::::::---------====----------------------------------------------------------------------===========---------:::::::::::::::::::::::::::::::::::.................................................................:%%%###%%%%%%%%%%%%%%%%%%%%%%%%**+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#%#*+=+#%######****+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******#%%%%%%%%######%%%%%%%%%%%%%%%%%%########################################################*********++++++++++++++=======----=+==+++++*#*--+*******++++++++++++++++++++++++++++++**##****++++++++++++++*****+-:::::::::::::::::::::::::::::::::::::::::::::::::-=--:::::::::::::::::-=========+=======+++=+====::::::::::::::::::::-----::.:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: ....::::------------------::::................................................................................................::::::............................... .....................................................:...............................................................................................................................::::......... . .............. ...............::---======================================================================================================================---------------------------:::::.....::::::........::::::----------------------------------------------------------------------------------------------------------------------------:::................................................................:::-==+++++==--::........................................................................................................................................................................................::-==++==-::..................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................:::--==+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************++=================+********************************#############################################################################################################################**************+++++++++++++++++++++++++++++++++=========================++++++++++++++++++++++++++********************************************************************************************************************
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===------::::::..............................................................................................................................................................................::::::..............................::::::::::...............................:::-------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::-----------------:::::::::::::::::::::::::::::::::::::-----------------------------------------===---------:::-------------:::::::::::---------=====----------------------------------------------------------------------==========----------:::::::::::::::::::::::::::::::::::.................................................................:#%%###%%%%%%%%%%%%%%%%%%%%%%%%%*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#%#*==+#########****+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********#%%%%%%%#####%%%%%%%%%%%%%%%%%%%%########################################################********++++++++++++++=======-==-=+==+++++*#*--+********++++++++++++++++++++++++++++***#*****++++++++++++++*****+=:::::::::::::::::::::::::::::::::::::::::::::::::----:::::::::::::::::-===============+++++=+====-:::::::::::::::::::------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::. ...:::::------------------::::................................................................................................::::::............................... .....................................................:...............................................................................................................................::::......... ................. ...............::---=====================================================================================================================----------------------------::::::::::::::::........::::::----------------------------------------------------------------------------------------------------------------------------:::.................................................................::-==+++++==-::.........................................................................................................................................................................................::-==++==-::..................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................:::--==++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+=================+****************************##################################################################################################################################**************+++++++++++++++++++++++++++++++++========================+++++++++++++++++++++++++++*******************************************************************************************************************
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===------::::::..............................................................................................................................................................................::::::..............................::::::::::..............................::::------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-----------------::::::::::::::::::::::::::::::::::::------------------------------------------=----------:::-------------::::::::::---------======----------------------------------------------------------------------==========----------:::::::::::::::::::::::::::::::::::..................................................................*%%*###%%%%%%%%%%%%%%%%%%%%%%%%#*++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#%#*+=+####*####****+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******#%%%%%%%%####%%%%%%%%%%%%%%%%%%%%%#######################################################*********+++++++++++++=======-====+==+++++*#*--=*********+++++++++++++++++++++++++++*********+++++++++++++******+=::::::::::::::::::::::::::::::::::::::::::::::::::----:::::::::::::::::-==============+++++=+=+==-::::::::::::::::::::------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::. ....:::::-----------------::::.................................................................................................::::::............................... .....................................................:..............................................................................................................................::::::........ .................. ...............::---====================================================================================================================------------------------------::::::::::::::::.......::::::----------------------------------------------------------------------------------------------------------------------------:::.................................................................::-==+++++==-::.........................................................................................................................................................................................::-==++==-::..................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................:::--==+++++++++++++++++++++++++++++++++++++++++**********+++++++++++++++++++++++++++++++++++++++++++++++++++++**************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+================+************************######################################################################################################################################***************++++++++++++++++++++++++++++++++++======================++++++++++++++++++++++++++++******************************************************************************************************************
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===------::::::..............................................................................................................................................................................::::::..............................:::::::::...............................::::------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::----------------::::::::::::::::::::::::::::::::::::-----------------------------------------------------:::-------------:::::::::----------======----------------------------------------------------------------------==========-----------::::::::::::::::::::::::::::::::::..................................................................+%%*###%%%%%%%%%%%%%%%%%%%%%%%%%#*+++++++++++++++++++++++++++++++++++++++++++++++++++++++#%##+=+#######*#****++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******#%%%%%%%%####%%%%%%%%%%%%%%%%%%%%%%######################################################*********+++++++++++++=======-====+==+++++*#*--=*********+++++++++++++++++++++++++++*********+++++++++++++******+=----::::::::::::::::::::::::::::::::::::::::::::::----:::::::::::::::::-==============+++++=+++==-::::::::::::::::::::------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::. ....:::::-----------------::::.................................................................................................::::::............................... .....................................................:..............................................................................................................................::::::........ .................. ...............::---====================================================================================================================--------------------------------::::::::::::::.......::::::----------------------------------------------------------------------------------------------------------------------------:::.................................................................::-==+++++=--::.........................................................................................................................................................................................::-==++==-::..................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................:::--==++++++++++++++++++++++++++++++++++++++**************++++++++++++++++++++++++++++++++++++++++++++++++++++**************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+================********************###########################################################################################################################################***************++++++++++++++++++++++++++++++++++======================++++++++++++++++++++++++++++******************************************************************************************************************
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===------:::::..............................................................................................................................................................................::::::..............................::::::::::...............................::::------------------:::::::::::----:::::::::::::::::::::::::::::::::::::::::::::----------------::::::::::::::::::::::::::::::::::::-----------------------------------------------------:::--------------:::::::----------========---------------------------------------------------------------------==========-----------::::::::::::::::::::::::::::::::::..................................................................=%%####%%%%%%%%%%%%%%%%%%%%%%%%%%**+++++++++++++++++++++++++++++++++++++++++++++++++++++#%%#*=+##%##**##****+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********%%%%%%%%#####%%%%%%%%%%%%%%%%%%%%%%%####################################################*********+++++++++++++=======-===++==+++++*#*--=*********+++++++++++++++++++++++++++*********+++++++++++++******++------::::::::::::::::::::::::::::::::::::::::::::--=--:::::::::::::::::========+=+++++++++=++=+==-::::::::::::::::::::------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: ....:::::-----------------:::..................................................................................................::::::............................... .....................................................:..............................................................................................................................::::::......... ................. ................::--====================================================================================================================-----------------------------------:::::::::::::......::::::----------------------------------------------------------------------------------------------------------------------------:::.................................................................::-==+++++=--::.........................................................................................................................................................................................::-==++==-::..................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................:::--==++++++++++++++++++++++++++++++++++++*******************++++++++++++++++++++++++++++++++++++++++++++++++++**************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+===============*************###################################################################################################################################################****************+++++++++++++++++++++++++++++++++=====================+++++++++++++++++++++++++++++*****************************************************************************************************************
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===-----::::::..............................................................................................................................................................................::::::..............................:::::::::................................::::------------------::::::::::------:::::::::::::::::::::::::::::::::::::::::::::--------------:::::::::::::::::::::::::::::::::::::-----------------------------------------------------:::--------------::::::----------=========---------------------------------------------------------------------==========-----------::::::::::::::::::::::::::::::::::..................................................................-%%####%%%%%%%%%%%%%%%%%%%%%%%%%%%*++++++++++++++++++++++++++++++++++++++++++++++++++++#%#%#++*#%#####*****++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********#%%%%%%%#####%%%%%%%%%%%%%%%%%%%%%%%####################################################*********+++++++++++++=======-===++==+++++*#*--=*********++++++++++++++++++++++++++**********++++++++++++*******++------:::::::::::::::::::::::::::::::::::::::::::::----:::::::::::::::::-====+==+=+++++++++=++=+==-::::::::::::::::::::-------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: ....:::::----------------::::.................................................................................................:::::::............................... .....................................................:..............................................................................................................................::::::........ . ................ ................::--====================================================================================================================---------------------------------------::::::::::....:::::::----------------------------------------------------------------------------------------------------------------------------:::.................................................................::-==+++++=--::.........................................................................................................................................................................................::-==++==-::.................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................:::..............:::--==+++++++++++++++++++++++++++++++++++*********************+++++++++++++++++++++++++++++++++++++++++++++++++***************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************===============****############################################################################################################################################################****************++++++++++++++++++++++++++++++++++====================+++++++++++++++++++++++++++++*****************************************************************************************************************
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===-----:::::..............................................................................................................................................................................:::::::..............................:::::::::................................:::-------------------:::::::::-------::::::::::::::::::::::::::::::::::::::::::::::------------::::::::::::::::::::::::::::::::::::::------------------------------------------------------::--------------:::------------==========---------------------------------------------------------------------==========------------:::::::::::::::::::::::::::::::::..................................................................:#@%####%%%%%%%%%%%%%%%%%%%%%%%%%@%*++++++++++++++++++++++++++++++++++++++++++++++++++*#%%#*+*#####*##*****+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******#%%%%%%%#####%%%%%%%%%%%%%%%%%%%%%%%####################################################*********+++++++++++++=======-=+=++==+++++**+--=*********++++++++++++++++++++++++++**********++++++++++++******+++-------::::::::::::::::::::::::::::::::::::::::::::--=--::::::::::::::::-====++=+=++++++++++++=++=-:::::::::::::::::::::-------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::. ....::::::----------------:::..................................................................................................:::::::............................... .....................................................:..............................................................................................................................::::::........ . ............... ................::--====================================================================================================================--------------------------------------------:::::::::::::::-----------------------------------------------------------------------------------------------------------------------------:::.................................................................::-==+++++=--:..........................................................................................................................................................................................::-==++==-::...............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................::::::.............:::--==++++++++++++++++++++++++++++++++++***********************+++++++++++++++++++++++++++++++++++++++++++++++++**************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+=============+################################################################################################################################################################*****************+++++++++++++++++++++++++++++++++===================++++++++++++++++++++++++++++++++++*************************************************************************************************************
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++====----::::::..............................................................................................................................................................................::::::...............................:::::::::...............................::::-------------------::::::::-------::::::::::::::::::::::::::::::::::::::::::::::::----------:::::::::::::::::::::::::::::::::::::::------------------------------------------------------::-------------:--------------===========---------------------------------------------------------------------==========------------:::::::::::::::::::::::::::::::::...................................................................#%%####%%%%%%%%%%%%%%%%%%%%%%%%%%@%*++++++++++++++++++++++++++++++++++++++++++++++++*%#%%***#######******++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******#%%%%%%%%#####%%%%%%%%%%%%%%%%%%%%%%%###################################################*********++++++++++++++======-=+=++==+++++**+--=*********++++++++++++++++++++++++++**********++++++++++++******+++-------:::::::::::::::::::::::::::::::::::::::::::::----:::::::::::::::::-===++=++++++++++++++=++==:::::::::::::::::::::-------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::. ....::::::---------------::::..................................................................................................:::::::............................... .....................................................::.............................................................................................................................::::::........ ............ ................::--====================================================================================================================---------------------------------------------::::::::::::::-----------------------------------------------------------------------------------------------------------------------------:::.................................................................::-==++++==-::..........................................................................................................................................................................................::--=++==-::..............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................::::::::............::::-==+++++++++++++++++++++++++++++++++**************************++++++++++++++++++++++++++++++++++++++++++++++++************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************#*=============+################################################################################################################################################################******************+++++++++++++++++++++++++++++++++==================++++++++++++++++++++++++++++++++++++++++***************************************************++++++++********************************************
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===-----::::::..............................................................................................................................................................................::::::..............................:::::::::................................::::-------------------:::::::::-----::::::::::::::::::::::::::::::::::::::::::::::::::--------::::::::::::::::::::::::::::::::::::::::-----------------------------------------------------:::---------------------------============---------------------------------------------------------------------==========------------:::::::::::::::::::::::::::::::::...................................................................*@%####%%%%%%%%%%%%%%%%%%%%%%%%%%@@%*++++++++++++++++++++++++++++++++++++++++++++++*#%%%###########*****+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********#%%%%%%%#####%%%%%%%%%%%%%%%%%%%%%%%%##################################################*********++++++++++++++======-=+=++==+++++**+--=*********++++++++++++++++++++++++++**********++++++++++++******+++-------:::::::::::::::::::::::::::::::::::::::::::::-----::::::::::::::::-====+=+++++++++++++++++==::::::::::::::::::::::-------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: ....:::::::--------------:::...................................................................................................:::::::............................... .....................................................::............................................................................................................................::::::::...... .......... .................::--====================================================================================================================-----------------------------------------------:::::::::::------------------------------------------------------------------------------------------------------------------------------:::.................................................................::-==++++==-::..........................................................................................................................................................................................::--=++==-::.............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................:::::::::............::::-==++++++++++++++++++++++++++++++++***************************+++++++++++++++++++++++++++++++++++++++++++++++++*******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************######+============+#################################################################################################################################################################******************+++++++++++++++++++++++++++++++++================+++++++++++++++++++++++++++++++++++++++++++++***************************************************************************************************
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===----::::::..............................................................................................................................................................................::::::...............................:::::::::................................::::-------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---::::::::::::::::::::::::::::::::::::::::::------------------------------------------------------:::--------------------------=============--------------------------------------------------------------------===========------------:::::::::::::::::::::::::::::::::...................................................................=%%####%%%%%%%%%%%%%%%%%%%%%%%%%%%@@#*++++++++++++++++++++++++++++++++++++++++++++*#%%%%#######*#*##***++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********#%%%%%%%######%%%%%%%%%%%%%%%%%%%%%%%##################################################**********+++++++++++++======-===++==+++++**=--=**********++++++++++++++++++++++++***********+++++++++++*******+++=-------:::::::::::::::::::::::::::::::::::::::::::::----:::::::::::::::::-===+=++++++++++++++++++=::::::::::::::::::::::--------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: .....:::::::-------------::::...................................................................................................:::-::::.............................. .....................................................::............................................................................................................................::::::::...... ........ .................::--======================================================================================================================----------------------------------------------::::::::--------------------------------------------------------------------------------------------------------------------------------:::.................................................................::-==++++==-::..........................................................................................................................................................................................::--=++==-::.............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................:::::::::............::::-==++++++++++++++++++++++++++++++++**************************+++++++++++++++++++++++++++++++++++++++++++++++++++***********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************#############=============*#################################################################################################################################################################******************+++++++++++++++++++++++++++++++++==============++++++++++++++++++++++++++++++++++++++++++++++++++************************************************************************************************
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===----::::::..............................................................................................................................................................................::::::...............................::::::::.................................:::--------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::------------------------------------------------------:::-------------------------==============--------------------------------------------------------------------===========------------:::::::::::::::::::::::::::::::::...................................................................-%%#####%%%%%%%%%%%%%%%%%%%%%%%%%%%@%#*++++++++++++++++++++++++++++++++++++++++++*#%%%%%%#####**#******+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******#%%%%%%%######%%%%%%%%%%%%%%%%%%%%%%%%##################################################********++++++++++++++======-===++==+++++**=--=**********++++++++++++++++++++++++***********+++++++++++******++++=-------:::::::::::::::::::::::::::::::::::::::::::::----:::::::::::::::::-=====++++++++++++++++++=-::::::::::::::::::::::--------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::. .....::::::::------------::::...................................................................................................:::--:::.............................. .....................................................::............................................................................................................................::::::::...... ..... .................::--========================================================================================================================------------------------------------------------::----------------------------------------------------------------------------------------------------------------------------------:::.................................................................::--=++++=--::...........................................................................................................................................................................................:--=++==-::............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................::::::::::............::::-==+++++++++++++++++++++++++++++++***************************+++++++++++++++++++++++++++++++++++++++++++++++++++**************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************######################+============*#################################################################################################################################################################*******************+++++++++++++++++++++++++++++++++=============++++++++++++++++++++++++++++++++++++++++++++++++++++**********************************************************************************************
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===----::::::..............................................................................................................................................................................::::::...............................::::::::................................::::--------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::------------------------------------------------------::::-----------------------===============--------------------------------------------------------------------===========------------:::::::::::::::::::::::::::::::::....................................................................%@%####%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%#*+++++++++++++++++++++++++++++++++++++++++*%%%%%#####*#********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********%%%%%%%#######%%%%%%%%%%%%%%%%%%%%%%%##################################################********++++++++++++++======-===++-=+++++**=--=**********++++++++++++++++++++++++***********+++++++++++******++++=-------::::::::::::::::::::::::::::::::::::::::::::------::::::::::::::::-=====+++++++++++++=++++=-::::::::::::::::::::::--------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::. ....:::::::::------------:::....................................................................................................:::--:::.............................. .....................................................::............................................................................................................................::::::::...... .................::--==========================================================================================================================----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::.................................................................::--=++++=--::...........................................................................................................................................................................................:--=++==-::............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................::::::::::............::::-==+++++++++++++++++++++++++++++++***************************++++++++++++++++++++++++++++++++++++++++++++++++++++*******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************############################+===========+*##################################################################################################################################################################*******************++++++++++++++++++++++++++++++++=============++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********************+*******************************************************************
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==----::::::...............................................................................................................................................................................:::::................................::::::::................................::::--------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-----------------------------------------------------:::::-----------------------===============--------------------------------------------------------------------===========-------------::::::::::::::::::::::::::::::::....................................................................#@%####%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%#*+++++++++++++++++++++++++++++++++++++++*#%%%#***************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********#%%%%%%%######%%%%%%%%%%%%%%%%%%%%%%%##################################################*********+++++++++++++===+======++-=+++++**=---**********+++++++++++++++++++++++************++++++++++*******++++=--------:::::::::::::::::::::::::::::::::::::::::::------:::::::::::::::::-====++++++++++++++++++=::::::::::::::::::::::::--------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: ....:::::::::-----------::::....................................................................................................::----::............................... .....................................................::............................................................................................................................::::::::...... ..................::--============================================================================================================================--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::.................................................................::--=+++==--::...........................................................................................................................................................................................::-=++==--:....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................:.....:::::::::::::...........::::-==+++++++++++++++++++++++++++++++*************+++++++********+++++++++++++++++++++++++++++++++++++++++++++++++++++************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************#################################+===========+###################################################################################################################################################################********************+++++++++++++++++++++++++++++++++===========++++++++++++++++++++++++++++++++++++++++++++++++++++++++******************************************************************************************
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===----::::::...............................................................................................................................................................................:::::.................................::::::.................................::::--------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-----------------------------------------------------:::::----------------------=================-------------------------------------------------------------------==========-------------:::::::::::::::::::::::::::::::::....................................................................*@%####%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#*+++++++++++++++++++++++++++++++++++**#%%%##*+++*****##*****+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********#%%%%%%%######%%%%%%%%%%%%%%%%%%%%%%%##################################################*********+++++++++++++===+=--==++=-=+++++**=---************+++++++++++++++++++++************++++++++++*******++++=--------:::::::::::::::::::::::::::::::::::::::::::-------::::::::::::::::-=====+++++++++=+++++++=::::::::::::::::::::::::---------::.::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: ....:::::::::-----------::::...................................................................................................:::----::............................... .....................................................::............................................................................................................................::::::::...... ..................::--=============================================================================================================================-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::.................................................................::--=+++==--::...........................................................................................................................................................................................::-==++=--::...................................................................................................................................................................................................................................................................................................................................................................................................................................................................................:.....:::::::::::::...........::::-==+++++++++++++++++++++++++++++++**********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************#############################################+===========*###################################################################################################################################################################********************+++++++++++++++++++++++++++++++++===========+++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****************************************************************************************
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===---::::::................................................................................................................................................................................:::::.................................::::::.................................::::-------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-------------------------------------------=---------::::---------------------=-=================-------------------------------------------------------------------==========-------------:::::::::::::::::::::::::::::::::....................................................................=@%#####%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%#*+++++++++++++++++++++++++++++*****##%%%#*++++*****##*******++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********##%%%%%%#######%%%%%%%%%%%%%%%%%%%%%%%##################################################********+++++++++++++===+=--==++=-=+++++**=--=************+++++++++++++++++++++*************++++++++*******+++++=--------::::::::::::::::::::::::::::::::::::::::::::------:::::::::::::::::=====+++++++++=+++++++=:::::::::::::::::::::::::---------::.::::::::::::::::::::::::::::::::::::::::::::::::::::::::::. .....::::::::::---------::::....................................................................................................:::----::............................... .....................................................::...........................................................................................................................:::::::::...... ..................::--==============================================================================================================================------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::.................................................................::--==+===-:::...........................................................................................................................................................................................::-==++=--::...................................................................................................................................................................................................................................................................................................................................................................................................................................................................................:.....:::::::::::::...........::::--=+++++++++++++++++++++++++++++++******++++++========++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************##########################################################*=+=========*###################################################################################################################################################################*********************+++++++++++++++++++++++++++++++++=========+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****************************************************************************************
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===---:::::.................................................................................................................................................................................::::...................................::::..................................::::-------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-------------------------------------------==---------:::--------------------====================-------------------------------------------------------------------=========--------------:::::::::::::::::::::::::::::::::....................................................................-%%#####%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%#*++++++++++++++++++++++++++++#%##%%%%#*+++++****************+**++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******###%%%%%%########%%%%%%%%%%%%%%%%%%%%%%##################################################********+++++++++++++===+=--==++=-=+++++**=--=************+++++++++++++++++++++*************++++++++*******+++++=---------:::::::::::::::::::::::::::::::::::::::::::-------::::::::::::::::-====++++++++++++=++=+-:::::::::::::::::::::::::----------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::. .....::::::::::---------::::....................................................................................................:::----::............................... .....................................................::...........................................................................................................................::::::::::..... ..................::--===============================================================================================================================-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::.................................................................::--=====--::............................................................................................................................................................................................::-==++==-::.........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................:::::::::::::...........::::--=++++++++++++++++++++++++++++++*****+++++=====----===+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****************************++++++++*******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************######################################################################*==========+####################################################################################################################################################################*********************++++++++++++++++++++++++++++++++++========+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****************************************************************************************
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==---::::::..................................................................................................................................................................................:::....................................:::..................................::::-------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-------------------------------------------==---------:::-------------------=====================-------------------------------------------------------------------========---------------:::::::::::::::::::::::::::::::::....................................................................:%%#####%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#**++++++++++++++++++++++++++#%#####**+++++++*******************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******####%%%%%%%#######%%%%%%%%%%%%%%%%%%%%%%##################################################********+++++++++++++=====--==++=-=+++++**=--=***********+++++++++++++++++++++**************++++++++*******+++++=---------:::::::::::::::::::::::::::::::::::::::::::--------:::::::::::::::-=====++++++++=+++++++-::::::::::::::::::::::::::----------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: ....:::::::::::--------::::.....................................................................................................:::----::............................... ................:....................................::...........................................................................................................................::::-:::::...... ..................::--================================================================================================================================--------------------------------------------------------------------------------------------------------------------------------::------------------------------------------:::.................................................................::--=====--::............................................................................................................................................................................................::-==++==-::........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................::::::::::::::...........::::--=+++++++++++++++++++++++++++++++**++++====----------==+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********************++++++++++++++++******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************##################################################################################+==+======*####################################################################################################################################################################**********************+++++++++++++++++++++++++++++++++++=====+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***************************************************************************************
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==---:::::...................................................................................................................................................................................::.........................................................................::::--------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--------------------------------------------==---------::------------------=======================-------------------------------------------------------------------=======---------------:::::::::::::::::::::::::::::::::......................................................................#@%#####%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#*++++++++++++++++++++++++++*****+++++++++*********************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***#*######%%%%%%%#######%%%%%%%%%%%%%%%%%%%%%%%#################################################********+++++++++++++=====--=+++=-=+++++**=--=***********+++++++++++++++++++++***************+++++++******++++++=---------::::::::::::::::::::::::::::::::::::::::::::-------::::::::::::::::-====++++++++=+++++++:::::::::::::::::::::::::::-----------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::. ....::::::::::::------:::::......................................................................................................::----::.............................. ...............::....................................::...........................................................................................................................::::--::::...... ..................::--=================================================================================================================================-------------------------------------------------------------------------------------------------------------------------------:::-----------------------------------------:::..................................................................:--=====--::............................................................................................................................................................................................::-==++==-::......................................................................................................................................................................................................................................................................................................................................................................................................................................................................................::::::::::::::::...........::::--==++++++++++++++++++++++++++++++++++++==----::::::--==++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******************++++++++++++++++++++*********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************##########################################################################################*+=======+######################################################################################################################################################################*****####************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**************************************************************************************
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==--::::................................................................................................................................................................................................................................................................::::--------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-------------------------------------------===----------------------------=========================----------------------------------------------------------------------------------------:::::::::::::::::::::::::::::::::......................................................................+@%#####%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##**+++++++++++++++++++++++++*++++++++++++*********************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**##########%%%%%%#######%%%%%%%%%%%%%%%%%%%%%%%#################################################********+++++++++++++==+===-=+++=-=+++++**=--=#**********+++++++++++++++++++++*****************++++*******++++++=---------:::::::::::::::::::::::::::::::::::::::::::::-------:::::::::::::::-====+++++++++=+++++=::::::::::::::::::::::::::::----------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::. ....::::::::::::-----:::::.......................................................................................................::----::.............................. ...............:::...................................::...........................................................................................................................::::---::::..... ..................::--=================================================================================================================================-------------------------------------------------------------------------------------------------------------------------------:::-----------------------------------------:::..................................................................::-=====-::::...........................................................................................................................................................................................::-==++==-::......................................................................................................................................................................................................................................................................................................................................................................................................................................................................................::::::::::::::::...........::::--==+++++++++++++++++++++++++++++++++++==--:::::::::--==++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****************+++++========+++++++++*********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************#######################################################################################################*+=====+*######################################################################################################################################################################*****#####************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**************************************************************************************
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==--:::.................................................................................................................................................................................................................................................................::::--------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-------------------------------------------===--------------------------===========================----------------------------------------------------------------------------------------:::::::::::::::::::::::::::::::::......................................................................+@%#####%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##*+++++++++++++++++++++++++++++++++++++*********************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***##########%%%%%%#######%%%%%%%%%%%%%%%%%%%%%%%#################################################********+++++++++++++==+===-=+++=-=+++++**=--=#**********++++++++++++++++++++******************++++*******++++++=---------:::::::::::::::::::::::::::::::::::::::::::::-------::::::::::::::::====+++++=+++=++=+==::::::::::::::::::::::::::::-----------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::. .....:::::::::::::---::::::.......................................................................................................::----::.............................. ..............::::....................................:...........................................................................................................................::::----:::..... ..................::--================================================================================================================================--------------------------------------------------------------------------------------------------------------------------------:::----------------------------------------::::..................................................................::-====--:::::..........................................................................................................................................................................................::-==++==-::..........................................................................:::.........................................................................................................................................................................................................................................................................................................................................................................................................::::::::::::::::............:::--==++++++++++++++++++++++++++++++++++==--::::::.::::--==++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*************+++++============+++++++*************************************************************************************************************************************************************************************************************************************************************************************************************************************************************################################################################################################################**+++*########################################################################################################################################################################*****######************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**************************************************************************************
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===--:::.................................................................................................................................................................................................................................................................::::--------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-------------------------------------------===------------------------==============================---------------------------------------------------------------------------------------:::::::::::::::::::::::::::::::::......................................................................=@%######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#**+*+++++++++++++++++++++++++++++++++***********+*******++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****##########%%%%%%#######%%%%%%%%%%%%%%%%%%%%%%%%##%%############################################********++++++++++++++====+--+++=-=+++++**---=#**********++++++++++++++++++++******************++++******+++++++=----------::::::::::::::::::::::::::::::::::::::::::::--------:::::::::::::::-====+++++++++=++++-:::::::::::::::::::::::::::::-----------::.::::::::::::::::::::::::::::::::::::::::::::::::::::::: .....:::::::::::::::::::::........................................................................................................::----::.............................. ...............:::....................................:...........................................................................................................................:::-----:::..... ...................::--=================================================================================================================================-----------------------------------------------------------------------------------------------------------------------------::::::---------------------------------------::::..................................................................::-====--::::::.........................................................................................................................................................................................::-==++==-::........................................................................:::::::.......................................................................................................................................................................................................................................................................................................................................................................................................::::::::::::::::...........::::--==++++++++++++++++++++++++++++++++++==--::::....:::--==+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***********++++====-------====++++++********************************************************************************************************************************************************************************************************************************************************************************************************************************************************###################################################################################################################################################################################################################################################################################################*****#######***********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*************************************************************************************
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===-::::.................................................................................................................................................................................................................................................................:::---------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-------------------------------------------===----------------------==================================-------------------------------------------------------------------------------------:::::::::::::::::::::::::::::::::......................................................................-%%######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#***++*+++++++++++++++++++++++++++++++********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****##########%%%%%%%######%%%%%%%%%%%%%%%%%%%%%%%%#################################################********+++++++++++++====+--+++=-=+++++**---=#**********++++++++++++++++++++*******************++*******+++++++=----------:::::::::::::::::::::::::::::::::::::::::::::-------:::::::::::::::-====++++=++==+=+++-::::::::::::::::::::::::::::::-----------::::::::::::::::::::::::::::::::::::::::::::::::::::::::: .....:::::::::::::::::::::........................................................................................................::----::.............................. ...............::.....................................-...........................................................................................................................:::-----::::.... . ...................::--=================================================================================================================================-----------------------------------------------------------------------------------------------------------------------------::::::---------------------------------------::::..................................................................::--===--::::::.........................................................................................................................................................................................::-==++==-::.......................................................................::::::::.......................................................................................................................................................................................................................................................................................................................................................................................................::::::::--::::::...........::::--==++++++++++++++++++++++++++++++++++==-::::.....:::--==++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********+++===----------===+++++++****************************************************************************************************************************************************************************************************************************************************************************************************************************************************######################################################################################################################################################################################################################################################################################################*****#######************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++************************************************************************************
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==--:::.................................................................................................................................................................................................................................................................::::----------------------::::::::-----:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-------------------------------------------===--------------------=================================================------------------------------------------------------------------------:::::::::::::::::::::::::::::::::......................................................................:%%%#####%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#*+**+++++++++++++++++++++++++++++++++****+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******###########%%%%%%%######%%%%%%%%%%%%%%%%%%%%%%%%%################################################********+++++++++++++=+==+--+++--=+++++**---=#***********++++++++++++++++++********************++*******+++++++=----------:::::::::::::::::::::::::::::::::::::::::::::-------::::::::::::::::-===++++=++==+=++=:::::::::::::::::::::::::::::::------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::. ....:::::::::::::::::::::.........................................................................................................::----::.............................. ...............::.....................................-...........................................................................................................................:::------:::.... . ..................:::--=================================================================================================================================-----------------------------------------------------------------------------------------------------------------------------:::::----------------------------------------::::..................................................................::--==---:::::::.....................................................................................................................................::.................................................::--=++==-::......................................................................:::----:::...................................................................................................................................................................................................................................................................................................................................................................................................::.::::::::-:::::::...........::::--==++++++++++++++++++++++++++++++++++==-:::......:::--==+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***+****++++==-----------===+++++++*************************************************************************************************************************************************************************************************************************************************************************************************************************************************#########################################################################################################################################################################################################################################################################################################*****########***********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***********************************************************************************
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==--:::.................................................................................................................................................................................................................................................................::::----------------------:::::::-------:::::::::::--------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::----------------------------------------=-=====-----------------======================================================---------------------------------------------------------------------:::::::::::::::::::::::::::::::::......................................................................:#%%#####%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******############%%%%%%%#####%%%%%%%%%%%%%%%%%%%%%%%%%%###############################################********+++++++++++++++==*--+++--=+++++**---=#***********++++++++++++++++++*****************************+++++++=-----------:::::::::::::::::::::::::::::::::::::::::::::-------:::::::::::::::---=++++=+++=+==+=::::::::::::::::::::::::::::::::------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::. .....:::::::::::::::::::::.........................................................................................................::----::.............................. ...............::.....................................-...........................................................................................................................:::------:::.... ... ...................::::--=================================================================================================================================------------------------------------------------------------------------------------------------------------------------------::::----------------------------------------:::...................................................................::--==--::::::::....................................................................................................................................::::.................................................:--=++==-::......................................................................:::-----::...................................................................................................................................................................................................................................................................................................................................................................................................:::::::::::::::::::...........::::--==++++++++++++++++++++++++++++++++++=--:::......:::--==+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*++**++++==-------------===+++++++********************************************************************************************************************************************************************************************************************************************************************************************************************************************############################################################################################################################################################################################################################################################################################################******########************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********************************************************************************
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==--:::.................................................................................................................................................................................................................................................................::::-----------------------::::----------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::----------------------------------------========----------------========================================================--------------------------------------------------------------------::::::::::::::::::::::::::::::::.......................................................................*%%######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#*+*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********##############%%%%%%%####%%%%%%%%%%%%%%%%%%%%%%%%%%###############################################********+++++++++++++++==*--+++--=+++++**---=#************+++++++++++++++++*****************************+++++++=-----------:::::::::::::::::::::::::::::::::::::::::::::-------:::::::::::::::---==+++++++====+-::::::::::::::::::::::::::::::::-------------:.::::::::::::::::::::::::::::::::::::::::::::::::::::: .....::::::::::::::::::::..........................................................................................................:::---::.............................. ......................................................-...........................................................................................................................:::------:::.... ... .................:::::---=================================================================================================================================-------------------------------------------------------------------------------------------------------------------------------::-----------------------------------------:::...................................................................::------::::::::....................................................................................................................................:::::................................................::-==++=--::.....................................................................::--==--:::....................................................................................................................................................................................................................................................................................................................................................................................................:::::::::::::::::............:::--==+++++++++++++++++++++++++++++++++==--:::......::::-==+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*++++++++==----:::::----===+++++++**********************************************************************************************************************************************************************************************************************************************************************************************************************************######################################################################################################################################################################################################################################################################################################################******#########************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********************************************************************************
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===-:::.................................................................................................................................................................................................................................................................:::--------------------------------------------------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::----------------------------------------========----------------==========================================================--------------------------------------------------------------------::::::::::::::::::::::::::::::.......................................................................+%%######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#**++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********###############%%%%%%%%#%%%%%%%%%%%%%%%%%%%%%%%%%%%%###############################################********+++++++++++++++=+*--+++--=+++++*+---+**************+++++++++++++++*****************************++++++++=-----------::::::::::::::::::::::::::::::::::::::::::::::------::::::::::::::::--==+++++++==+==-:::::::::::::::::::::::::::::::::------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::. .....:::::::::::::::::::::..........................................................................................................:::---:::............................. ......................................................-...........................................................................................................................:::------:::.... ....... ...............::::::::---=================================================================================================================================-------------------------------------------------------------------------------------------------------------------------------:------------------------------------------:::...................................................................::------::::::::...................................................................................................................................::::::................................................::-==++=--::....................................................................:::-====--::....................................................................................................................................................................................................................................................................................................................................................................................................:::::::::::::::::............:::--==+++++++++++++++++++++++++++++++++==--:::......::::-==+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*++++++++==----:::::----===++++++++*************************************************************************************************************************************************************************************************************************************************************************************************************************##############################################################################################################################################################################################################################################################################################################################******##########***********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******************************************************************************
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==-:::.................................................................................................................................................................................................................................................................:::------------------------------------------------------------------------------------------:::::::::::::::::::::::::::::::::::::::::::--------------------------------------==========----------------===========================================================--------------------------------------------------------------------:::::::::::::::::::::::::::::.......................................................................=%%######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#***+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********#################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###############################################********+++++++++++++++=+*-=+++--=+++++*+---+**************+++++++++++++++*****************************++++++++=-----------::::::::::::::::::::::::::::::::::::::::::::::--------::::::::::::::---=+=+++++=====-:::::::::::::::::::::::::::::::::-------------::::::::::::::::::::::::::::::::::::::::::::::::::::::. .....::::::::::::::::::::...........................................................................................................:::---:::............................. ......................................................-...........................................................................................................................:::------:::..... ....... ..............::::::::----=================================================================================================================================--------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::....................................::.............................::------::::::::...................................................................................................................................::::::................................................::-==++=--::....................................................................::--====--::...................................................................................................................................................................................................................................................................................................................................................................................................:::::::::::::::::.............:::--==+++++++++++++++++++++++++++++++++==--:::......::::-==++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==-----:::-----===++++++++******************************************************************************************************************************************************************************************************************************************************************************************************************#####################################################################################################################################################################################################################################################################################################################################*******#########***********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******************************************************************************
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==-:::................................................::...............................................................................................................................................................................................................:::-------------------------------------------------------------------------------------------::::::::::::::::::::::::::::::::::::::::::------------------------------------=============--------------============================================================----------------------------------------------------------------------:::::::::::::::::::::::::::.......................................................................=%%#######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*****+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********###################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###############################################*******+++++++++++++++++*-=+++--=+++++*+---+**************+++++++++++++++*****************************++++++++=------------:::::::::::::::::::::::::::::::::::::::::::::--------:::::::::::::::--=+=+++++=====:::::::::::::::::::::::::::::::::::-------------:::::::::::::::::::::::::::::::::::::::::::::::::::::. .....::::::::::::::::::::...........................................................................................................:::---:::............................. ......................................................-. .........................................................................................................................:::------:::..... .....................::::--------==================================================================================================================================--------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::....................................::.............................::-----:::::::::...................................................................................................................................::::::................................................::-==++==-::....................................................................::--=====-::...................................................................................................................................................................................................................................................................................................................................................................................................:::::::::::::::::.............:::--==+++++++++++++++++++++++++++++++++==--:::......::::-==++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==----:::::----===++++++++*************************************************************************************************************************************************************************************************************************************************************************************************************##########################################################################################################################################################################################################################################################################################################################################*******#########***********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******************************************************************************
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==-:::........................................:=++=-..-=-.............................................................................................................................................................................................................::::-------------------------:-----------:------------------------------------------------------::::::::::::::::::::::::::::::::::::::::------------------------------------===============----------------=========================================================-------------------------------------------------------------------------::::::::::::::::::::::::.......................................................................-%%%#######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#****++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********####################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##############################################********+++++++++++++++**-=+++--=+++++*=---+**************++++++++++++++*****************************+++++++++=------------::::::::::::::::::::::::::::::::::::::::::::::--------::::::::::::::--=++=++==+===-:::::::::::::::::::::::::::::::::::--------------::::::::::::::::::::::::::::::::::::::::::::::::::::: .....:::::::::::::::::::.....................................................................................................:.......::----::............................. ......................................................-...........................................................................................................................:::-----::::..... ......................:::---------=================================================================================================================================---------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::...................................::::............................:::----:::::::::...................................................................................................................................:::::::...............................................::--=+===-::....................................................................::--=====-::...........................................................................................................................................................................................................................................................................................................::.......................................................................................::::::::::::::::.............:::--==+++++++++++++++++++++++++++++++++==--::........:::--=++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==-----:::-----===++++++++********************************************************************************************************************************************************************************************************************************************************************************************************###############################################################################################################################################################################################################################################################################################################################################********########*************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******************************************************************************
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==-:::........................................*@%@@%*=-==.............................................................................................................................................................................................................::::-----------------------:::::--------:::::::-------------------------------------------------::::::::::::::::::::::::::::::::::::::::---------------------------------===================----------------========================================================----------------------------------------------------------------------------:::::::::::::::::::::.......................................................................:#%%#######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#****+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********#####################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#############################################********+++++++++++++++**-=*++--=+++++*=---+**************++++++++++++++*****************************+++++++++-------------::::::::::::::::::::::::::::::::::::::::::::::--------::::::::::::::--==+=+=+++===-:::::::::::::::::::::::::::::::::::---------------::::::::::::::::::::::::::::::::::::::::::::::::::::. ......:::::::::::::::::::....................................................................................................:::......::----::............................. ......................................................-...........................................................................................................................:::-----::::..... .......................::---------==================================================================================================================================---------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::...................................::::............................:::---::::::::::..................................................................................................................................::::::::...............................................::--=====-::....................................................................::--=====-::..........................................................................................................................................................................................................................................................................................................:::.......................................................................................::::::::::::::::.............:::--==+++++++++++++++++++++++++++++++++==--::........:::--=+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==----:::-----====++++++++******************************************************************************************************************************************************************************************************************************************************************************************************################################################################################################################################################################################################################################################################################################################################################********#########************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****************************************************************************
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==-:::.......................................:@@@@@@@@#+-.............................................................................................................................................................................................................::::----------------------:::::::-----::::::::::::::::::::::::::::::::::::-----------------------:::::::::::::::::::::::::::::::::::::::---------------------------------=====================----------------======================================================--------------------------------------------------------------------------------:::::::::::::::::........................................................................#%%#######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##****++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******#######################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#############################################********+++++++++++++++**-=*+=--=+++++*---=++*************+++++++++++++*****************************++++++++++--------------::::::::::::::::::::::::::::::::::::::::::::::--------::::::::::::::--=+==+++===--:::::::::::::::::::::::::::::::::::----------------:::::::::::::::::::::::::::::::::::::::::::::::::::. . ......::::::::::::::::::......... ..........................................................................................::::......::----::............................. ......................................................-...........................................................................................................................:::-----::::..... ........................::---------==================================================================================================================================---------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::...................................::::.............................::--:::::::::::..................................................................................................................................::::::::................................................::-====--::....................................................................::--=====-::....................................................................................................::::::::..............................................................................................................................................................................................:::::.....................................................................................::.:::::::::::::.............:::--==+++++++++++++++++++++++++++++++++==-:::........:::--==++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==----:::-----====++++++++****************************************************************************************************************************************************************************************************************************************************************************************************##################################################################################################################################################################################################################################################################################################################################################********#########************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****************************************************************************
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==-:::.......................................-@@@@@@%@@@#-............................................................................................................................................................................................................::::----------------------:::::::::--::::::::::::::::::::::::::::::::::::::::::-----------------::::::::::::::::::::::::::::::::::::::::--------------------------------======================-------------------===================================================----------------------------------------------------------------------------------------::::::::::.......................................................................*%%#######%#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#*****+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******########################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%############################################********+++++++++++++++*+-=*+=--=++++++---=++**************++++++++++++****************************+++++++++++--------------::::::::::::::::::::::::::::::::::::::::::::::--------::::::::::::::--=+=++++==--::::::::::::::::::::::::::::::::::::-----------------::::::::::::::::::::::::::::::::::::::::::::::::::. . ......:::::::::::::::::......... ..........................................................................................::::......::----::............................. ......................................................-...........................................................................................................................:::-----::::..... ........................:::--------===================================================================================================================================---------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::...................................::::.............................:::::::::::::::..................................................................................................................................:::--:::................................................::--===--::....................................................................::--=====-::...................................................................................................::::::::::.............................................................................................................................................................................................::::::........................................................................................::::::::::...............:::--==+++++++++++++++++++++++++++++++++==-:::........:::--==++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==-----:------====++++++++***************************************************************************************************************************************************************************************************************************************************************************************************####################################################################################################################################################################################################################################################################################################################################################*******#########*************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***************************************************************************
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==-:::.......................................-@@@@@@@@@@@%*:.........................................................................................................................................................................................................::::----------------------::::::::::-:::::::::::::::::::::::::::::::::::::::::::::::------------:::::::::::::::::::::::::::::::::::::::::--------------------------------======================-------------------------------------------===========================-------------------------------------------------------::::::::------------------------------:::::.......................................................................+%%#######%##%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#******++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******##########################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###########################################********+++++++++++++++*+-=++=--=++++++---=+++*************+++++++++++*****************************+++++++++++---------------::::::::::::::::::::::::::::::::::::::::::::::--------::::::::::::::-=++=++++=-::::::::::::::::::::::::::::::::::::-------------------:::::::::::::::::::::::::::::::::::::::::::::::::... .......:::::::::::::::::......... . .......................................................................................::::::.....::----::............................. ......................................................:...........................................................................................................................:::-----::::.... ........................:::-------====================================================================================================================================---------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::...................................::::.............................:::::::::::::::..................................................................................................................................:::--:::................................................:::-----::.....................................................................::--====--::..................................................................................................::::::::::::..........................................................................::::::............................................................................................................:::::::.........................................................................................::::::::...............:::--==+++++++++++++++++++++++++++++++++=--:::........:::--==++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===----------=====++++++++***************************************************************************************************************************************************************************************************************************************************************************************************####################################################################################################################################################################################################################################################################################################################################################*******#########**************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**************************************************************************
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==--::........................................-@@@@@@@@@@@@@@#-..........................................................................................................:-=++**#**##%%%%%%%##**+=-::-::..............................................................::::----------------------::::::::::-::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--------------------------------======================------------------------------------------------------================-----------------------------------------------------:::::::::::::-----------------------------::::......................................................................=%%%#########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##****++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******###########################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##########################################*********++++++++++++++*+-+++=--=+++++=---++++**************++++++++++****************************++++++++++++---------------:::::::::::::::::::::::::::::::::::::::::::::::-------:::::::::::::::-=++=+++=-::::::::::::::::::::::::::::::::::::--------------------:::::::::::::::::::::::::::::::::::::::::::::::::.... ......::::::::::::::::::....... . ......................................................................................::::::.....:::---::............................. ......................................................::..........................................................................................................................:::------:::..... ......................::------======================================================================================================================================---------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::...................................::::.............................:::::::::::::::..................................................................................................................................:::--:::.................................................:::---:::.....................................................................::--====--::.................................................................................................::::-----:::::........................................................................::::::::...........................................................................................................:::::::................................................................................................................:::--==++++++++++++++++++++++++++++++++==--:::........:::--==+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==----------====+++++++++**************************************************************************************************************************************************************************************************************************************************************************************************#####################################################################################################################################################################################################################################################################################################################################################********########***************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*************************************************************************
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==--::........................................:%@@@@@@@@@@@@@@@#+:..................................................................................................:=*%@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%@%#*=:..........................................................::::----------------------::::::::::--:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--------------------------------======================---------------------------------------------------------============------------------------------------------------------::::::::::::::::::-------------------------:::......................................................................-%%%#########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###***++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******#############################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###########################################********++++++++++++++*=-+++=--=+++++=--=++++***************++++++++*****************************+++++++++++=----------------::::::::::::::::::::::::::::::::::::::::::::::-------:::::::::::::::-=++++++-:::::::::::::::::::::::::::::::::::::---------------------::::::::::::::::::::::::::::::::::::::::::::::::.............:::::::::::::::::....... . .....................................................................................::::::.....:::---::............................. ......................................................::..........................................................................................................................:::------:::..... ...................::------======================================================================================================================================---------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::...................................::::.............................:::::::::::::::..................................................................................................................................:::---::..................................................:::::::......................................................................::--====--::................................................................................................::::--------:::.......................................................................::::::::::..........................................................................................................::::::::...............................................................................................................:::--==++++++++++++++++++++++++++++++++==--:::........:::--==+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===--------====++++++++++*************************************************************************************************************************************************************************************************************************************************************************************************######################################################################################################################################################################################################################################################################################################################################################********########****************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++************************************************************************
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==--::........................................:%@@@@@@@@@@@@@@@@@%#=:........................................................................................:=*#%%@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%@@@@@@%+-:......................................................::::----------------------:::::::::---::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---------------------------------=====================------------------------------------------------------------==========----------------------------------------------------:::::::::::::::::::::::----------------------:::......................................................................:%%%#######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#***++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******##############################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###########################################********+++++++++++++**=-+++=--=+++++---=++++****************++++++******************************+++++++++++=----------------:::::::::::::::::::::::::::::::::::::::::::::::-------:::::::::::::::-=++=+=-:::::::::::::::::::::::::::::::::::::--------------------=:.::::::::::::::::::::::::::::::::::::::::::::::.............:::::::::::::::::....... ....................................................................................:::--:::.....:::-:::............................. ......................................................::..........................................................................................................................:::------:::..... .................:::------======================================================================================================================================---------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::...................................::::.............................:::::::::::::::..................................................................................................................................::----::...................................................:::::.......................................................................::--====--::................................................................................................:::----==----:::.....................................................................:::::---::::..........................................................................................................:::::::...............................................................................................................:::--==++++++++++++++++++++++++++++++++==--:::........::::-==++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===------=====+++++++++************************************************************************************************************************************************************************************************************************************************************************************************########################################################################################################################################################################################################################################################################################################################################################********#########***************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++************************************************************************
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==-:::........................................:%@@@@@@%@@@@@@@@@@@@@@%*-:...............................................................................::=+#%@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@%*-:..................................................::::-----------------------::::::::---::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--------------------------------======================-------------------:------------------------------------------========-------------------------------------------------------::::::::::::::::::::::--------------------:::.......................................................................#%%############%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##***+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******###############################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#########################################********+++++++++++++**--+++=-==++++=---=+++++**************++**++******************************++++++++++++=----------------:::::::::::::::::::::::::::::::::::::::::::::::::-----:::::::::::::::--=+=+=-:::::::::::::::::::::::::::::::::::::--------------------=-:::::::::::::::::::::::::::::::::::::::::::::::.............::::::::::::::::...... ..................................................................................:::--:::.....:::::::............................. ......................................................::..........................................................................................................................:::------:::...... . . ...............::::------=====================================================================================================================================----------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::...................................::::.............................:::::::::::::::..................................................................................................................................::----::...............................................................................................................................::--====--::...............................................................................................::::--======---:::...................................................................::::------::::.........................................................................................................:::::::...............................................................................................................::::-==++++++++++++++++++++++++++++++++===-:::.........:::-==++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***+++====----====++++++++++********************************************************************************************************************************************************************************************************************************************************************************************##############################################################################################################################################################################################################################################################################################################################################################*******#########****************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***********************************************************************
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==--::..........................................*@@@@@%#@@@@@@@@@@@@@@@@@@%#+-:................................................................:-*#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@%%#-...............................................::::-----------------------::::::-----::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--------------------------------=====================--------------------:::::::::::::::::::-------------------------=======--------------------------------------------------------:::::::::::::::::::::::::----------------:::.......................................................................*%%############%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##**++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#########################################********+++++++++++++**--+++=-=+++++=---++++++****************++++******************************++++++++++++=-----------------:::::::::::::::::::::::::----:::::::::::::::::::-----:::::::::::::::---=++=-:::::::::::::::::::::::::::::::::::::---------------------=-::::::::::::::::::::::::::::::::::::::::::::::.............::::::::::::::::...... ..................................................................................:::--:::.....:::::::............................. ......................................................::..........................................................................................................................:::------:::..... . ..............:::::-------====================================================================================================================================----------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::...................................::::.............................:::::::::::::::..................................................................................................................................::----::...............................................................................................................................::--====--::...............................................................................................:::---======---:::...................................................................:::--------:::.........................................................................................................:::::::...............................................................................................................::::-==+++++++++++++++++++++++++++++++++==--:::........:::--=++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****+++===========++++++++++**************************************************************************************************************************************************************************************************************************************************************************************####################################################################################################################################################################################################################################################################################################################################################################*******#########*****************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********************************************************************
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==--::......................................:::.=%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#+-.............................................-##%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@%-..............................................::::------------------------:::::------:::::::::::::::::::----------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--------------------------------=====================------------------:::::::::::::::::::::::::::::::::::----------------------------------------------------------------------------::::::::::::::::::::::::::-------------:::.......................................................................+%%%###########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#***+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******##################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#########################################********+++++++++++++**--+++=-++++++----+++++++*************************************************++++++++++++=-----------------:::::::::::::::::::::::::::::::::::::::::::::::::----:::::::::::::::----===:::::::::::::::::::::::::::::::::::::::--------------------=--::::::::::::::::::::::::::::::::::::::::::::::............:::::::::::::::...... ..................................................................................::----::.....:::::::............................. ......................................................::..........................................................................................................................::-------:::..... ................::::::--------==================================================================================================================================-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::...................................::::.............................:::::::::::::::..................................................................................................................................::----::...............................................................................................................................::--====-:::...............................................................................................:::--========---:::.................................................................:::----==---:::.........................................................................................................::::::::...............................................................................................................:::-==+++++++++++++++++++++++++++++++++==--:::........:::--==+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****+++++======++++++++++++**********************************************************************************************************************************************************************************************************************************************************************************#########################################################################################################################################################################################################################################################################################################################################################################********########*****************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********************************************************************
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===-:::.....................................::::::%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#=:.................................::..:+%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@%-.............................................::::-----------------------------------:::::::::--------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-------------------------------======================-----------------::::::::::::::::::::::::::::::::::::-:------------------------------------------------------------------------------:::::::::::::::::::::::::---------::::.......................................................................=%%%#############%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##**++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******##################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##########################################********++++++++++++*+--+++=-=++++=---=+++++++*************************************************++++++++++++=-----------------:::::::::::::::::::::::::::::::::::::::::::::::::----:::::::::::::::-----=-:::::::::::::::::::::::::::::::::::::::-----------------------::::::::::::::::::::::::::::::::::::::::::::::...........:::::::::::::::....... ..................................................................................::----:::.....:::::.............................. ......................................................::.........................................................................................................................:::--------::..... ................:::::::---------=================================================================================================================================-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::...................................::::.............................:::::::::::::::..................................................................................................................................::----::...............................................................................................................................::--====-:::...............................................................................................:::--=========---:::...............................................................::::---====---::............................................:::::::::....................................................::::::::...............................................................................................................:::-==+++++++++++++++++++++++++++++++++==--:::........:::--==+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****+++++++++++++++++++++***************************************************************************************************************************************************************************************************************************************************************************#################################################################################################################################################################################################################################################################################################################################################################################********########******************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********************************************************************
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==--::.....................................:::::::#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%*-:.............................::*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@%-...........................................:::::-----------------------------------:::::::--------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-------------------------------=====================------------------::::::::::::::::::::::::::::::::::::::::--------------------------------------------------------------------------------:::::::::::::::::::::::------:::::.......................................................................:%%%#############%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********###################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###########################################********++++++++++++*+--+++=-=++++=---=+++++++**************************************##**********++++++++++++------------------::::::::::::::::::::::::::::::::::::::::::::::::-----:::::::::::::::---:--::::::::::::::::::::::::::::::::::::::::--------------------==-::::::::::::::::::::::::::::::::::::::::::::::..........:::::::::::::::...... ...................................................................................::-----::......::::.............................. ......................................................::.........................................................................................................................:::--------::...... .................::::::::---------=================================================================================================================================-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::...................................::::.............................:::::::::::::::..................................................................................................................................::----::...............................................................................................................................::--===--::................................................................................................:::--==========--:::..............................................................::::---=====---:::.........................................::::::::::::::.......:::::.....................................::::::::...............................................................................................................:::-==++++++++++++++++++++++++++++++++++=--:::........:::--==+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******++++++++++++++++********************************************************************************************************************************************************************************************************************************************************************############################################################################################################################################################################################################################################################################################################################################################################################********########********************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********************************************************************
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==--::....................................::::::::*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@%#+-:.....................::=%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@%-..........................................::::-------------------------------------::::---------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::-------------------------------=====================-----------------:::::::::::::::::::::::::::::::::::::::::::-------------------------------------------------------------------------------::::::::::::::::::::::::::::::::........................................................................:#%%#############%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##**++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********####################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###########################################********++++++++++++*+--+*+=--++++----+++++++++****#*****************************************************+++----------------------:::::::::::::::::::::::::::::::::::::::::::::----:::::::::::::::--::::::::::::::::::::::::::::::::::::::::::::--------------------===::.:::::::::::::::::::::::::::::::::::::::::::..........:::::::::::::::..... ...................................................................................::-----::........................................ ......................................................::.........................................................................................................................:::--------::...... ..................:::::::::---------================================================================================================================================-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::...................................::::.............................:::::::::::::::..................................................................................................................................::----::...............................................................................................................................:::--==--::................................................................................................:::--==========---:::............................................................::::---=======--:::.......................................:::::::::::::::::.....:::::::....................................:::::::::..............................................................................................................:::-==++++++++++++++++++++++++++++++++++==-:::........:::--==+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********+++++++++++++***************************************************************************************************************************************************************************************************************************##########********************########################################################################################################################################################################################################################################################################################################################################################################################################*********#######********************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******************************************************************
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==--:::....................................::::---:=@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%*-:.:=%**=-:::::::=*%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@#-.........................................::::------------------------------------::::::--------------------------------------------------:::::::::::::::::::::::::::::::::::::::::-------------------------------=====================-----------------::::::::::::::::::::::::::::::::::::::::::::---------------------------------------------------------------------------------:::::::::::::::::::::::::::::.........................................................................*%%###########%##%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###**+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********#####################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###########################################*********++++++++++**+--+*+===+++=---=+++++++++**##**++****************************************+++++++++++++--=-------------------:::::::::::::::::::::::::::::::::::::::::::::-----::::::::::::::--:-:::::::::::::::::::::::::::::::::::::::::::--------------------==-::::::::::::::::::::::::::::::::::::::::::::::........:::::::::::::::..... ...................................................................................::-----::........................................ ......................................................::.........................................................................................................................:::--------::..... ..................:::::::::---------================================================================================================================================-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::...................................::::.............................:::::::::::::::..................................................................................................................................::----::................................................................................................................................::--==--::................................................................................................:::--===========--:::...........................................................::::---========--:::......................................:::::::::::::::::::...:::::::::...................................:::::::::..............................................................................................................:::-==++++++++++++++++++++++++++++++++++==--::........::::-==+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********++++++++++++++**********************************************************************************************************************************************************************************************************************################******###################################################################################################################################################################################################################################################################################################################################################################################################################*********#######*********************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******************************************************************
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==--:::....................................:::----::*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#%++#%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%@@%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@%-........................................::::------------------------------------::::::-------------------------------------------------------::::::::::::::::::::::::::::::::::::-------------------------------=====================-----------------:::::::::::::::::::::::::::::::::::::::::::::----------------------------------------------------------------------------------:::::::::::::::::::::::::::.........................................................................+%%###########%##%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#**+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********######################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####################%######################*********++++++++++**+-=**+===+++=---+*++++++++***++++++**************************************++++++++++++++=++==------------------::::::::::::::::::::::::::::::::::::::::::::-----:::::::::::::::--::::::::::::::::::::::::::::::::::::::::::::---------------------==-::::::::::::::::::::::::::::::::::::::::::::::.......::::::::::::::...... ...................................................................................::-----::........................................ ......................................................::.........................................................................................................................:::--------:::.... .................::::::::::----------===============================================================================================================================-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::...................................::::.............................:::::::::::::::..................................................................................................................................::----::................................................................................................................................::--==--::................................................................................................::---===========---:::........................................................:::::----========--:::.....................................::::::::::::::::::::::::::::::::....................................::::::::..............................................................................................................:::-==++++++++++++++++++++++++++++++++++==--:::.......::::-==++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++************++++++**+++****************************************************************************************************************************************************************************************************************################################################################################################################################################################################################################################################################################################################################################################################################################################################*********#######*********************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**************************************************************++++
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===-:::.....................................::------:-%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@%-.......................................::::-----------------------------------:::::::::--------------------------------------------------------:::::::::::::::::::::::::::::::::------------------------------======================------------------::::::::::::::::::::::::::::::::::::::::::::::---------------------------------------------------------------------------------::::::::::::::::::::::::::.........................................................................=%%%##########%##%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********#############################%%#%%#%###%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####################%######################**********+++++++++**+-++*+=-++++----*+++++++++++++++++++*************************************++++++++++++++++++=-------------------::::::::::::::::::::::::::::::::::::::::::::-----:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---------------------==:::::::::::::::::::::::::::::::::::::::::::::::......::::::::::::::..... .................................................................................:::-----:::....................................... ......................................................::.........................................................................................................................:::--------::...... ......................::::::::::-----------===============================================================================================================================----------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::...................................::::............................::::::::::::::::..................................................................................................................................::----::................................................................................................................................::--==--::................................................................................................::---============--:::.......................................................:::::----=========--:::....................................::::::::::-:::::::::::::::::::::::...................................::::::::..............................................................................................................:::-==++++++++++++++++++++++++++++++++++==--:::........:::--=+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++************************************************************************************************************************************************************************************************************************************####################################################################################################################################################################################################################################################################################################################################################################################################################################################*********########*********************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++************************+***************++****+++++++++*++***+++++++
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==--:::.....................................::------::+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@%-......................................::::-----------------------------------::::::::::::------------------------------------------------------::::::::::::::::::::::::::::::::------------------------------======================------------------::::::::::::::::::::::::::::::::::::::::::::::----------------------------------------------------------------------------------:::::::::::::::::::::::::.........................................................................-%%%#############%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%**++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********##########################%%%%%%%%%%%%#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####################%#######################**********++++++++**+-+*+===+++=---=*+++++++++++++++++++*************************************++++++++++++++++++=--------------------:::::::::::::::::::::::::::::::::::::::::::-----::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---------------------=-:::.:::::::::::::::::::::::::::::::::::::::::::.:::::::::::::::::...... .................................................................................:::--=--:::....................................... .......................................................::.........................................................................................................................:::--------::...... ......................::::::::::-----------==============================================================================================================================-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::...................................::::.............................:::::::::::::::..................................................................................................................................::----::................................................................................................................................::------::................................................................................................::---============---:::.....................................................:::::----==========--:::....................................::::::::::---:::::::::::::::::::::...................................::::::::..............................................................................................................:::--=++++++++++++++++++++++++++++++++++==--:::........:::--==++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***************************************************************************************************************************************************************************************************************************########*####################################################################################################################################################################################################################################################################################################################################################################################################################################################*********########*********************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***********************+*******++++++++++++++++++++++++++++++++++++
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==--::......................................::------:::%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@%%%%%%%%%%%%@@@@%-.....................................::::----------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--------::::::::::::::::::::::::::::::------------------------------=====================-------------------:::::::::::::::::::::::::::::::::::::::::::::::----------------------------------------------------------------------------------::::::::::::::::::::::::.........................................................................:%%%###############%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******##########################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###################%#######################***********++*++++**==+*+===+++----+#*++**+++++++++++++++***********************************+++++++++++++++++++=----------------------::::::::::::::::::::::::::::::::::::::::::----:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---------------------=-::.:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::..... ................................................................................:::-==--:::....................................... ........................................................:.........................................................................................................................:::--------::...... .......................::::::::::-----------==============================================================================================================================-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::....................................:::.............................:::::::::::::::..................................................................................................................................::----::................................................................................................................................::------::................................................................................................:::--=============--:::....................................................::::----============--:::...................................:::::::::::-----:::::::::::::::::::...................................::::::::..............................................................................................................:::--=++++++++++++++++++++++++++++++++++==--:::........:::--==++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++************************************************************************************************************************************************************************************************************************#################################################################################################################################################################################################################################################################################################################################################################################################################################################################*********######***********************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****************************++*++++++++++++++++++++++++++++++++++++
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==--::.....................................:::------::.=@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@%-...................................:::::----------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-----::::::::::::::::::::::::::::::------------------------------=====================-------------------:::::::::::::::::::::::::::::::::::::::::::::::-----------------------------------------------------------------------------------::::::::::::::::::::::...........................................................................#%%###############%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#*++*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******####################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###################%#######################************+*++++**==+++===++=---=##*+***+++++++++++++++***********************************+++++++++++++++++++=--------------------===--:::::::::::::::::::::::::::::::::::::::-----::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---------------------==:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::...... ...............................................................................::--===-:::....................................... ........................................................-.........................................................................................................................:::--------::....... ........................::::-::::::----------=============================================================================================================================------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::....................................:::.................................:::::::::::..................................................................................................................................::----::................................................................................................................................::------::................................................................................................:::--=============---:::...................................................:::----=============--:::...................................:::::::----------::::::::::::::::::...................................::::::::..............................................................................................................:::--=++++++++++++++++++++++++++++++++++==--:::........:::--==++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********************************************************************************************************************************************************************************************************************#####################################################################################################################################################################################################################################################################################################################################################################################################################################################################*********######************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**************************++++++++++++++++++++++++++++++++++++++++
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=--:::.....................................:::------::::#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@%-..................................:::::---------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---::::::::::::::::::::::::::::::------------------------------=====================--------------------::::::::::::::::::::::::::::::::::::::::::::::-----------------------------------------------------------------------------------::::::::::::::::::::::...........................................................................+%%###############%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********###################%%%%%%%%%%@@@%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###################%#######################**************++++*+==**+===++=---=***+***++++++++++++++++*********************************++++++++++++++++++++=-----=====================-::::::::::::::::::::::::::::::::::::::----::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--------------------=-:::::::::::::::::::::::::::::::::::::::::::::::::.::::::::::::..... ..............................................................................::--===--::........................................ ........................................................-.........................................................................................................................:::--------::........ ..........................::::--::::::---------=============================================================================================================================-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::....................................::..................................:::::::::::..................................................................................................................................::----::................................................................................................................................::-----:::................................................................................................:::--==============--:::..................................................:::---===============--:::..................................::::::::----------:::::::::::::::::::..................................::::::::..............................................................................................................:::--==+++++++++++++++++++++++++++++++++==--:::.........::--==++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****************************************************************************************************************************************************************************************************************#########################################################################################################################################################################################################################################################################################################################################################################################################################################################################*********######*************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++************************++++++++++++++++++++++++++++++++++++++++++
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==--:::.....................................:::------:::.=@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@%-.................................::::----------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::------------------------------=====================--------------------::::::::::::::::::::::::::::::::::::::::::::::------------------------------------------------------------------------------------:::::::::::::::::::::...........................................................................-%%%###############%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********##################%%%%%%%%%%%%%@@@@@@%%%%@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###########################################**************+++**+-=**+====+----=++++*#*++++++++++++++++********************************+++++++++++++++++++++=--====+++++++++++++++++++++=-::::::::::::::::::::::::::::::::::::-----::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::------------------=-:::::::::::::::::::::::::::::::::::::::::::::::...:::::::::::..... ..............................................................................::--===--::........................................ .........................................................-.........................................................................................................................:::--------::........ ..........................:::---::::::---------===========================================================================================================================---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::....................................::..................................:::::::::::..................................................................................................................................::----::................................................................................................................................:::----:::................................................................................................:::--==============---:::................................................::::--================--:::..................................:::::::::----------::::::::::::::::::..................................::::::::..............................................................................................................:::--==+++++++++++++++++++++++++++++++++==--:::.........::--==+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*************************************************************************************************************************************************************************************************************###########################################################################################################**********########################################################################################################################################################################################################################################################################################################################################################**********#####*************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****************+++++++++++++++++++++++++++++++++++++++++=======
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==--::......................................:::------::::.#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@%=................................::::----------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::------------------------------====================----------------------:::::::::::::::::::::::::::::::::::::::::::::-------------------------------------------------------------------------------------::::::::::::::::::::...........................................................................:%%%###############%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********##################%%%%%%%%%%%%%%%%@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###########################################**************+++**+-+**+=====----=++++*#*+++++++++++++++++*******************************++++++++++++++++++++=====++++=-:..::----==+++++++++=--::::::::::::::::::::::::::::::::::-----:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::----------------=-:::::::::::::::::::::::::::::::::::::::::::::::....:::::::::..... ............................................................................::--===--::........................................ .........................................................-.........................................................................................................................:::--------::......... .............................:::---::::::---------==========================================================================================================================----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------::::...................................::..................................:::::::::::..................................................................................................................................::----::................................................................................................................................:::----:::................................................................................................:::--===============--::::...............................................:::---================--:::..................................:::::::::-----------:::::::::::::::::..................................::::::::..............................................................................................................::::--==++++++++++++++++++++++++++++++++==--:::.........:::-==+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******************************************************************************************************************************************************************************************************##############################################################################################################*************########################################################################################################################################################################################################################################################################################################################################################**********####***************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***************++++++++++++++++++++++++++++======================
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==--::......................................:::------:::..-@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@+...............................::::----------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::------------------------------====================------------------------:::::::::::::::::::::::::::::::::::::::::::-------------------------------------------------------------------------------------::::::::::::::::::::...........................................................................:%%%###############%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********#################%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###########################################***************++**+-+**+++=+=----=++++*#*+++++++++++++++++*******************************++++++++++++++++++++==+++===:. ..:=+++++++=-:::::::::::::::::::::::::::::::::-----:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-----------------=-::.::::::::::::::::::::::::::::::::::::::::::......::::::::..... ............................................................................::-====--::........................................ .........................................................-.......................................................................:::::.............................................:::--------::......... ..............................:::----:::::---------=========================================================================================================================-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------::::...................................::..................................:::::::::::.....................................................................::........::.................................................::----::................................................................................................................................:::----:::................................................................................................:::--===============---::::..............................................:::--=================--:::.................................::::::::::----------::::::::::::::::::..................................::::::::..............................................................................................................::::--==++++++++++++++++++++++++++++++++==--:::.........:::-==+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**************************************************************************************************************************************************************************************************###################################################################################################################**************#######################################################################################################################################################################################################################################################################################################################################################***********##*****************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*************+++++++++++++++++++++++++===========================
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==--::......................................:::------:::..:#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@@%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@*:.............................::::----------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::------------------------------====================--------------------------:::::::::::::::::::::::::::::::::::::::::-------------------------------------------------------------------------------------::::::::::::::::::::............................................................................#%%###############%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******##################%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%################%########################**************+****+***+++++-----+++++*#*++++++++++++++++++*****************************++++++++++++++++++++++=-:... .:=++++++=-::::::::::::::::::::::::::::::-------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-----------------=-::::::.:::::::::::::::::::::::::::::::::::::.......::::::..... ..........................................................................:::-=====-::........................................ .........................................................:.......................................................................::::::............................................:::--------::................................................::-----::::::--------========================================================================================================================-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::...................................::..................................:::::::::::....................................................................:::::.......::................................................::----::................................................................................................................................:::----::.................................................................................................:::--================--:::::.............................................::---=================--:::.................................:::::::::::---------:::::::::::::::::...................................::::::::...............................................................................................................:::--===+++++++++++++++++++++++++++++++==--:::.........:::--=+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********************************************************************************************************************************************************************************************#######################################################################################################################***************#######################################################################################################################################################################################################################################################################################################################################################********************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******+++++++++++++++++++++++++++==============================
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==--::......................................:::------:::...-%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@*:............................::::----------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-------------------------------====================---------------------------::::::::::::::::::::::::::::::::::::::::-------------------------------------------------------------------------------------::::::::::::::::::::............................................................................+%%%###############%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******#################%%%%%%%%%%%%%%%%%%%%%#%%@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%################%########################*******************+***++++=----=+++++*#*++++++++++++++++++*****************************+++++++++++++++++++=-:....... .-=+++==:::::::::::::::::::::::::::::-------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::----------------=-:.:::::::::::::::::::::::::::::::::::::::::::........:::...... ........................................................................:::-=====-::........................................ .........................................................:......................................................................::::::::...........................................:::-------:::................................................::-----::::::--------========================================================================================================================-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------::::.......::::.......................:...................................:::::::::::....................................................................:::::.......::................................................::----::................................................................................................................................:::----::.................................................................................................:::--================---:::::...........................................:::--==================--:::.................................:::::::::::---------:::::::::::::::::...................................::::::::...............................................................................................................::::--===++++++++++++++++++++++++++++++==--:::.........:::--==+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***************************************************************************************************************************************************************************************############################################################################################################################***************#######################################################################################################################################################################################################################################################################################################################################################********************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===========================-----
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==--::......................................:::------:::....=@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@#-..........................:::::---------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-------------------------------====================---------------------------::::::::::::::::::::::::::::::::::::::::--------------------------------------------------------------------------------------:::::::::::::::::::............................................................................-@%%###############%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******################%%%%%%%%%%%%%%%%%%%%%#%%%%@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%################%##########################********************+++++=----=+++++*#*++++++++++++++++++****************************+++++++++++++++=:.............. :-++++-::::::::::::::::::::::::::::------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-----------------=-::::::::::::::::::::::::::::::::::::::::::::................ .......................................................................:::-=====-::........................................ .........................................................:......................................................................:::--:::...........................................:::-------:::................................................::------:::::--------=======================================================================================================================---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------::::....::::::..........................................................::::::::::::...................................................................::::::......:::................................................::----::................................................................................................................................::::--:::.................................................................................................:::--=================---::::::.........................................:::--==================--:::.................................:::::::::::---------::::::::::::::::.....................................:::::::...............................................................................................................::::---===+++++++++++++++++++++++++++++==--:::.........:::--==+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********************************************************************************************************************************************************************************####################################################################################*************##################################***************#######################################################################################################################################################################################################################################################################################################################################################*********************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++========================------------
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==--::......................................:::------:::.....-%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@%+.........................:::::---------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--------------------------------====================----------------------------:::::::::::::::::::::::::::::::::::::::--------------------------------------------------------------------------------------::::::::::::::::::.............................................................................:%%%################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******################%%%%%%%%%%%%%%%%%%%%%##%%%%@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#################%############################*****************++++++----=++++++*#*+++++++++++++++++*****************************+++++++++++++=:.................. .:=+++-::::::::::::::::::::::::::-------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::----------------=--:::::::::::::::::::::::::::::::::::::::::::............... .......................................................................:::-=====-::......................................... .........................................................:......................................................................:::---:::..........................................:::-------:::................................................::------::::::-------=======================================================================================================================---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::::::::::::::....................................................:::::::::::::::::...................................................................::::::......:::................................................::----::.................................................................................................................................::::-:::.................................................................................................:::---=================----:::::........................................:::--==================--:::................................::::::::::::---------:::::::::....::......................................::::::.................................................................................................................::::----===+++++++++++++++++++++++++++==--:::..........::--==+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***************************************************************************************************************************************************************************#######################################################################################****************#################################***************#######################################################################################################################################################################################################################################################################################################################################################**********************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=======================------------------
*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==--::......................................:::------::.......:#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@%*:.......................:::::---------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--------------------------------====================----------------------------:::::::::::::::::::::::::::::::::::::::--------------------------------------------------------------------------------------::::::::::::::::::..............................................................................#%%################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******##############%%%%%%%%%%%%%%%%%%%%%%%%%%##%%@@@@@@@%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#################%###########################*********************+*=----=++++++*#**++++++++++++++++****************************++*+++++++++-:...................... .:-==-::::::::::::::::::::::::--------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::----------------==:::::::::::::::::::::::::::::::::::::::::::............... .......................................................................:::-=====-::......................................... .........................................................:......................................................................::----:::..........................................::--------:::................................................:::-----::::::-------=======================================================================================================================----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------::::::::::::::................................................:::::::::::::::::::::..................................................................::::::::.....:::................................................::----::.................................................................................................................................::::::::..................................................................................................::---===================----::::......................................:::---==================--:::................................::::::::::::---------:::::::::............................................::::::..................................................................................................................:::::---===+++++++++++++++++++++++++++==--:::.........::--==+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********************************************************************************************************************************************************************#############################################################################################*****************################################***************########################################################################################################################################################################################################################################################################################################################################################**********************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=========================-------------------------
**+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==-:::.......................................::------:::.......:*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@%@@@@@@@@@@#-......................:::::---------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---------------------------------===================-----------------------------:::::::::::::::::::::::::::::::::::::::--------------------------------------------------------------------------------------::::::::::::::::::..............................................................................*%%%################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******#############%%%%%%%%%%%%%%%%%%%%%%%%#%%%##%%@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##################%#########################**********************+++=----+++++++*#**+++++++++++++++*****************************++*+++++++=:.......................... .:::::::::::::::::::::::::--------:-:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---------------=--:.:::::::::::::::::::::::::::::::::::::::::............. .....................................................................::--=====-::......................................... ..........................................................:.....................................................................:::-----::..........................................::--------:::................................................:::-----::::::-------=======================================================================================================================-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------::::::::::::::............................................:::::::::-----------::::..................................................................::::::::.....::::...............................................::----::.................................................................................................................................::::::::..................................................................................................:::--====================----::::.....................................:::--===================--:::................................::::::::::::---------::::::::.............................................::::::...................................................................................................................:::::---===++++++++++++++++++++++++++==--:::.........:::-==+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****************************************************************************************************************************************************************##################################################################################################******************################################**************########################################################################################################################################################################################################################################################################################################################################################***********************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==============================----------------------------
**+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==-:::.......................................:::----:::.........:+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@%%%%%%%%%%@@@@@@@@@@@@%+:....................:::::---------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---------------------------------===================----------------------------:::::::::::::::::::::::::::::::::-::::::--------------------------------------------------------------------------------------::::::::::::::::::..............................................................................=%%%################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****#############%%%%%%%%%%%%%%%%%%%%%%%%%%%##%%%%%%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##################%#########################**********************+++----=+++++++*#**+++++++++++++*******************************+*++++**+-............................. .:::::::::::::::::::::-----------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::----------------=-::::::::::::::::::::::::::::::::::::::::::............ ..................................................................::--=====-:::....................................... ................................................................................................................................::------::..........................................::--------:::.................................................::-----:::::::------=======================================================================================================================--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::::::::::.........................................::::::------------------:::..........................:......................................:::::::::....:::::...............................................::----::.................................................................................................................................::::::::..................................................................................................:::--=====================----:::.....................................:::--===================--:::................................::::::::::::----------:::::::..............................................::::....................................................................................................................:::::::---==+++++++++++++++++++++++++==--::::........:::--=+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***********************************************************************************************************************************************###**********######################################################################################################******************################################**************########################################################################################################################################################################################################################################################################################################################################################***********************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=======================================-------------------------------
**+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==-:::.......................................::::--::::...........=%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%@@%%%%%@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%@@@@@@@@@@@@@#-...................:::::---------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---------------------------------===================----------------------------::::::::::::::::::::::::::::::::--::::::--------------------------------------------------------------------------------------::::::::::::::::::..............................................................................:%%%#################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******############%%%%%%#%%%%%%%%%%%%%%%%%%##%%##%#%%%%@@@@@@%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###################%##########################*******************+*+*+---==+++++++*#**+++++++++++++******************************+**+*+**=:..:............................ :::::::::::::::::::::----------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::------------------::::::::::::::::::::::::::::::::::::::::::.......... .................................................................::--=====-:::....................................... ................................................................................................................................::------::..........................................::--------:::.................................................:::----:::::::------=======================================================================================================================---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::::......................................::::------==========------:::.........................:::.....................................:::::::::....:::::...............................................::---:::.................................................................................................................................:::::::...................................................................................................:::--=======================---:::....................................::---===================--:::................................::::::::::::----------:::::::..............................................::::....................................::::..............................................................................::::::--==++++++++++++++++++++++++++==--:::........:::--==++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********************************************************************************************************************************************#############################################################*****##################################################*******************################################**************########################################################################################################################################################################################################################################################################################################################################################************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++====================================--------------------------------------
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==-:::.......................................::::::::::............-%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%@@%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%@@@@@@@@@@@@@%+:................:::::---------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---------------------------------===================---------------------------:::::::::::::::::::::::::::::::::::::::::--------------------------------------------------------------------------------------::::::::::::::::::..............................................................................:#%%#################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******###########%%%%%%#%%%%%%%%%%%%%%%%%%%%########%%%#%@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###%#%%%###%%##################%%########################*********************++*+---=++++++++*#**+++++++++++*********************************++*+*+::.:::::........................... .:::::::::::::::::::----------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::----------------=-::::::::::::::::::::::::::::::::::::::::::.. .............................................................::--=====-:::....................................... ................................................................................................................................::------::..........................................::--------:::..................................................:::----::::::------=======================================================================================================================----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------::::....................................::::----=================---::::.......................:::::....................................:::::::::....:::::...............................................:::--:::..................................................................................................................................::::::...................................................................................................:::--=======================---::::...................................::---===================--:::................................::::::::::::-----::---:::::::..............................................::....................................::::::::..............................................................................:::::--==+++++++++++++++++++++++++==--::::.......:::--==++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******************************************************************************************************************************************##############################################################*********################################################*******************################################**************########################################################################################################################################################################################################################################################################################################################################################************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===========================----------------------------------------------------
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===-:::.......................................:::::::::..............:#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%@@@@@@@@@@@@@@@#-...............:::::---------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::----------------------------------==================----------------------------:::::::::::::::::::::::::::::::::::::::::--------------------------------------------------------------------------------------::::::::::::::::::...............................................................................*%%#################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++******##########%%%%%%#+#%%%%%%%%%%%%%%%%%%%%#########%%#%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#%%%#######################%#########################*********************++*=--==++++++++*#**+++++++++++********************************+**+*=:::::::::::.......................... .::::::::::::::::::----------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-----------------=-:::::::::::::::::::::::::::::::::::::::::.. .........................................................::--=====-:::....................................... ................................................................................................................................::------:::........................................:::--------:::..................................................:::----:::::::-----=======================================================================================================================-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------::::..................................:::---======+++++++++=======--:::.......................:::::....................................::::::::::..::::::...............................................::::-:::..................................................................................................................................::::::...................................................................................................:::--========================---:::..................................:::---===================--:::................................::::::::::::----------:::::::..............................................::..................................::::::::::...............................................................................::::--==+++++++++++++++++++++++++===-::::.......:::--==++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***************************************************************************************************************************************#################################################################**********###############################################*******************################################**************########################################################################################################################################################################################################################################################################################################################################################*************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=====================--------------------------------------------------------------
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===-:::.......................................:::::::::................+%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@@@@@@@@@@@@@@%*:.............:::::---------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::----------------------------------==================------------------------:::::::::::::::::::::::::::::::::::::::::::::---------------------------------------------------------------------------------------:::::::::::::::::...............................................................................=%%%################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#%%%#*++++++++++++++++++++++++++++++++++++++++++++++++++++++*******#########%%%%%%%%--#%%%%%%%%%%%%%%%%%%%%#############%@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##################################################*******************++*+=--=+++++++++*#**++++++++++**********************************++*=::::::::::::::........................ .:::::::::::::::::-----------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::----------------=--:::::::::::::::::::::::::::::::::::::::::. ........ ...........................................::-======--::....................................... ................................................................................................................................::------:::........................................:::--------:::...................................................::----:::::::-----=======================================================================================================================------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------::::................................:::--====+++++++++++++++++====--::......................:::::::...................................::::::::::.:::::::...............................................:::::::...................................................................................................................................::::::...................................................................................................:::--=========================--:::..................................:::--====================--:::................................::::::::::::----------::::::................................................:.................................::::::::::::...............................................................................::::-===+++++++++++++++++++++++++==--:::.......::::-==+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********************************************************************************************************************************#####################################################################***********###############################################********************###############################***************########################################################################################################################################################################################################################################################################################################################################################*************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++================----------------------------------------------------------------------
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==--:::.......................................::::::::..................:+%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@@@@@@@@@@@@@@@@%=............:::::---------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::----------------------------------==================-----------------------::::::::::::::::::::::::::::::::::::::::::::::---------------------------------------------------------------------------------------:::::::::::::::::...............................................................................:%%%#################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#%#%#*++++++++++++++++++++++++++++++++++++++++++++++++++++******##########%%%%%%##%:-%%%%%%%%%%%%%%%%%%%%%%##########%#%@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###################################################*******************++++=--=+++++++++*#*+++++++++++*********#**********************++*+-:::::::::::::::::....................... .-:::::::::::::::------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::----------------=--::::::::::::::::::::::::::::::::::::::::. ..........................................::-======--::....................................... ................................................................................................................................:::-----:::........................................:::--------:::...................................................::----:::::::-----=======================================================================================================================------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------::::...............................::--====++++++++++++++++++++===--::......................:::::::...................................:::::::::::::::::::..............................................:::::::...................................................................................................................................::::::...................................................................................................:::---========================---:::.................................:::--====================--:::................................:::::::::::::---------::::::.................................................................................::::::::::::::...............................................................................:::-===+++++++++++++++++++++++++==--::::......::::-==+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******************************************************************************************************************************#######################################***##############################***********###############################################********************###############################***************########################################################################################################################################################################################################################################################################################################################################################**************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++============----------------------------------------------------------------------------
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==--:::........................................::::::......................-*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#-..........:::::---------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::----------------------------------==================----------------------:::::::::::::::::::::::::::::::::::::::::::::::---------------------------------------------------------------------------------------::::::::::::::::................................................................................:#%%#################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#%%%%#%#*++++++++++++++++++++++++++++++++++++++++++++++++++******#########%%%%%%%%+#%:=%%%%%%%%%%#%%%%%%%%%%%##########%##@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##%%%###########################%#######################*******************++++--=++++++++++*#*+*+++++++**********##*********************++*+::::::::::::::::::::::..................... .-:::::::::::::::-----------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-------------------::::::::::::::::::::::::::::::::::::::::. ....................................::-===+==--::....................................... .................................................................................................................................:::----:::........................................:::--------:::...................................................:::----::::::-----=======================================================================================================================-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::..............................::--==+++++++++++++++++++++++++==-:::.....................:::::::..................................::::::::::::::::::::..............................................:::::::....................................................................................................................................:::::...................................................................................................:::---=========================--:::................................:::---====================--:::................................:::::::::::::--------:::::::.................................................................................::::::::::::::...............................................................................:::--==+++++++++++++++++++++++++==--::::......::::-==+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++************************************************************************************************************************#########################################**********############################**********###############################################********************###############################***************########################################################################################################################################################################################################################################################################################################################################################**************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=========--------------------------------------------------------------------------------
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==--:::.........................................::::.........................=@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%+:........::::----------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::----------------------------------==================----------------------:::::::::::::::::::::::::::::::::::::::::::::::---------------------------------------------------------------------------------------::::::::::::::::.................................................................................*@%#################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#%%%%%%#*+++++++++++++++++++++++++++++++++++++++++++++++++****##########%%%%%%%%#=#%:=%%%%%%%%%%%%%%%%%%%%%%%##########%#%@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#%%############################%#######################*******************+*++--=++++++++++*#*+*+++++++**********#************************+:.:::::::::::::::::::::::................... .--:::::::::::::------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::----------------==--:::::::::::::::::::::::::::::::::::::::. ...............................::-==++==--::....................................... .................................................................................................................................:::::::::.........................................:::--------:::...................................................:::----::::::------=====================================================================================================================--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::.............................::--==++++++++++++++++++++++++++==--::....................::::::::..................................::::::::::::::::::::...............................................::::::....................................................................................................................................::::.....................................................................................................:::--=========================---:::...............................:::---====================--:::................................::::::::::::::------::::::::................................................................................:::::::::::::::...............................................................................:::--==+++++++++++++++++++++++++==--::::......::::-==++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***************************************************************************************************************###############################################**************##########################**********###############################################*********************##############################***************########################################################################################################################################################################################################################################################################################################################################################***************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++========----------------------------------------------------------------------------------
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==--::........................................................................-#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%=:......::::----------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.:::::----------------------------------=================----------------------::::::::::::::::::::::::::::::::::::::::::::::::--------------------------------------------------------------------------------------:::::::::::::::::.................................................................................=%%%#################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#*++++++++++++++++++++++++++++++++++++++++++++++*****#########%%%%%%%%%%#=#%-+%%%%%%%%%%%%%%%%%%%%%%%############%@@@@%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%############################%#######################******************++**+-=+++++++++++*#*+*++++++**********##*********************++=::::::::::::::::::::::::::::.................. -::::::::::::::------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---------------------::::::::::::::::::::::::::::::::::::::. .........................::--==+++=--::....................................... ..................................................................................................................................::::::::.........................................:::--------:::...................................................:::-----:::::------=====================================================================================================================--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::............................::--==+++++++++++++++++++++++++++==--::....................:::::::::.................................::::::::::::::::::::...............................................:::::.......................................................................................................................................::.....................................................................................................:::--=========================---:::...............................:::--=====================--:::................................::::::::::::::::::--:::::::.................................................................................:::::::::::::::...............................................................................:::--==+++++++++++++++++++++++++==--::::.....:::::-==+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********************************************************************************************************##################################################*****************#########################***********##############################################*********************##############################****************########################################################################################################################################################################################################################################################################################################################################################***************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++========------------------------------------------------------------------------------------
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==--::..........................................................................=%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#=:....::::----------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.:::::----------------------------------=================----------------------::::::::::::::::::::::::::::::::::::::::::::::::--------------------------------------------------------------------------------------:::::::::::::::::.................................................................................:%%%#################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#*++++++++++++++++++++++++++++++++++++++++++++*****########%%%%%%%%%%%%*=#%-*%%%%%%%%%%%%%%%%%%%%%%%#############@@@@%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%###########################%%#######################******************+++*+-++++++++++++*#*+*++++++**********#**********************+=::::::::::::::::::::::::::::::................. ::::::::::::::-------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-----------------------::::::::::---=-----:::::::::::::::::. ........................::--==+++=--::....................................... ...................................................................................................................................::::::..........................................:::--------:::...................................................:::-----:::::------=====================================================================================================================--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::............................::-==+++**+++++++++++++++++++++++==--::....................:::::::::.................................::::::::::::::::::::...............................................:::::.......................................................................................................................................:......................................................................................................:::--==========================--:::..............................::::--====================---:::................................:::::::::::::::::::::::::::.................................................................................::::::--:::::::................................................................................::--==+++++++++++++++++++++++++==--::::....:::::--==++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******************************************************************************************************####################################################*****************#########################***********##############################################*********************##############################****************########################################################################################################################################################################################################################################################################################################################################################***************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++========--------------------------------------------------------------------------------------
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==--::............................................................................=%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#=:..::::----------------------------------:::::::---------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::..:::::----------------------------------=================----------------------::::::::::::::::::::::::::::::::::::::::::::::::--------------------------------------------------------------------------------------:::::::::::::::::.................................................................................:#%%#################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#+++++++++++++++++++++++++++++++++++++++++++*****######%%%%%%%%%%%%%%%*=#%-*%%%%%%%%#=###%%%%%%%%%%#####%####%##%@@@@%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#########################%#########################*****************++**==++++++++++++****++++++**********##*********************+=:::::::::::::::::::::::::::::::::................ ::::::::::::::-------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::----------------=----------------===------::::::::::::::::.. ........................::--==+++==-:::...................................... .....................................................................................................................................:::...........................................:::--------:::....................................................::------:::------=--===================================================================================================================--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::...........................::-==++****+++++++++++++++++++++++==--::...................::::::::::................................::::::::::::::::::::::..............................................:::::..............................................................................................................................................................................................................................................:::--==========================---:::.............................:::---====================---:::................................::::::::::::::::----:::::::................................................................................:::::::--:::::::................................................................................::--==+++++++++++++++++++++++++==--:::::::::::::--==++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***************************************************************************************************######################################################*******************#########################**********##############################################*********************###############################***************########################################################################################################################################################################################################################################################################################################################################################****************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++==========---------------------------------------------------------------------------------------
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==--::.............................................................................:+%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%+-::::----------------------------------::::::---------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::..:::::----------------------------------=================----------------------::::::::::::::::::::::::::::::::::::::::::::::::--------------------------------------------------------------------------------------:::::::::::::::::..................................................................................*%%##################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#++++++++++++++++++++++++++++++++++++++++*****#######%%%%%%%%%%%%%%%%#+#%-*%%%%%%%%-.+%#%%%%%%%%%%#############%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#########################%#########################*****************++*+==++++++++++++*****++++***********##********************+=:::::::::::::::::::::::::::::::::::............... :::::::::::::-------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---------------=----------------===--=---:::::::::::::::::. .......................::--==+++==-::....................................... ...................................................................................................................................................................................:::--------:::....................................................::------------------===================================================================================================================--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::...........................::-=+++****+++++++++++++++++++++++==--::........::........:::::::::::................................::::::::::::::::::::::.............................................::::::..............................................................................................................................................................................................................................................:::---=========================---:::.............................:::--=====================---:::................................::::::::::::::::::::::::::.................................................................................:::::::--:::::::................................................................................:::-==+++++++++++++++++++++++++==--:::::::::::---===++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++************************************************************************************************#########################################################*******************#########################**********##############################################*********************###############################***************########################################################################################################################################################################################################################################################################################################################################################*****************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++=============---------------------------------------------------------------------------------------
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==--::................................................................................:-+#%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#+=-----------------------------------:::::------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::..:::::----------------------------------=================----------------------::::::::::::::::::::::::::::::::::::::::::::::::--------------------------------------------------------------------------------------:::::::::::::::::..................................................................................=%%%#################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*++++++++++++++++++++++++++++++++++++++*****######%%%%%%%%%%%%%%%%%%#*#%-#%%%%%%%%:.:%%#%%%%%%%%%#%#######%#%##@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#########################%#########################*****************++*+++++++++++++++******+++***********#********************+=:::::::::::::::::::::::::::::::::::::............... .:::::::::::::-------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---------------=----=----==---====--===--:::::::::::::::::. .....................::--==+++==-::....................................... ...................................................................................................................................................................................:::--------:::....................................................::------------------===================================================================================================================--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::..........................::-==+******+++++++++++++++++++++++==-::......:::::::::....:::::::::::................................::::::::::::::::::::::.............................................:::::...............................................................................................................................................................................................................................................:::---==========================--:::............................:::---=====================---:::................................::::::::::::::::::::::::::..................................................................................:::::::::::::::................................................................................:::--=+++++++++++++++++++++++++==--::::::::-----===+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******************************************************************************************##############################################################*******************########################************#############################################*********************###############################***************########################################################################################################################################################################################################################################################################################################################################################******************************************************++++++++++++++++++++++++++++++++++++++++++++++++==============----------------------------------------------------------------------------------------
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==--::.........................................................................................:-+#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%*+=------=-----------------------::::::-----------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::..:::::----------------------------------================-----------------------::::::::::::::::::::::::::::::::::::::::::::::::--------------------------------------------------------------------------------------:::::::::::::::::..................................................................................-%%%#################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#%%*+++++++++++++++++++++++++++++++++++******#####%%%%%%%%%%%%%%%%%%%%%#%%-#%%%%%%%%:.:#%#%%%%%%%%%%%######%%#%%#%@@@@@@@@@@%@%%%%%%%%%%%%%%%%%%%%%%%%%%#########################%##########################****************++*+++++++++++++++******++***********##*******************+--::::::::::::::::::::::::::::::::::::::.............. .::::::::::::--------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-------------------=---------====--===--::::::::::::::::::. ....................::--==+++==-::....................................... ...................................................................................................................................................................................:::--------:::....................................................::------------------===================================================================================================================--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::..........................::-=++******+++++++++++++++++++++++==-::......:::::::::::::::::::::::::...............................::::::::::::::::::::::.............................................:::::................................................................................................................................................................................................................................................::---==========================---::............................:::---=====================---:::................................:::::::::::::::::::::::::...................................................................................:::::::::::::::................................................................................:::--=+++++++++++++++++++++++++===---:::------====++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****************************************************************************************##################################################################******************########################************#############################################**********************##############################***************########################################################################################################################################################################################################################################################################################################################################################******************************************************+++++++++++++++++++++++++++++++++++++++++++++++=============------------------------------------------------------------------------------------------
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==--::.........................................................................................-#%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#++==--------------------------:::::::--------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::..:::::----------------------------------===============------------------------::::::::::::::::::::::::::::::::::::::::::::::::--------------------------------------------------------------------------------------:::::::::::::::::..................................................................................:%%%##################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#%%#%#*+++++++++++++++++++++++++++++++++******#####%%%%%%%%%%%%%%%%%%%%%%*%%=#%%%%%%%%:..#%#%%%%%%%%%%%######%%#%%#%@@@@@@@@%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%########################%##########################***************++**+++++++++++++++*#*****************##******************+--::.::::::::::::::::::::::::::::::::::::::............. .:::::::::::---------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--------------------==---=======----=--::::::::::::::::::.. ....................::--=++++==-::....................................... ..................................................................................................................................................................................:::--------:::....................................................::-------------------==================================================================================================================--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::..........................:-==+*******+++++++++++++++++++++++=--::......:::::::::::::::::::::::::...............................::::::::::::::::::::::.............................................:::::................................................................................................................................................................................................................................................:::--==========================---:::...........................:::--======================---:::................................:::::::::::::::::::::::::...................................................................................:::::::::::::::................................................................................:::--=++++++++++++++++++++++++++==---------======++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********************************************************************************#########################################################################******************########################************#############################################**********************##############################***************#######################################################################################################################################################################################################################################################################################################################################################********************************************************+++++++++++++++++++++++++++++++++++++++++++++==========----------------------------------------------------------------------------------------------
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==--::.........................................................................................:#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#+++==------------------------::::::::----------------------------------------:::::::::::::::::::::::::::::::::::::::::::...:::::-----------------------------------==============------------------------::::::::::::::::::::::::::::::::::::::::::::::::--------------------------------------------------------------------------------------:::::::::::::::::...................................................................................*%%##################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#%%#++++++++++++++++++++++++++++++++******####%%%%%%%%%%%%%%%%%%%%%%%%#%%+#%%%%%%%%:..*%#%%%%%%%%%%%%#%%%%%%%###%@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######################%%##########################***************++**+++++++++++++++*#*****************#******************+-::::.:::::::::::::::::::::::::::::::::::::::............ ::::::::::::---------------:::::::::::::::::::::::::::::::::::::::::::-:::::::::::::::::::-----------------------------=====-----:::::::::::::::::::. ...................::-==++++==-::....................................... ..................................................................................................................................................................................:::--------:::....................................................::-------------------==================================================================================================================--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::.........................::-=++******+++++++++++++++++++++++==--::.....:::::::::::::::::::::::::::..............................::::::::::::::::::::::.............................................:::::................................................................................................................................................................................................................................................:::--===========================--:::..........................:::---======================---::..................................:::::::::::::::::::::::.....................................................................................:::::::::::::.................................................................................:::--==+++++++++++++++++++++++++===------======++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******************************************************************************###############################################################################******************########################************#############################################**********************##############################***************###################################################################################################################################################################################################################################################################***#################################################################################*********************************************************++++++++++++++++++++++++++++++++++++++++++++========------------------------------------------------------------------------------------------------
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==--::.........................................................................................:#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@*+++=-----------------------::::::::::::::::::::----------------------------------::::::::::::::::::::::::::::::::::::::...:::::-----------------------------------==============------------------------::::::::::::::::::::::::::::::::::::::::::::::::--------------------------------------------------------------------------------------:::::::::::::::::...................................................................................=%%%##################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*++++++++++++++++++++++++++++++*****#####%%%%%%%%%%%%%%%%%%%%%%%%%#%#*%%%%%%%%%:..+%%%%%%%%%%%%%%%%%%%%#%####@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######################%%##########################***************++***++++++++++++++******************##******************=::::..::::::::::::::::::::::::::::::::::::::::............ :::::::::::----------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-------------=---=----===============-:::::::::::::::::::... ..................::-==++++==-::....................................... ..................................................................................................................................................................................::---------::.....................................................::-------------------==================================================================================================================--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::.........................:--=+*******+++++++++++++++++++++++==--::.....:::::::::::::::::::::::::::..............................::::::::::::::::::::::.............................................:::::................................................................................................................................................................................................................................................:::---==========================--:::.........................::::--=======================--:::..................................::::::::::::::::::::::......................................................................................::::::::::::...................................................................................::--==++++++++++++++++++++++++++===----=====++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**************************************************************************######################################################################################*****************########################************#############################################***********************#############################***************#################################################################################################################################################################################################################################################################*******###############################################################################**********************************************************++++++++++++++++++++++++++++++++++++++++++========-------------------------------------------------------------------------------------------------
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==-:::.........................................................................................-%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@@@@@@@@@@@@@@@@@@@%++++=----------------------:::::::::::::::::::::----------------------------------:::::::::::::::::::::::::::::::::::::...:::::-----------------------------------==============------------------------::::::::::::::::::::::::::::::::::::::::::::::::--------------------------------------------------------------------------------------:::::::::::::::::...................................................................................-%%%##################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*+++++++++++++++++++++++++++******####%%@%%%%%#%%%%%%%%%%%%%%%%%%#%#*%%%%%%%%%:..-%#%%@%%%%%%%%%%%%%%##%#%##%@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######################%%###########################**************+++**++++++++++++++******************#****************#*+-:::.::::::::::::::::::::::::::::::::::::::::::::.......... :::::::::::---------------:::::::::::::::::::::::::::::::::::::::::::--:::::::::::::::::::------------==--=-------============--:::::::::::::::::::... .................::-==++++==-::....................................... ..................................................................................................................................................................................::---------::.....................................................::-------------------==================================================================================================================--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::.........................:-==+*******+++++++++++++++++++++++==-:::.....:::::::::::::::::::::::::::...............................:::::::::::::::::::::.............................................::::.................................................................................................................................................................................................................................................:::---==========================---::.........................:::---=======================--:::..................................:::::::::::::::::::::........................................................................................:::::::::::...................................................................................::--==++++++++++++++++++++++++++====--=====++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**************************************************************************#########################################################################################*****************########################************#############################################***********************#############################***************################################################################################################################################################################################################################################################################********##############################################################################************************************************************++++++++++++++++++++++++++++++++++++++++========--------------------------------------------------------------------------------------------------
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==-:::........................................................................................:+%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#+++=----------------------::::::::::::::::::::::::::::::::::::::::::----------::::::::::::::::::::::::::::::::::::::::...:::::-----------------------------------==============-------------------------:::::::::::::::::::::::::::::::::::::::::::::::--------------------------------------------------------------------------------------::::::::::::::::....................................................................................:#%%##################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#*+++++++++++++++++++++++++******###%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%##%%%%%%%%%:..-%#%%%%%%%%%%%%%%%%##%%#%%#%@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####################%%%##########################**************++***++++++++++++++*#********************************##+=:::.::::::::::::::::::::::::::::::::::::::::::::::.......... .::::::::::----------------:::::::::::::::::::::::::::::::::::::::::::--:::::::::::::::::::-----------===----------=-========---::::::::::::::::::::... ................::-==++++==-::....................................... ..................................................................................................................................................................................::---------::.....................................................::------------------===================================================================================================================--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::........................::-=++*******+++++++++++++++++++++++==-::......::::::::::::::::::::::::::::..............................:::::::::::::::::::::..............................................::...................................................................................................................................................................................................................................................::---===========================--:::........................:::--========================--:::..................................::::::::::::::::::::..........................................................................................::::::::.....................................................................................:::-==++++++++++++++++++++++++++====-=====++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********************************************************************################################################################################################******************#######################***********##############################################************************###########################****************################################################################################################################################################################################################################################################################***+++***#############################################################################*************************************************************+++++++++++++++++++++++++++++++++++++++=======---------------------------------------------------------------------------------------------------
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===-:::........................................................................................#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%*+++=--------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::...:::::-----------------------------------==============-------------------------:::::::::::::::::::::::::::::::::::::::::::::::--------------------------------------------------------------------------------------::::::::::::::::.....................................................................................*%%##################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#*++++++++++++++++++++++*******##%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*#%%%%%%%%%-..-%#%%%%%%%%%%%%%%%%#####%##%@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####################%%###########################**************+****++++++++++++++*#********************************#*+-::..:::::::::::::::::::::::::::::::::::::::::::::::......... :::::::::::----------------:::::::::::::::::::::::::::::::::::::::::::--::::::::::::::::::-----------===---------==-========--:::::::::::::::::::::..... ................::-==++++==-::....................................... ..................................................................................................................................................................................::---------::.....................................................::------------------===================================================================================================================--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::........................::-=+*******++++++++++++++++++++++++==-::......::::::::::::::::::::::::::::...............................::::::::::::::::::::..............................................::...................................................................................................................................................................................................................................................:::--===========================--:::.......................:::---========================--:::..................................:::::::::::::::::::.............................................................................................:::::......................................................................................:::-==++++++++++++++++++++++++++===----====++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******************************************************************######################################################################################################******************#######################***********##############################################************************###########################****************###############################################################################################################################################################################################################################################################***++++***#############################################################################*************************************************************+++++++++++++++++++++++++++++++++++++++=======---------------------------------------------------------------------------------------------------
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==--::........................................................................................:@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%+++=--------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::...:::::-----------------------------------==============-------------------------:::::::::::::::::::::::::::::::::::::::::::::::--------------------------------------------------------------------------------------::::::::::::::::.....................................................................................=%%%##################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#%%%*++++++++++++++++++++******##%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*#%%%%%%%%%-..:##%%%%%%%%%%%%%%%%########%@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####################%%############################*************+****++++++++++++++*#*******************************##*=::..:::::::::::::::::::::::::::::::::::::::::::::::::......... ::::::::::-----------------::::::::::::::::::::::::::::::::::::-::::::-:::::::::::::::::::----------=-=-----===-==-=========-:::::::::::::::::::::...... ...............::-==++++==-::....................................... ..................................................................................................................................................................................::---------::.....................................................::------------------===================================================================================================================--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::........................::-=+*******++++++++++++++++++++++++=--::......:::::::::::::::::::::::::::::...............................::::::::..:::::::::...................................................................................................................................................................................................................................................................................................:::--===========================--:::.......................:::--=========================--:::...................................:::::::::::::::::................................................................................................::.......................................................................................:::--=++++++++++++++++++++++++++==------===+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****************************************************************###########################################################################################################******************#######################***********##############################################*************************##########################****************###############################################################################################################################################################################################################################################################***+++++***############################################################################**************************************************************++++++++++++++++++++++++++++++++++++++======----------------------------------------------------------------------------------------------------
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==--::........................................................................................#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@*+++=-------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::...:::::-----------------------------------==============-----------------------:::::::::::::::::::::::::::::::::::::::::::::::::--------------------------------------------------------------------------------------::::::::::::::::.....................................................................................-%%%##################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#%%%#++++++++++++++++++****###%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*#%%%%%%%%%-..:##%%%%%%%%%%%%%%%%#########%@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####################%%############################******************++++++++++++++*#*******************************#*+-:..:::::::::::::::::::::::::::::::::::::::::::::::::::......... .:::::::::------------------::::::::::::::::::::::::::::::::::::-:::::--::::::::::::::::::------------=-----================-::::::::::::::::::::::...... ..............::-==++++==-::....................................... ..................................................................................................................................................................................::---------::.....................................................::-------------------==================================================================================================================-----------------------------------------------------------------------------------------------------------------------------------::::::---------------------------------------------------------------:::........................:-==+*******++++++++++++++++++++++++=--::......:::::::::::::::::::::::::::::.................................:::......::::::::...................................................................................................................................................................................................................................................................................................:::--===========================---::......................:::---========================---:::...................................:::::::::::::::::.........................................................................................................................................................................................:::--==+++++++++++++++++++++++++==-------==+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*************************************************************###################################################################################################################*******************######################***********##############################################**************************#########################****************###############################################################################################################################################################################################################################################################***+++++***############################################################################***************************************************************+++++++++++++++++++++++++++++++++++++=======---------------------------------------------------------------------------------------------------
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==--::......................................................................................-#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%+++=-------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::....:::::-----------------------------------=============------------------------:::::::::::::::::::::::::::::::::::::::::::::::::--------------------------------------------------------------------------------------::::::::::::::::.....................................................................................:#%%##################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#%%%#%%#*+++++++++++++++***##%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*#%%%%%%%%%-..:#%#%%%%%%%%%%%%%%%%########%@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###################%%#############################*****************++++++++++++++*#******************************##+=::..::::::::::::::::::::::::::::::::::::::::::::::::::::........ ::::::::::------------------::::::::::::::::::::::::::::::::::::-:::::-:::::::::::::::::::-----------=-----===============--:::::::::::::::::::::::...... ............::-==++++==-::....................................... ..................................................................................................................................................................................::---------::.....................................................::-------------------==================================================================================================================-----------------------------------------------------------------------------------------------------------------------------------:::::::::------------------------------------------------------------:::........................:-=++*******+++++++++++++++++++++++==--::......::::::::::::::::::::::::::::::.........................................:::::::::..................................................................................................................................................................................................................................................................................................:::--============================--:::.....................:::--=========================---:::....................................:::::::::::::::...........................................................................................................................................................................................::--==+++++++++++++++++++++++++==-------==++++++++++++++++++++++++++++++++++++++++++++++++++++++++************************************************************#######################################################################################################################*******************#######################***********#############################################*********************************##################****************###############################################################################################################################################################################################################################################################**++++++***###########################################################################*****************************************************************++++++++++++++++++++++++++++++++++++========--------------------------------------------------------------------------------------------------
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==--::.........................................................................::-==+++++*#%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#+++=------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::....:::::-----------------------------------=============------------------------:::::::::::::::::::::::::::::::::::::::::::::::::--------------------------------------------------------------------------------------:::::::::::::::.......................................................................................*%%%#################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#%%#*++++++++++++***##%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#%%%%%%%%%%=..:#%#%%%%%%%%%%%%%%%%%%######%@@@@@@@%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##################%%%%############################*****************++++++++++++++*#*****************************##*+-:...:::::::::::::::::::::::::::::::::::::::::::::::::::::......... :::::::::--------------------:::::::::::::::::::::::::::::::::::-:::::-::::::::::::::::::-----------=------=---==========-:::::::::::::::::::::::::....... ..........::-==++++=--::....................................... ..................................................................................................................................................................................::---------::.....................................................::--------------------================================================================================================================-------------------------------------------------------------------------------------------------------------------------------------:::::::::-----------------------------------------------------------:::.......................::-=++*******+++++++++++++++++++++++==-:::......::::::::::::::::::::::::::::::.........................................:::::::::..................................................................................................................................................................................................................................................................................................:::---===========================--:::....................:::---=========================---:::....................................:::::::::::::::...........................................................................................................................................................................................::--==+++++++++++++++++++++++++==---:---==++++++++++++++++++++++++++++++++++++++++++++++++++++++************************************************#####################################################################################################################################********************######################***********#############################################***********************************###############*****************###############################################################################################################################################################################################################################################################**+++++++**###########################################################################******************************************************************++++++++++++++++++++++++++++++++++==============------==============================---------------------------------------------------------
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==--::.....................................................................:+%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@*++=-----------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::....:::::-----------------------------------==========--------------------------::::::::::::::::::::::::::::::::::::::::::::::::::--------------------------------------------------------------------------------------:::::::::::::::.......................................................................................=%%%%#################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#%#%%%%%#*+++++++++**##%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%=...#%#%%%%%%%%%%%%%%%%%%######%@@@@@@@%@%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#################%%%#############################*****************++++++++++++++*#*****************************##+=-...:::::::::::::::::::::::::::::::::::::::::::::::::::::::......... .:::::::::--------------------::::::::::::::::::::::::::::::::::--::::--::::::::::::::::::-------=--=--=-------=====-====-::::::::::::::::::::::::::....... ......... ........::-==++++=--::....................................... ..................................................................................................................................................................................::---------::.....................................................::--------------------================================================================================================================--------------------------------------------------------------------------------------------------------------------------------------:::::::::----------------------------------------------------------:::.......................::-=+*******++++++++++++++++++++++++==-::......:::::::::::::::::::::::::::::::::.......................................:::::::::...................................................................................................................................................................................................................................................................................................::---===========================--:::....................:::---=========================---:::.....................................:::::::::::::............................................................................................................................................................................................::--==+++++++++++++++++++++++++==-------==+++++++++++++++++++++++++++++++++++++++++++++++++++++****************************************###############################################################################################################################################*******************######################***********#############################################************************************##############*****************###############################################################################################################################################################################################################################################################**+++++++**##########################################################################********************************************************************+++++++++++++++++++++++++++++++++=====================================================------------------------------------------------------
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==--::...............................................::::::............-#@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#+++-----------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::....:::::-----------------------------------==========--------------------------::::::::::::::::::::::::::::::::::::::::::::::-:::--------------------------------------------------------------------------------------:::::::::::::::.......................................................................................:%%%%#################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##*****##%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#%%%%%%%##=...#%#%#%%%%%%%%%%%%%%%%#%%###%@@@@@@@%@%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#################%%%#############################*****************++++++++++++++*#****************************##*+-::..::::::::::::::::::::::::::::::::::::::::::::::::::::::::........ :::::::::--------------------:::::::::::::::::::::::::::::::::::--::::-::::::::::::::::::--=--===--=--=-------=====-===--:::::::::::::::::::::::::::...... .............. .......::-==++++=--::....................................... ..................................................................................................................................................................................::---------::.....................................................::--------------------===-============================================================================================================--------------------------------------------------------------------------------------------------------------------------------------:::::::::----------------------------------------------------------:::.......................::-=+*******++++++++++++++++++++++++==-::.....:::::::::::::::::::::::::::::::::::......................................:::::::::...................................................................................................................................................................................................................................................................................................:::--===========================---::...................::::--==========================---:::......................................:::::::::::.............................................................................................................................................................................................:::-==+++++++++++++++++++++++++==-------==+++++++++++++++++++++++++++++++++++++++++++++++++++++***********************########*#######################################################################################################################################################*******************######################***********##############################################***********************************###############****************###############################################################################################################################################################################################################################################################***++++++**#########################################################################**********************************************************************+++++++++++++++++++++++++++++++++====================================================--==--------------------------------------------------
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==--::.............................................::::::::::.........%@@@@@%%%%%%%@@@@@@@@@@@@@@@@%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@*++=----------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.....::::------------------------------------==========---=-----------------------:::::::::::::::::::::::::::::::::::::::::::::::::-------------------------------------------------------------------------------------::::::::::::::::........................................................................................*%%%#################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##%#%%#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#+...#%#%%%%%%%%%%%%%%%#%##%####%@@@@@@%%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#################%%%%#############################****************++++++++++++++*#****************************##*=-::.::::::::::::::::::::::::::::::::::::::::::::::::::::::::::........ ::::::::::---------------------::::::::::::::::::::::::::::::::::-:::::-:::::::::::::::::-------==--=----------=========:::::::::::::::::::::::::::::...... ................. ....::-==+++==--::....................................... ..................................................................................................................................................................................::---------::.....................................................::----------------------==============================================================================================================---------------------------------------------------------------------------------------------------------------------------------------:::::::-----------------------------------------------------------:::.......................:--=+*******++++++++++++++++++++++++==-::......:::::::::::::::::::::::::::::::::::.....................................:::::::::...................................................................................................................................................................................................................................................................................................:::--===========================---::...................:::---==========================---::........................................:::::::::..................................................................:...........................................................................................................................:::-==++++++++++++++++++++++++++==-----===+++++++++++++++++++++++++++++++++++++++++++++++++++++*********************##################################################################################################################################################################*******************######################***********##############################################*************************************###########*******************##############################################################################################################################################################################################################################################################***++++++**#########################################################################***********************************************************************++++++++++++++++++++++++++++++++======================================================----------------------------------------------------
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==--::...........................................:::::::::::::::....:%@@@@%%%%%%%@@@@@%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%++=----------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.....::::------------------------------------==========--------------------------::::::::::::::::::::::::::::::::::::::::::::::::::-------------------------------------------------------------------------------------::::::::::::::::........................................................................................+%%##################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%%%%%%%##%%%%%%%##%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#+...#%#%%%%%%%%%%%%%%%%%##%####%@@@@@@@%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%################%%%%#############################*****************+++++++++++++*#***************************##*+=:.:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::........ -::::::::---------------------:::::::::::::::::::::::::::::::::::-::::--:::::::::::::::::-==-=------==--------=========:::::::::::::::::::::::::::::....... ................... ....::-==+++==-::........................................ ..................................................................................................................................................................................::---------::.....................................................::----------------------==============================================================================================================---------------------------------------------------------------------------------------------------------------------------------------:::::::-----------------------------------------------------------:::.......................:-==+*******+++++++++++++++++++++++==--::.....:::::::::::::::::::::::::::::::::::::....................................:::::::::...................................................................................................................................................................................................................................................................................................:::--===========================---:::..................:::--===========================--:::..........................................:::::....................................................................:...........................................................................................................................:::-==++++++++++++++++++++++++++====-====++++++++++++++++++++++++++++++++++++++++++++++++++++++*******************####################################################################################################################################################################*******************######################************#############################################*************************************###########*******************##############################################################################################################################################################################################################################################################***++++++**########################################################################************************************************************************++++++++++++++++++++++++++++++++=======================================================---------------------------------------------------
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==--::..........................................::::::::::::::::....%@@@@@%@@@@@@@@@@%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@*++----------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.....::::------------------------------------==========-------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::-------------------------------------------------------------------------------------::::::::::::::::........................................................................................-%%###################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####%%%%%%%*#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#%%#%%%%##+...#%#%%%%%%%%%%%%%%%%%##%####%@@@@@@@%%@%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###############%%%%%##############################****************+++++++++++++*#***************************##*=-::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::........ .-::::::::---------------------::::::::::::::::::::::::::::::::::--::::--:::::::::::::::::-=--=------=--------===-=====:::::::::::::::::::::::::::::::...... ..................... ....::-==+++==-::........................................ ..................................................................................................................................................................................::---------::.....................................................::-----=---------------===============================================================================================================----------------------------------------------------------------------------------------------------------------------------------------:--::------------------------------------------------------------:::.......................:-=++*******+++++++++++++++++++++++==--::.....::::::::::::::::::::::::::::::::::::::...................................:::::::::...................................................................................................................................................................................................................................................................................................:::---===========================--:::.................:::---===========================--:::...................................................................................................................:...........................................................................................................................:::--=+++++++++++++++++++++++++++=======+++++++++++++++++++++++++++++++++++++++++++++++++++++++******************#####################################################################################################################################################################*******************######################*************############################################*************************************###########*******************##############################################################################################################################################################################################################################################################***++++++**########################################################################*************************************************************************+++++++++++++++++++++++++++++++========================================================--------------------------------------------------
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==--::.........................................:::::::::::::::::...=@@@@@@@@@@@@@%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%++=---------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.....::::------------------------------------=========------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::-------------------------------------------------------------------------------------::::::::::::::::........................................................................................-%%###################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##%%%%#%%#%%#*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#%%#%%#%##*...#%##%%%%%%%%%%%%%%%%##%####%@@@@@@@%%@%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###############%%%################################****************+++++++++++++*#**************************###+=::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::........ --:::::::----------------------::::::::::::::::::::::::::::::::::--:::---:::::::::::::::::-=-=---------------=----====::::::::::::::::::::::::::::::::...... ...................... ....::-==+++==-::........................................ ..................................................................................................................................................................................::---------::....................................................:::----====-------------===============================================================================================================---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::......................::-=++******++++++++++++++++++++++++==--::....::::::::::::::::::::::::::::::::::::::::::................................:::::::::...................................................................................................................................................................................................................................................................................................:::---===========================---::.................:::--============================--:::...................................................................................................................::..........................................................................................................................:::--=+++++++++++++++++++++++++++++===+++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****************############################%%%%%%####################################################################################################################################*******************######################*************############################################************************************############*******************##############################################################################################################################################################################################################################################################***++++++**######################################################################***************************************************************************++++++++++++++++++++++++++++++++========================================================-------------------------------------------------
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==-:::.........................................:::::::::::::::::...@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#+=---------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.....::::-----------------------------------==========---------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::-------------------------------------------------------------------------------------:::::::::::::::.........................................................................................-#####################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#%%%%%#%##*...#%#%%%%%%%%%%%%%%%%%##%####%@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##############%%##################################****************++++++++++++*#**************************##*=-::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.......... =-:::::::----------------------::::::::::::::::::::::::::::::::::-::::--:::::::::::::::::--=----------------------===:::::::::::::::::::::::::::::::::...... ........................ ....::-==+++==-::........................................ ..................................................................................................................................................................................::---------::....................................................:::----======-----------===============================================================================================================---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::......................::-=+*******++++++++++++++++++++++++==--::....::::::::::::::::::::::::::::::::::::::::::::::...........................::::::::::....................................................................................................................................................................................................................................................................................................:::--===========================---::.................:::--============================--:::...................................................................................................................::..........................................................................................................................:::--==++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****************########################%%%%%%%%%%%%%##################################################################################################################################*******************######################*************############################################************************************############*******************##############################################################################################################################################################################################################################################################***++++++**####################################################################******************************************************************************+*+++++++++++++++++++++++++++++========================================================-------------------------------------------------
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==-:::.......................................::::::::::::::::::::.+@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@*=---------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.....::::-----------------------------------==========-------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-------------------------------------------------------------------------------------:::::::::::::::.........................................................................................-#####################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#+#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#%#%%%*#+...*%%%%%%%%%%%%%%%%%%%%##%###%@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##############%%##################################****************++++++++++++*##************************###+=::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::........... :==-:::::-----------------------::::::::::::::::::::::::::::::::::-::::--:::::::::::::::::---==-------------------===::::::::::::::::::::::::::::::::::...... ......................... ....::-==+++==-::....... ................................ ..................................................................................................................................................................................::---------::....................................................:::---========----------===============================================================================================================---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::......................::-=+*******++++++++++++++++++++++++==--::....::::::::::::::::::::::::::::::::::::::::::::::::.........................::::::::::..............................................................................................................................................................................................:.....................................................................................................:::--============================--:::...............:::---===========================---:::...................................................................................................................:::.........................................................................................................................:::--==+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***************########################%%%%%%%%%%%%%%####################################################################################################################################*******************#####################*************############################################***********************************#############*******************##############################################################################################################################################################################################################################################################***++++++**###################################################################**********************************************************************************+++++++++++++++++++++++++++++=======================================================-------------------------------------------------
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==--:::.......................................:::::::::::::::::::::@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%*=--------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.....::::-----------------------------------=========-------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::-:--------------------------------------------------------------------------------------:::::::::::::::.........................................................................................:#####################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#+#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%+#+...#%#%%%%%%%%%%%%%%%%%%%#%####@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##############%%##################################*****************+++++++++++*##************************##*=-:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::............ ===--::::-----------------------:::::::::::::::::::::::::::::::::--:::---::::::::::::::::::--==-------------------==:::::::::::::::::::::::::::::::::::...... .......................... ....:--==+++==-::.... ............................. ..................................................................................................................................................................................::---------::....................................................:::---=========---------===============================================================================================================---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::......................::-=+*******++++++++++++++++++++++++==-:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.....................::::::::::...........................................................................................................................................................................................::::::::.................................................................................................:::---===========================--:::...............:::--============================---:::...................................................................................................................:::.........................................................................................................................:::--==+++++++++=====+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*************##########################%%%%%%%%%%%%######################################################################################################################################*******************#####################*************############################################**********************************##############********************#############################################################################################################################################################################################################################################################***++++++***#################################################################************************************************************************************+++++++++++++++++++++++++++++======================================================-------------------------------------------------
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==--:::.......................................::::::::::::::::::::-@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#=--------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.....::::-----------------------------------=========-------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::-:--------------------------------------------------------------------------------------:::::::::::::::.........................................................................................:*####################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#+*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%+#=...#%##%%%%%%%%%%%%%%%%%%####%#@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#############%%###################################*****************+++++++++**##***********************###*=:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::........... :+=+-::::-----------------------::::::::::::::::::::::::::::::::::--:::---::::::::::::::::::-----=-----------------=:::::::::::::::::::::::::::::::::::....... ......................... ....:--==+++==-::.... .......................... ..................................................................................................................................................................................::---------::....................................................::----=========---------===============================================================================================================---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::......................:--=+*******++++++++++++++++++++++++==-::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::..............::::::::::.........................................................................................................................................................................................:::::::::::................................................................................................:::---===========================---:::.............:::---============================---:::...................................................................................................................:::.........................................................................................................................::::-===++++++========+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********##################################%%%%%%%########################################################################################################################################*******************#####################*************#############################################*********************************##############********************##############################################################################################################################################################################################################################################################**++++++***################################################################*************************************************************************************+++++++++++++++++++++++++++++=====================================================--------------------------------------------------
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==--:::......................................:::::::::::::::::::::%@@@*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@*=-------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.....::::------------------------------------=======--------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::-----------------------------------------------------------------------------------------:::::::::::::::.........................................................................................:*####################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%+*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#-#-...##%#%#%%%%%%%%%%%%%%%%%%####@@@@@@@@%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%############%%%###################################*****************++++++++++*##***********************###=-:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::............. =++=-::::-----------------------::::::::::::::::::::::::::::::::::-:::----:::::::::::::::::::-==-----=------------=::::::::::::::::::::-----:::::::::::....... .......................... ....:--=++++==-::.... ........................ .................................................................................................................................................................................::---------::...................................................:::----========---------================================================================================================================--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------::::......................:-==+*******++++++++++++++++++++++++=--:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.........:::::::::::::.......................................................................................................................................................................................::::-----::::................................................................................................::---============================--:::.............:::---============================---::...................................................................................................................::::..........................................................................................................................:::--==++++===========+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********##################################################################################################################################################################################*******************#######################************#############################################*********************************###############*******************##############################################################################################################################################################################################################################################################**++++++***##############################################################***************************************************************************************++++++++++++++++++++++++++++++=====================================================-------------------------------------------------
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==--::.......................................::::::::::--::::::::-@@@##%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%=-------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.....::::------------------------------------=======---------------------::::::::::::::::::::::::::::::::::::::::::::---:---::------------------------------------------------------------------------------------------:::::::::::::::.........................................................................................:+####################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#%#%#-#-..:#%%##%#%%%%%%%%%%%%%%%%%####@@@@@@@@%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%############%%%###################################*******************++++*++**##**********************###*=-::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::............. :+=+=::::------------------------::::::::::::::::::::::::::::::::::-:::---::::::::::::::::::::--------------------=::::::::::::::::::::------:::::::::::...... ......................... ...::-==++++==-::.... ...................... .................................................................................................................................................................................::---------::...................................................:::----========--------=================================================================================================================-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------::::.......................:-==+*******++++++++++++++++++++++++=--:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::........::::::::::::::.......................................................................................................................................................................................:::--------:::...............................................................................................::---============================---:::............:::--=============================--:::...................................................................................................................::::..........................................................................................................................:::--=================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******#####################################################################################################################################################################################******************#######################*************############################################***********************************#############*******************#############################################################################################################################################################################################################################################################***++++++***############################################################******************************************************************************************++++++++++++++++++++++++++++++======================================================-----------------------------------------------
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==--::......................................:::::::::::::::::::::+@@@*%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@%%@@@%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#=------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::......::::-------------------------------------======-----------------------:::::::::::::::::::::::::::::::::::::::::----------------------------------------------------------------------------------------------------::::::::::::::::.........................................................................................+####################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*=#:..:#%###%##%%%%%%%@%%%%%%%%####@@@@@@@@%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###########%%%####################################***************************##**********************###=-::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::............. =+++-::::-------------------------:::::::::::::::::::::::::::::::::-::----::::::::::::::::::::-=-----------------=:::::::::::::::::::---------:::.::::::...... ......................... ...::-==++++==-::.... ............ .................................................................................................................................................................................::---------::...................................................:::----========-------==================================================================================================================------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------::::.......................::-=++*******+++++++++++++++++++++++==--::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.......::::::::::::::::......................................................................................................................................................................................:::---====---::...............................................................................................:::--=============================--::::..........:::---=============================--:::...................................................................................................................::::..........................................................................................................................:::---===============++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******#######################################################################################################################################################################################******************#######################*************############################################************************************###########********************#############################################################################################################################################################################################################################################################***++++++***########################################################***********************************************************************************************+++++++++++++++++++++++++++++++=======================================================--------------------------------------------
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==--::......................................::::::::-::::::--::::*@@@%%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@+-------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::......::::-------------------------------------======-----------------------------::::::::::::::::::::::::::::::::::-----------------------------------------------------------------------------------------------------:::::::::::::::::........................................................................................=%###################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%+=#...-%%#%#%%#%%%%%%%%%%%%%%%%%###@@@@@@@@%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#########%%%%####################################***************************##*********************###*=-::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.............. :+=+=::::---------------------------:::::::::::::::::::::::::::::::--::----::::::::::::::::::::-------=----------=-::::::::::::::::::----------:::..:::::...... ............................ ...::-==++++==-::... .......... .................................................................................................................................................................................::---------::...................................................::----=========-------==================================================================================================================-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------::::........................::-=+********+++++++++++++++++++++++==--:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::........::::::::::::::::......................................................................................................................................................................................::--=======--:::..............................................................................................:::---============================---::::.........:::--==============================--:::......................................................................................:::::........................::::..........................................................................................................................:::---===============++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****########################################################################################################################################################################################******************#######################*************############################################*************************************##########********************#############################################################################################################################################################################################################################################################***++==+++**#####################################################**************************************************************************************************+++++++++++++++++++++++++++++++++=====================================================--------------------------------------------
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==--::......................................:::::::::::-::::::--+@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%=------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::......:::----------------------------------------===-------------------------------------::::::::::::::::::::::::::------------------------------------------------------------------------------------------------------:::::::::::::::::::......................................................................................=%####################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%+*%%%%%%%%%%%%%%#%%%%%%%%%%%%%%#%#%%=+#...-%%%###%##%%%%%%%%%%%%%%%%###@@@@@@@%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#########%%%%####################################***************************##***#*****************##*+--:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.............. =+++-::::----------------------------::::::::::::::::::::::::::::::-::----:::::::::::::::::::::--==--==---------=-::::::::::::::::::----------:::...:::::...... ........................... ....::-==++++=--::... .... .. .................................................................................................................................................................................:::--------::..................................................:::----========---------=================================================================================================================-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::.........................::-=+********+++++++++++++++++++++++==--:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::..........::::::::::::::.....................................................................................................................................................................................:::--========--::..............................................................................................:::---=============================---::::........:::--==============================--:::...................................................................................:::::::::::.....................::::.........................................................................................................................::::----=============+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****#########################################################################################################################################################################################******************#######################*************############################################*************************************##########********************############################################################################################################################################################################################################################################################***+++==+++**#################################################*******************************************************************************************************++++++++++++++++++++++++++++++++++======================================================-----------------------------------------
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==--::.....................................::::::::::::::---+#%%@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@*------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.....::::----------------------------------------------------------------------------------:::::::::::::::::::::::----------------------====-------------------------------------------------------------------------------:::::-----::::::::::...................................................................................=%#####################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%--%%%%%%%%%%%%%%#%%%%%%%%%%%%%%#%#%%-*#...=%%%#%##%+#%%%%%%%%%%%%%%%###@@@@@@@%%@%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#########%%%%####################################***************************##***#****************###*=-::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::................ .+++=::::-----------------------------:::::::::::::::::::::::::::::--::----::::::::::::::::::::--==-------------=-::::::::::::::::::------------::..::::::...... ........................... ....::-==++++=--:.... .. ..........................................................................................................................................:::::::................................:::--------::..................................................:::----========---------=================================================================================================================----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------::::.........................::-=+*******++++++++++++++++++++++++==--:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::...........:::::::::::::.....................................................................................................................................................................................:::-====+++===--::..............................................................................................::---==============================---:::.......:::---==============================--:::......................................................................::..........:::::::::::::....................::::........................................................................................................................:::::---============+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***##########################################################################################################################################################################################******************#######################*************############################################**************************************#########********************###########################################################################################################################################################################################################################################################****+++===++**#########################################***************************************************************************************************************+++++++++++++++++++++++++++++++++++======================================================----------------------------------------
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==-:::.....................................::::::::-::--+#%%@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%+-----------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::......::::-----------------------------------------------------------------------------------::::::::::::::::::::::--------------------======-----------------------------------------------------------------------------------------------:::::..................................................................................=%######################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%--%%%%%%%%%%%%%%#%%%%%%%%%%%%%%%%#%#:##...*%%######=#%%%%##%%%%%%%%%###@@@@@@@%%@%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########%%%%#####################################**************************##**##****************###+=-:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::................ =+=+-::::-----------------------------:::::::::::::::::::::::::::::--:-----::::::::::::::::::::--=---------------::::::::::::::::::-------------::..::::::..... .......................... ....::-==+++==--:.... .......................................................................................................................................:::::::::::::::..........................:::--------::..................................................:::----========--------==================================================================================================================----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::..........................::-=+*******++++++++++++++++++++++++==--:::............:::::::::::::::::::::::::::::::::::::::::::::::.................::::::::::::.....................................................................................................................................................................................::--===+++++==--::..............................................................................................:::--===============================---:::......:::---=============================---:::.....................................................................:::::......:::::-------::::...................::::......................................................................................................................::::::---=======+++++++++++++++++++++++++++++++++++++++++++++++++++==========++++++++++++++++***##########################################################################################################################################################################################******************#######################*************############################################*****************************************#####*********************###########################################################################################################################################################################################################################################################***+++====++**#############################****************************************************************************************************************************+++++++++++++++++++++++++++++++++++======================================================---------------------------------------
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==-:::.....................................:::::::---=*%@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#=----------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::......::::------------------------------------------------------------------------------------:::::::::::::::::::::------------------=========---------------------------------------=========--------------------------------------====------::::.................................................................................=%######################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#%%%-:%%%%%%%%%%%%%%#%%%%%%%%%%%%%%%#%%#:#*...*%%#%##%#-#%%%%##%%%%%%%%%##%@@@@@@@%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########%%%%######################################*************************##*###***************###*=-::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::................. :+++=::::------------------------------:::::::::::::::::::::::::::::-------::::::::::::::::::::--=---------------:::::::::::::::::::------------:::.::::::...... .......................... ....::-==+++==--:..... .......................................................................................................................................::::::::::::::::::.......................:::--------::..................................................:::----========-------===================================================================================================================----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------=-----:::..........................:--=+*******+++++++++++++++++++++++==--::::................::::::::::::::::::::::::::::::::::::::::::...................::::::::::.....................................................................................................................................................................................:::--==++++++===-::..............................................................................................:::--================================--::::.....:::--==============================---:::.....................................................................:::::......:::----===----:::..................::::......................................................................................................................:::::---=====++++++++++++++++++++++++++++++++++++++++++++++++==================++++++++++++++***##########################################################################################################################################################################################*******************######################**************###########################################*********************************#*******#####*********************##########################################################################################################################################################################################################################################################****+++====++**###########################*******************************************************************************************************************************+++++++++++++++++++++++++++++++++++=====================================================---------------------------------------
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==-:::.....................................:::::=***#@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@*----------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::......::::-------------------------------------------------------------------------------------::::::::::::::::::::-----------------==========-------------------------------------===============----------------------------===============---:::...............................................................................:=########################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%=:%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#%#%#:#+...#%#####%#:*%%%%%*%%%%%%%%%###@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######%%%%%%%#######################################**********************######**************####+=-::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.................. =+++-::::-------------------------------:::::::::::::::::::::::::::--------:::::::::::::::::::-----=-=--------=-::::::::::::::::::::::----------:::.::::::...... ............................ ....:--==+++==-::.... ......................................................................................................................................::::--------::::::::::....................:::--------::.................................................::::----========-------===================================================================================================================----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------===----::..........................:-==+*******+++++++++++++++++++++++==--:::..................:::::::::::::::::::::::::::::::::::::::.....................::::::::::.....................................................................................................................................................................................:::--==++++++===--::.............................................................................................:::--================================---:::....:::---==============================---::......................................................................:::::.....:::--=========--:::..................:::.....................................................................................................................:::::---====+++++++++++++++++++++++++++++++++++++++++++===============-------=====++++++++++++***##########################################################################################################################################################################################*******************######################**************###########################################*****************************************##************************##########################################################################################################################################################################################################################################################***+++=====++**#########################**********************************************************************************************************************************+++++++++++++++++++++++++++++++++++=======================================================------------------------------------
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==-:::....................................::::+#@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%+---------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::......::::-------------------------------------------------------------------------------------::::::::::::::::::::------------------=========-----------------------------------=======++==========--------------------==========+++++++++===---:::..............................................................................:=########################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%+:%%%#%%%%%%%%%%%%%%%%%%%%%%%%#%%##*:%-..:#%#####%*:=%%%%%#%%%%%%%%%###@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####%%%%%%%#######################################**********************######*************####*==-:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::................. :+++=:::::-------------------------------:::::::::::::::::::::::::::-------:::::::::::::::::::-----=----------=--::::::::::::::::::::::----------::::::::::..... ............................ ....:--=++++==-::.... ......................................................................................................................................::::------------::::::::::................:::--------::.................................................:::-----========-------===================================================================================================================----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------===----::..........................:-=++*******+++++++++++++++++++++++==--:::...................::::::::::::::::::::.::::::::::::::::......................:::::::::......................................................................................................................................................................................:::-===+++++++==--::.............................................................................................:::---================================--::::...:::---==============================--:::......................................................................:::::::.::::--===+++++===--:::.................::.....................................................................................................................:::::----===++++++++++++++++++++++++++++++++++++++++===========-----------------====+++++++++++***##########################################################################################################################################################################################*******************######################**************###########################################*******************************************************************##########################################################################################################################################################################################################################################################***+++=====++***#######################***********************************************************************************************************************************++++++++++++++++++++++++++++++++++++======================================================------------------------------------
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==-:::....................................:-+%@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#---------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::......::::-------------------------------------------------------------------------------------::::::::::::::::::::-------------------========----------------------------------====++++++++++++======--------------=========+++++++++++++++++==--::..............................................................................:+########################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#.#%%%%%%%%%%%%%%%%%%%%%%%%%%%#%#%#=-%:..:%%#####%+.-%%%%%##%%%%%%%%%#%@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###%%%%%%%%########################################*********************######************#####+==::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.................. .+++=-::::--------------------------------:::::::::::::::::::::::::::-------:::::::::::::::::::=--=------------=-::::::::::::::::::::::::---------:::::::::...... ............................. ....:--=++++==-::..... ..... ............................................................................................................................:::-----------------::::::::::...........:::--------:::.................................................:::----=========------====================================================================================================================----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------====---::.........................::-=++*******+++++++++++++++++++++++==--::.....................:::::::::::::::........::::::::::::........................::::::::......................................................................................................................................................................................::--==++++++++==--::..............................................................................................:::--================================---::::.::::---==============================--:::......................................................................:::::::::::--==+++++++++==--::..................:.....................................................................................................................:::::----==+++++++++++++++++++++++++++++++++++++=========------------::::::::----=====+++++++++****##########################################################################################################################################################################################*******************#####################**************###########################################*******************************************************************#########################################################################################################################################################################################################################################################***+++======+++**####################****************************************************************************************************************************************++++++++++++++++++++++++++++++++++++======================================================----------------------------------
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===-:::...................................-*%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@+--------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::......::::---------------------------------------===-------------------------------------------:::::::::::::::::::--------------------=========--------------------------------===++++++****+++++++=====---------========+++++++************++==--::..............................................................................:=#########################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##%%.+%%%#%%%%%%%%%%%%%%%%%%%%%%%%##%%-=#:..-%%######=.:#%%%%#*%%%%%%%%%%%@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###%%%%%%%%%########################################********************######***********#####*-=-::::--::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.................... -+++-:::::---------------------------------:::::::::::::::::::::::::--------::::::::::::::::::=--=-----------==-:::::::::::::::::::::::::---------:::::::::...... .......................... ...::--=++++==-::.... .... ..........................................................................................................................::::--------------------:::::::::.......::::--------:::.................................................:::----=========------====================================================================================================================-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------===---:::........................::-=+********+++++++++++++++++++++++==--::.....................:::::::::::::::.........:::::::::::........................:::::::...................................................................................................................................... ...............................................::--==++++++++===-::..............................................................................................:::--=================================--:::::::::--===============================--:::......................................................................:::::::::::--==++++++++++==-:::.......................................................................................................................................:::::----==++++++++++++++++++++++++++++++++=========---------:::::::::::::::::---======+++++++++****#####################################################################################################################################################################**##################*******************#####################**************###########################################********************************************************************########################################################################################################################################################################################################################################################***+++======+++**##################*******************************************************************************************************************************************+++++++++++++++++++++++++++++++++++++=====================================================---------------------------------
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==--:::.................................-*%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#--------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::......::::--------------------------------------=====-------------------------------------------:::::::::::::::::----------------------========-------------------------------===++++***********+++++================+++++++*****************++=--::...............................................................................=#########################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#%%%%%%%%%%%%%###%%.-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###:*#...=%#####%#-..+%%%%%+%%%%%%%%%%%@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###%%%%%%%%%%#######################################********************#######*********######===-:::---:::--::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::................... .+++=::::::----------------------------------::::::::::::::::::::::::--------:::::::::::::::::---=-----------=--::::::::::::::::::::::::::---------:::::::::...... ... ..................... ...::--=++++=--::.... .... ..........................................................................................................................::::-----------------------:::::::::::::::::--------:::.................................................:::---==========------====================================================================================================================-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::........................::-=+*******++++++++++++++++++++++++==-:::.....................:::::::::::::::.........:::::::::::.........................:::::..................................................................................................................................... ......... .................................::--==++++++++===-::..............................................................................................:::--=================================---:::::::---==============================---:::......................................................................::::::::::--==+++*****+++==--::........................................................................................................................................:::::---===+++++++++++++++++++++++++++=========-------::::::::::::::::::::::::---======++++++++*****##################################################################################################################################################################*****#################*******************#####################***************###########################################*******************************************************************########################################################################################################################################################################################################################################################***+++=======++***############*************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++======================================================--------------------------------
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==--:::...............................:*%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@=-------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::......::::--------------------------------------======-------------------------------------------:::::::::::::::-----------------------========-------------------------------==++++***************++++============+++++**********########****+==-:::..............................................................................=#########################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#%%%%%%%%%%%%%%###%::#%%%%%%%%%%%%%%%%%%%%%%%%%%##%##:#*...+%#######-..:#%%%%+#%%%%%%%%%%@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#########################################******************########********#####*==-::::---::---::::::::::::::::::::::::::::::::-:::::::::::::::::::::::::::::::::::::.................... =++=-:::::------------------------------------::::::::::::::::::::::--------:::::::::::::::::------------------:::::::::::::::::::::::::::--------:::::::::...... . . ................ ...::--=+++==--:..... ..... ...........................................................................................................................:::--------------------------:::::::::::::---------:::.................................................:::---==========------====================================================================================================================-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::........................:-==+*******+++++++++++++++++++++++===-:::.....................::::::::::::::...........::::::::::..........................::................................................................................................................................... ................................::--==++++++++===-::..............................................................................................:::---=================================--:::::::---==============================---:::......................................................................::::::::::--=+++*******+++=--:::.......................................................................................................................................::::::--===+++++++++++++++++++++++========--------:::::::::::::::::::..:::::::----======++++++++****#################################################################################################################################################################******#################********************####################***************###########################################*******************************************************************#########################################################################################################################################################################################################################################################**+++=======++*****###********************************************************************************************************************************************************+++++++++++++++++++++++++++++++++++++=====================================================--------------------------------
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==--::..............................:+%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#-------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::......:::---------------------------------------======-------------------------------------------:::::::::::::::------------------------=======------------------------------===+++******####********++++++=====++++++********#############**++=--:::..............................................................................-##########################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#%%%%%%%%%%%%%#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###%::*%%%%%%%%%%%%%%%%%%%%%%%%%#%#%%*:#*...*%#######:...+%%%%**%%%%%%%%%%@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###########################################****************########*******######+==-::::---:----------::---------::::::::::::::::-----:::::::::::::::::::::::::::::::::.................... :+++-::::::-----------------------------------:::::::::::::::::::::::--------::::::::::::::::--=----------------:::::::::::::::::::::::::::--------:::::::::...... ............. ...::-==+++==-::...... .... ..........................................................................................................................:::--------------------------------::::------------:::.................................................:::---==========-----=====================================================================================================================-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------::........................::-=++*******+++++++++++++++++++++++===-:::.....................::::::::::::::...........::::::::::............................................................................................................................................................... ................................::--==++++++++===-:::..............................................................................................:::--=================================---::::::---==============================---:::......................................................................:::::::::--==++*********++==--::.........................................................................................................................................:::::--===+++++++++++++============--------:::::::::::::::::...........:::::----======++++++++*****###############################################################################################################################################################*******#################********************####################***************###########################################*******************************************************************#########################################################################################################################################################################################################################################################**+++=======++*****************************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++=====================================================------------------------------
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==--::............................:=%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@=------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.....::::--------------------------------------=======-------------------------------------------::::::::::::::-------------------------=======------------------------------===++*****#########*******++++++++++++*******################***++=--::...............................................................................-##########################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###%%%%%#%%%%%#%%%%%%%%%%%%%%%%%#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###%::=%%%%%%%%%%%%%%%%%%%%%%%%%#%##%+.%+..:#%#%###%*:...=%%%%#+%%%%%%%%%%@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#############################################**************########***##*######*-==-::::----------------------------:::-:::::::::-----:::::::::::::::::::::::::::::::::.................... +++=:::::::-----------------------------------:::::::::::::::::::::::--------:::::::::::::::--=-=-----------==-:::::::::::::::::::::::::::-=-------::::::::...... ....... ...::-==+++==-::.... . .... ..........................................................................................................................::::-----------------------------------------------:::.................................................:::---==========-----=====================================================================================================================-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------::........................::-=++*******+++++++++++++++++++++++===-:::.....................:::::::::::::.............:::::::::.............................................................................................................................................................. ................................::--==++++++++===-:::..............................................................................................:::--=================================---::::::--===============================---::.......................................................................:::::::::--=+++*********+++=--::...........................................................................................................................................::::--===+++++==============---------:::::::::::::.....................:::-----======+++++++******##############################################################################################################################################################*******#################********************####################***************###########################################**********************************************###******************#########################################################################################################################################################################################################################################################**+++=======+++*******************************************************************************************************************+++++******************************************++++++++++++++++++++++++++++++++++++========================================================---------------------------
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==--::...........................=#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@*------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.....::::--------------------------------------=========-----------------------------------------:---:::::::----------------------------========-----------------------------===++****#############********++++********##################***++==--::...............................................................................-##########################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######%%%%%%%%%%%#%%%%####%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###%:.-#%%%%%%%%%%%#%%%%%%%%%%%%#%%#%=:%=..:#%#%###%+:...:#%%%#=#%%%%%%%%%@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##############################################************########**##########+-=-::::---------------------------------::::------------::::::::::::::::::::::::::::::::................... =++=-:::::::-----------------------------------::::::::::::::::::::::---------::::::::::::::-=-=--=----------=-::::::::::::::::::::::::::::---------::::::........ .. ....::-===+===-::.... . .... ..........................................................................................................................::::----------------=------------------------------:::.................................................::---===========-----=====================================================================================================================----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::........................::-=+********+++++++++++++++++++++++==--::::....................:::::::::::::.............::::::::................................................................................................................................................................ ..............................::--===+++++++===-:::..............................................................................................:::--==================================---::::---===============================--:::.......................................................................:::::::::--=+++*********+++=--:::.......................................................................................................:::::..............................::::---==============-----------:::::::::::::::.......................::::------=====+++++++******#############################################################################################################################################################********#################********************####################***************###########################################********************************************#####******************#########################################################################################################################################################################################################################################################***++=======+++****************************************************************************************************************+++++++++++****************************************+++++++++++++++++++++++++++++++++++++=====================================================----------------------------
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==--::.........................-%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%=-----:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.....::::--------------------------------------=========--------------------------------------------------------------------------------========-----------------------------===++*****###############***************##################*****++=--:::...............................................................................-##########################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#########%%%%%%%%%#%#%%####%%%%%%%%%%%%%#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####-:-*%%%%%%%%%#%%%%%%%%%%%%%%#%#%#:-%:..:%%######=....:*%%%#=#%%%%%%%%%@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##############################################***********########**#########*===-:::----------------------------------:::--------------:::::::::::::::::::::::::::::::.................... :+++-::::::::-----------------------------------::::::::::::::::::::::--------::::::::::::::-=-=-------------=-::::::::::::::::::::::::::::==--------::::::........ ....::-===+==--:..... . .... ..........................................................................................................................:::::----------------------------------------------:::.................................................::---===========-----=====================================================================================================================----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::.......................::--=+********+++++++++++++++++++++++==--:::::...................:::::::::::::.............::::::::................................................................................................................................................................. .......... . .............................::--===+++++++===-::...............................................................................................:::---=================================---:::----===============================--:::.......................................................................::::::::--==+++*********+++==-:::......................................................................................................::::::::.............................::::----======------------:::::::::::::::::::........................::::-------====+++++++******#############################################################################################################################################################********#################********************####################***************###########################################********************************************######*****************########################################################################################################################################################################################################################################################****++=======++++*************************************************************************************************************+++++++++++++++**************************************++++++++++++++++++++++++++++++++++++++======================================================--------------------------
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==--::.......................-#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@*----:-::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.....::::-------------------------------------=========---------------------------------------------------------------------------------========-----------------------------===+++*****################***********###################****+++==--:::...............................................................................:##########**###############%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%############%%%%%%%%#%########%%%%%%#######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#*:-=%%%%%%%%%#%%%%%%%%%%%%%%#%#%#.+%:..-%%######-.....+%%%%=+%%%%%%%%%@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###############################################**********###################+-==-::-----------------------------------:-----------------:::::::::::::::::::::::::::::::.................... .+++-::::::::::----------------------------------::::::::::::::::::::::--------::::::::::::::=--=-------------=-:::::::::::::::::::::::::::===---------::.......... ....::-======--:..... . .... ..........................................................................................................................:::::---------------------------------------=------:::.................................................::---===========----======================================================================================================================----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::......................:::-==+*******++++++++++++++++++++++++===--:::::::................::::::::::::::.............:::::::.................................................................................................................................................................. .................. ............................::--===+++++++===-::...............................................................................................:::---=================================----:-----==============================---:::.......................................................................:::::::---==+++**********++==--::.....................................................................................................:::::::::::............................:::::------------:::::::::::::::::::::..............................:::::-------===+++++++******############################################################################################################################################################*********#################********************####################****************##########################################********************************************######*****************########################################################################################################################################################################################################################################################****+++=======+++***********************************************************************************************************++++++======+++++++*************************************+*++++++++++++++++++++++++++++++++++++=======================================================------------------------
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===-:::.....................-#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%=----::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::......:::------===-----------------------------=========---------------------------------------------------------------------------------========------------------------------==++++******#########################################*****+++==---:::................................................................................:*#########**###############%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##############%%%%%%#########################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#+#:=-%%%%%%%%%%%%%#%%%%%%%%%%####*:##:..=%%%#####:.....-#%%%+=%%%%%%%%%@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##############################################*********####################===----------------------------------------------------------::::::::::::::::::::::::::::::.......... ....... =++=-::::::::::----------------------------------:::::::::::::::::::::--------::::::::::::::=--=----------=--=-:::::::::::::::::::::::::::====--------::.......... .....:--=====-::..... . .... ..........................................................................................................................:::::---------------------------------------=------:::................................................:::---===========----======================================================================================================================----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------::::....................:::--=++*******++++++++++++++++++++++++===--::::::::::.............::::::::::::::.............:::::::....................................................................................................................................................................................... ..........................::--===+++++++===-::................................................................................................:::--=================================---------===============================---:::......................................................................::::::::---==++***********+++=--::....................................................................................................:::::::::::::............................:::::::::::::::::::::::::::::::....................................:::::-------====++++++******############################################################################################################################################################*********##################*******************####################****************##########################################********************************************######*****************#######################################################################################################################################################################################################################################################*****+++=======+++******##************************************************************************************************+++++++===========+++++***************************************++++++++++++++++++++++++++++++++++++========================================================----------------------
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===-:::...................-#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@*----::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::......:::----=======---------------------------========-------------------------==========-----------------------------------------------========------------------------------====++++********##################################******+++===---:::.................................................................................:*########%*+################%%%%%%%%%%%%%%%%%%%%%%%%%%%%###############%%%%%%#########################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%:#+--*%%%%%%%%%%%%#%%%%%%%%%%####+.##:..+%#%#####:.....:#%%%*=#%%%%%%%%@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######%%######################################********###################*===-:---------------------------------------------------------::::::::::::::::::::::::::::::......... ..... -++=-:::::::::::---------------------------------::::::::::::::::::::::--------:::::::::::::-=-=----------=---=:::::::::::::::::::::::::::=====-=------:.......... .....:--====--::..... .... ...........................................................................................................................:::::::--------------------------------------------::................................................::---============----======================================================================================================================----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------::::..................::::--==++******+++++++++++++++++++++++++===--:::::::::::::..........:::::::::::::..............::::::.......................................................................................................................................................... ............................ ..........................:::-===++++++===--::................................................................................................:::--==================================--------===============================---:::......................................................................:::::::----=+++***********+++=--::...................................................................................................:::::::::::::::............................:::::::::::::::::::::::::::.......................................:::::-------====++++++******###########################################################################################################################################################**********##################*******************#####################***************##########################################********************************************#######*****************######################################################################################################################################################################################################################################################******++=======+++*****########***************************************************************************************+++++++++==============+++++**************************************+++++++++++++++++++++++++++++++++++++========================================================---------------------
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===-:::.................-#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%=----:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::......:::----========--------------------------=======-----------------------================--------------------------------------------========-------------------------------====+++++*********#############################******++++==---::::..................................................................................:+#########*=################%%%%%%%%%%%%%%%%%%%%%%%%%%%%###############%%%%%%#########################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%:*#::+@%%%%%%%%%%%#%%%%%%%%%%###%=.%*.::*%#%###%*:.....:#%%%*=*%%%%%%%%@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######%%%#####################################*******####################+-==-----------------------------------------------------------::::::::::::::::::::::::::::::......... ..... .+++-:::::::::::----------------------------------:::::::::::::::::::::---------::::::::::::-=-=-=----------=---::::::::::::::::::::::::::-======------:.......... . .....:--====--:..... .... ...........................................................................................................................:::::::::------------------------------------------:::...............................................::---============----======================================================================================================================----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------::::................:::::---==++******+++++++++++++++++++++++++===---::::::::::::::::.....::::::::::::::..............::::::........................................................................................................................................................ ............................ .........................:::--==++++++===--::................................................................................................:::---=================================--------===============================---::........................................................................::::::----=+++***********+++=--:::.................................................................................................:::::::::::::::::.............................::::::::::::::::::..............................................:::::-------====++++++*****###########################################################################################################################################################************#################*******************#####################***************##########################################********************************************#######*****************#####################################################################################################################################################################################################################################################*******+++======+++****###########************************************************************************************++++++++==================++++**************************************+++++++++++++++++++++++++++++++++++++=========================================================-------------------
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==--:::...............-*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#---::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::......:::---=========--------------------------======----------------------======================----------------------------------------========--------------------------------=====+++++++********########################******++++===---::::...................................................................................:+#########*-*###############%%%%%%%%%%%%%%%%%%%%%%%%%%%%###############%%%%%%%%%%%%###################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%-=%-:-%%%%%%%%%%%%#%%%%%%%%%%####-:%=.::#%%%###%+..:.:..+%%%#=+%%%%%%%%@@@@@@@@%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####%%%######################################*****####################*====------------------------------------------------------------::::::::::::::::::::::::::::::........ ..... +++=::::::::::::----------------------------------:::::::::::::::::::::--------::::::::::::-=-=-=--------------::::::::::::::::::::::::::-=======-----:.......... . .....::-===--::..... .... ............................................................................................................................:::::::::::::-------------------------------------:::..............................................:::--=============----======================================================================================================================-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------::::.............:::::----===++******+++++++++++++++++++++++++===-----:::::::::::::::::::::::::::::::::..............::::::................................................................................................................................................ ....... .............. ............ ..........................::--===+++++===--::................................................................................................:::---==================================------================================--:::........................................................................:::::----==+++***********+++==-:::.................................................................................................::::::::::::::::::.............................::::::::::.....................................................:::::-------====++++++******#########################################################################################################################################################*************#################*******************#####################***************##########################################********************************************########****************######################################################################################################################################################################################################################################################*******++======+++****###########***********************************************************************************++++++======================+++*****************************************++++++++++++++++++++++++++++++++++++=======================================================-------------------
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==--:::.............-#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@+--::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::......:::---=========--------------------------======----------------------========================--------==========--------------------========----------------------------------=======++++++*****######################******++++===---:::::....................................................................................:+#########*:+###############%%%%%%%%%%%%%%%%%%%%%%%%%%%%##############%%#%%%%%%%%%%##################%%%%%%%%%%%%%%%%%%%%%%%%%#%%%%%%%%+:%+-:%%%%%%%%%%%%#%%%%%%%%%%####:-%:..:#%%#####=.......=%#%#-=%%%%%%%%@@@@@@@@%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####%%%######################################*****####################+====------------------------------------------------------------::::::::::::::::::::::::::::::........ ...... =++=-:::::::::::-----------------------------------:::::::::::::::::::::--------:::::::::::---=-----------=--=-::::::::::::::::::::::::::-=======-=---:.......... . .....::--==--:...... .... ................................................................................................................................::::::::::::::::-------------------------=-----:::.............................................:::--=============----======================================================================================================================-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------::::...........:::::-----====++*****++++++++++++++++++++++++++===-------:::::::::::::::::::::::::::::::..............::::::................................................................................................................................................ ....... ........ ............ .........................::--===+++++===--::.................................................................................................::---===================================-----================================--:::........................................................................:::::----==+++***********+++==-:::................................................................................................:::::::::::::::::::............................................................................................:::::-------====++++++******########################################################################################################################################################**************#################*******************#####################***************##########################################********************************************########****************##########################################################################################################################################################################################################################################################***+++=====+++***#############**********************************************************************************++++========================++++*****************************************++++++++++++++++++++++++++++++++++++=======================================================------------------
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==--:::.......:::--*%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#=-::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.....::::---===++====--------------------------===------------------------=============================================-----------------=========------------------------------------========+++++****####################****+++++===---:::::......................................................................................:+%#######%*:=################%%%%%%%%%%%%%%%%%%%%%%%%#################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#.*#-:#%%%##%%##%%#%%%%%%%%%%###*.+%:..:%%%#####-....:..-%%%#--*%%%%%%%@@@@@@@%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####################################*****####################====--------------------------------------------------------------::::::::::::::::::::::::::::::....... .... -+++-::::::::::::-----------------------------------::::::::::::::::::::---------:::::::::::--=-----------=-----::::::::::::::::::::::::::========----:. ....... ......::-----::...... . ...................................................................................................................................::::::::::::::::::--------------------------:::...........................................:::---=============----======================================================================================================================------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------::::.........::::-----=====+++****+++++++++++++++++++++++++++===---------:::::::::::::::::::::::::::::..............::::::......................................................................................................................................................... .............. ........ .....................::--===+++++===--::.................................................................................................:::--=====================================-=================================---:::........................................................................:::::----==+++***********+++==-:::..............................................................................................:::::::::::::::::::::............................................................................................:::::--------===+++++++*****#######################################################################################################################################################***************#################********************####################****************#########################################*********************************************#######****************##########################################################################################################################################################################################################################################################****++=====+++***############**********************************************************************************+++===========================+++*******************************************+++++++++++++++++++++++++++++++++++========================================================----------------
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==--::....:-+*####%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%+-::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.....::::---=========----------------------------------------------------================================================---------------=========---------------------------------------=======++++****##################****+++=====---::::........................................................................................:+%########*:-################%%%%%%%%%%%%%%%%%%%%%%%%#################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#.=%=.+%%%%%%%%#%%#%%%%%%%%%%###+.*#:..-%%##%###:.......:#%%#=-+%%%%%%%@@@@@@@%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####################################*****###################*====--------------------------------------------------------------::::::::::::::::::::::::::::::....... .... .+++-:::::::::::::-----------------------------------:::::::::::::::::::---------:::::::::::-=-==---------=-----::::::::::::::::::::::::::-========---:. ...... ......::---:::..... . .........................................................................................................................................:::::::::::::::::----------------------:::.........................................:::---==============----======================================================================================================================------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::::.......::::------======+++***++++++++++++++++++++++++++====----------::::::::::::::::::::::::::::..............:::::::........................................................................................................................................................ .............. ........ .....................:::-====++++===-::..................................................................................................:::---======================================================================---:::........................................................................:::::----==+++***********+++==-:::..............................................................................................:::::::::::::::::::::............................................................................................:::::--------===+++++++*****######################################################################################################################################################****************#################********************####################****************#########################################*********************************************#######****************###########################################################################################################################################################################################################################################################***+++====+++***############**********************************************************************************+++============================+++*******************************************+++++++++++++++++++++++++++++++++++=======================================================----------------
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==--:::-=*#%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#=-:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.....:::----========-----------------------------------------------------====================================================-----------==========------------------------------------------=====+++****#################***+++===----:::::.........................................................................................:+%########*::*################%%%%%%%%%%%%%%%%%%%%%%%%%###############%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%.:%*.-%%%%%##%#%%#%%%%%%%%%%%##=.##::.-%%##%#%#:.......:*%%%+-=%%%%%%%@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####################################****###################=====---------------------------------------------------------------::::::::::::::::::::::::::::::...... ..... =++=-:::::::::::::------------------------------------::::::::::::::::::---------::::::::::-=-==---------=-=----:::::::::::::::::::::::::-========---. .....:::-:::.... . ..................................................................................................................................................:::::::::::::::---------------:::::......................................:::---===============----======================================================================================================================-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------::::......:::-----=========++++*+++++++++++++++++++++++++++===---------------::::::::::::::::::::::::..............::::::::....................................................................................................................................................... ...................... .....................:::-====++++==--::..................................................................................................:::---======================================================================---:::........................................................................:::::----==+++***********+++==-:::..............................................................................................:::::::::::::::::::::............................................................................................::::---------====+++++++****#####################################################################################################################################################*****************#################********************####################****************#########################################*********************************************######*****************############################################################################################################################################################################################################################################################***++====+++***############**********************************************************************************++=============================+++**********************************************+++++++++++++++++++++++++++++++++=======================================================---------------
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==--=+#%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%*=:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.....:::----========----------------------------------------------------========================================================-------===========--------------------------------------------====+++***################***+++===----:::::...........................................................................................=%########*:.+#################%%%%%%%%%%%%%%%%%%%%%%%%%###############%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###%%%%%%%%%%%%%%%%%%%%%%%%%%%%%:.##::%%%%%#%#%%%#%%%%%%%%%%%%#-:%*::.=%%#%##%*.........+%%%*--#%%%%%%@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####################################***###################*====-----------------------------------------------------------------:::::::::::::::::::::::::::::....... ..... :+++--:::::::::::::-------------------------------------:::::::::::::::::--------:::::::::::---=--------------=--::::::::::::::::::::::::-======-==-:. ....::::::...... . .......................................................................................................................................................::::::::::::--------------:::::....................................:::----===============----======================================================================================================================--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------::::.....::----===========++++++++++++++++++++++++++++++++===-----------------:::::::::::::::::::::::............::::::::::::::::................................................................................................................................................ ..................... ......................::--===+++===--::..................................................................................................:::---======================================================================--:::.........................................................................:::::----==+++***********+++==-:::..............................................................................................::::::::::::::::::::::...........................................................................................::::---------====+++++++*****##################################################################################################################################################*******************##################*******************####################****************#########################################*********************************************######*****************############################################################################################################################################################################################################################################################***++++=++++***############*********************************************************************************+++==============================+++***********************************************+++++++++++++++++++++++++++++++++======================================================--------------
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==+*##%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#=-::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.....:::-----=====------------------------------------------------------==========================================================----============---------------------------------------------===+++*************######***++===----:::::............................................................................................=%########*:.-#################%%%%%%%%%%%%%%%%%%%%%%%%%###############%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########%%%%%%%%%%%%%%%%%%%%%%%%%%%%:.+%-:%%%#%#%%%%%##%%%%%%%%%%##::%+..:*%##%##%+.:.......=%%%*:-+%%%%%%@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####################################***###################+====-----------------------------------------------------------------:::::::::::::::::::::::::::::....... .... +++-::::::::::::::::------------------------------------::::::::::::::::---------::::::::::-=-=--------------=---:::::::::::::::::::::::-=======-=-: ....:::::..... . ............................................................................................................................................................:::::::::--------------:::..................................::::----================----======================================================================================================================---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::....:::---============++++++++++++++++++++++++++++++++===------------------:::::::::::::::::::::::...........:::::::::::::::::............................................................................................................................................... ..................... ......................::--====++===--::...................................................................................................:::--======================================================================--:::.........................................................................:::::----==++++**********+++==-:::..............................................................................................::::::::::::::::::::::...........................................................................................::::---------====++++++++****################################################################################################################################################*********************##################*******************####################*****************########################################*********************************************#####******************#############################################################################################################################################################################################################################################################***+++++++*****##########**********************************************************************************+++==============================+++************************************************+++++++++++++++++++++++++++++++++=======================================================------------
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%+=-::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::......:::---------------------------------------------------------------============================================================================---------------------------------------------==+++***************####***++==----:::::.............................................................................................=#########+:.:#################%%%%%%%%%%%%%%%%%%%%%%%%%%##############%%%%%%%%%%%%%%%%%%%%%%%%%%%%#########%%%%%%%%%%%%%%%%%%%%%%%%%%%%:.-%+.#%%%%#%%%####%%%%%%%%%%#+.-%-..:#%#%%##%-....:....-%%%#::=%%%%%%@@@@@@@@@@@%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###################################***###################=====------------------------------------------------------------------:::::::::::::::::::::::::::::...... ..... =++=-::::::::::::::::-------------------------------------:::::::::::::::---------::::::::::--==-------=-------=----:::::::::::::::::::::========--. ....::::...... .. .................................................................................................................................................................:::::-------------:::.................................::::-----================----======================================================================================================================---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::....::---=============++++++++++++++++++++++++++++++++===---------------------:::::::::::::::::::::::........:::::::::::::::::............................................................................................................................................... ...... . .....................::--====+====-:::...................................................................................................:::--=====================================================================---:::.........................................................................::::::----=++++**********+++==-:::..............................................................................................::::::::::::::::::::::...........................................................................................::::----------===++++++++****###############################################################################################################################################***********************#################*******************####################*****************########################################*********************************************#####******************#############################################################################################################################################################################################################################################################***+++++++*****##########**********************************************************************************++================================+++*************************************************++++++++++++++++++++++++++++++++======================================================------------
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@*+=-:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.....::::-------------------------------------------------------------==============================================================================---------------------------------------------==+++*****************##***++==---::::::.............................................................................................=#########+:.:*#################%%%%%%%%%%%%%%%%%%%%%%%%%##############%%%%%%%%%%%%%%%########%%%%%##########%%%%%%%%%%%%%%%%%%%%%%%%%%%-..##.+%%%%###%####%%%%%%%%%%#=.+%:..:#%#%####:.........-%%%#::-*%%%%%@@@@@@%@@@@%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##################################**###################*====-------------------------------------------------------------------:::::::::::::::::::::::::::::...... .... :+++-:::::::::::::::::------------------------------------:::::::::::::::---------::::::::::-=-==------=---=-----=-----::::::::::::::::::-===-=---: ......:...... .. ..................................................................................................................................................................::::--------------:::...............................::::-----=================---=======================================================================================================================---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------::::..:::---=============++++++++++++++++++++++++++++++++==----------------------:::::::::::::::::::::::::::::::::::::::::::::::::.............................................................................................................................................. ...... .............:::--=======--::....................................................................................................:::---====================================================================---:::..........................................................................:::::----==+++**********+++==-::...............................................................................................::::::::::::::::::::::...........................................................................................:::::---------===+++++++++****#############################################################################################################################################************************#################*******************####################*****************########################################*********************************************#####******************#############################################################################################################################################################################################################################################################****+++++******#########**********************************************************************************+++================================+++***************************************************+++++++++++++++++++++++++++++++======================================================-----------
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%++-:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.....::::-------------------------------------------------------=====================================================================================--------------------------------------------===++*******+++++**********+==----::::::.............................................................................................=#########+:..+#################%%%%%%%%%%%%%%%%%%%%%%%%%##############%%%%%%%%%%%%%%%########%%%%###########%%%%%%%%%%%%%%%%%%%%%%%%%%%=..*%:-%%%#%%#%#####%%%%%%%%%#-.##:..:%#%%####:.......:.-#%%#:::+%%%%%@@@@@@%@@@@%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##################################**###################+====-------------------------------------------------------------------:::::::::::::::::::::::::::::....... .... +++-:::::::::::::::::-----------------------------------::--:::::::::::::---------:::::::::-=-==-----------=-=-----==-::::::::::::::::::--==-----: ........... .. ...................................................................................................................................................................:::--------------:::..............................:::------==================---=======================================================================================================================---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------::::..:::---============+++++**+++++++++++++++++++++++++===----------------------::::::::::::::::::::::::::::::::::::::::::::::::::............................................................................................................................................. ...... .............::--=======--::....................................................................................................:::---====================================================================--::::..........................................................................::::::---==+++**********+++==-::...............................................................................................::::::::::::::::::::::...........................................................................................:::::---------===+++++++++****############################################################################################################################################*************************#################*******************####################*****************########################################*********************************************#####******************##############################################################################################################################################################################################################################################################******+*******########***********************************************************************************+++================================+++****************************************************+++++++++++++++++++++++++++++++======================================================----------
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*##%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#=+-::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.....::::-------------------------------------------------------======================================================================================-------------------------------------------===+++**+++++++++++*******++==----::::::.............................................................................................-#########+:..=#################%%%%%%%%%%%%%%%%%%%%%%%%%#####%######%%%%%%%%%%%%%%###########################%%%%%%%%%%%%%%%%%%%%%%%%%%*..=%=:%%%%%%#%###%#%%%%%%%%%#::##:.::#%####%*.........::#%%%-.:-#%#%%@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##################################**#####%%##%%#%#####*=====--------------------------------------------------------------------::::::::::::::::::::::::::::....... .... =++=--::::::::::::::::----------------------------------------:::::::::::---------::::::::::=---=-------------------=-::::::::::::::::::-=-----:::. ............ ... ....................................................................................................................................................................:::-------------:::.............................::::----====================---=======================================================================================================================---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------::::::::---=============++++*****+++++++++++++++++++++++===---------------------:::::::::::::::::::::::::::::::::::::::::::::::::::............................................................................................................................................. ....................:::--=====--::......................................................................................................:::--====================================================================--::::...........................................................................::::::--==+++**********+++==-::............................................................................................:::::::::::::::::::::::::...........................................................................................:::::---------===+++++++++****##########################################################################################################################################****************************################*******************#####################****************########################################*********************************************#####******************##############################################################################################################################################################################################################################################################*****************####*********##########*****************************************************************+++================================+++******************************************************++++++++++++++++++++++++++++++=====================================================----------
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#+=-:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.....::::---------------------------------------------------==================================================================================+========------------------------------------------===+++++++++====++++******++==----:::::..............................................................................................-#########+:..:#################%%%%%%%%%%%%%%%%%%%%%%%%############%%%%%%%%%%%%%%%###########################%%%%%%%%%%%%%%%%%%%%%%%%#%#..:%*:%%%%%%#%###%#%%%%%%%%%#::%#:..-%%####%*..........:#%%%=..:*%#%%@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##################################*######%%##%########+====---------------------------------------------------------------------::::::::::::::::::::::::::::....... ... :++=-:::::::::::::::::----------------------------------------::::::::::::---------:::::::::----=-------------------=-::::::::::::::::::---:::::::: ......... .... ....................................................................................................................................................................:::-------------:::............................:::-----=====================---=======================================================================================================================---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------::::::::---=============+++******+++++++++++++++++++++++===---------------------:::::::::::::::::::::::::::::::::::::::::::::::::::............................................................................................................................................. .....................::---===---::......................................................................................................:::--====================================================================--:::............................................................................:::::::--==+++*********+++=--::............................................................................................:::::::::::::::::::::::::............................................................................................::::----::---====++++++++****##########################################################################################################################################****************************################*******************#####################****************########################################*******************************************#######******************##############################################################################################################################################################################################################################################################*****************###**********##########****************************************************************+++=================================+++********************************************************++++++++++++++++++++++++++++======================================================---------
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#+=:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.....::::---------------------------------------------------===============================================================================+++++========-----------------------------------------===++++++=========+++****+++==---::::::..............................................................................................:#########+:..:*################%%%%%%%%%%%%%%%%%%%%%%%%###########%%%%%%%%%%%%%%%%############################%%%%%%%%%%#####%%%%%%%%%%%...##:#%%%%##%%%#%#%%%%%%%%%#::%*...=%#####%=..........:*%%%*..:+%%%@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########################################%%%%%%########=====---------------------------------------------------------------------::::::::::::::::::::::::::::....... .... +++---::::::::::::::::-----------------------------------------::::::::::----------::::::::----=-----------------==-::::::::::::::::::::::::::::::. ........ .... ....................................................................................................................................................................:::-------------:::...........................:::----=======================---=======================================================================================================================---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::::::---==============+++*******++++++++++++++++++++++===---------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::........................................................................................................................................... .....................:::-------:::......................................................................................................:::---==================================================================---:::.............................................................................::::::--==+++*********++==--::............................................................................................:::::::::::::::::::::::::............................................................................................::::----::---====+++++++++***######################################################################################################################################********************************################********************####################****************########################################******************************************########******************##############################################################################################################################################################################################################################################################*************#***###**********##########****************************************************************+++=================================+++*********************************************************++++++++++++++++++++++++++++=====================================================---------
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*##%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%+-::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::....:::::---------------------------------------------------==============================================================================+++++++=========----------------------------------------====++============+++**+++===---::::::..............................................................................................:#########+....+#################%%%%%%%%%%%%%%%%%%%%%%%###########%%%%%%%%%%%%%%%###############################%%%%%#########%%%%%%##%%:..+%-+%%%%#%%%%#%#%%%%%%%%%#:-%=.::*%#####%-..........:*%%%*::.=%#%@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######################################%%%%%%#%#####*=====----------------------------------------------------------------------:::::::::::::::::::::::::::........ .... =++=--::::::::::::::::-------------------------------------------:::::::::---------:::::::::---------------------==-::::::::::::::::::::::::::::::: ....... .... ....................................................................................................................................................................:::--------------::..........................:::----========================---=======================================================================================================================----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::::----==============++********++++++++++++++++++++++===---------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::........................................................................................................................................... ......................:::-----:::.......................................................................................................:::---==================================================================---:::...............................................................................:::::--=++++********++==-:::............................................................................................::::::::::::::::::::::::::...........................................................................................::::---::::--=====++=+++++***###################################################################################################################################***********************************#################*******************####################****************########################################*****************************************########******************#############################################################################################################################################################################################################################################################*******************##***********##########****************************************************************+++==================================+++*********************************************************+++++++++++++++++++++++++++++=====================================================-------
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*##%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%=::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::....::::---------------------------------------------------==============================================================================+++++++++============------------------------------------=========-------===+++++++==----::::::..............................................................................................:#########=....-#################%%%%%%%%%%%%%%%%%%%%%%%###########%%%%%%%%%%%%%%%##################################%%###########%%####%%:..-%+-%%%##%##%#%%%%%%%%%%%#:=%:..:#%######:...........+%%%#::.-##%@@@@@@@%@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######################################%%%%%%%%%%#%#+====-----------------------------------------------------------------------::::::::::::::::::::::::::::....... ... -++=---::::::::::::::::--------------------------------------------::::::::---------::::::::---------------------==-:::::::::::::::::::::::::::::::. ..... .... ...................................................................................................................................................................:::--------------::........................:::----==========================---=======================================================================================================================----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------::::----==============+++********++++++++++++++++++++++===---------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::.......................................................................................................................................... .......................:::::::::........................................................................................................:::---==================================================================---:::.................................................................................:::--==+++*******+++==-:::............................................................................................::::::::::::::::::::::::::...........................................................................................::::---::::--=====++==++++***#################################################################################################################################*************************************#################*******************####################****************#######################################***************************************############*##***********########################################################################################################################################################################################################################################################**######********************************##########***************************************************************+++===================================+++**********************************************************++++++++++++++++++++++++++++++===================================================-------
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.....::::---------------------------------------------------=============================================================================++++++++++================---------------------------------======----------====+++====----::::::..............................................................................................:*########=....:#################%%%%%%%%%%%%%%%%%%%%%%%############%%%%%%%%%%%%%#####################################################%%%:..:##:%%%##%##%#%%#%%%%%%%%#:*%::.:#%%###%#:...........=%%%#:..:*%%@@@@@@@%@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####################################%%%%%%%%%%#%*=====-----------------------------------------------------------------------::::::::::::::::::::::::::::....... ... :++=---:::::::::::::::::---------------------------------------------::::::----------:::::::----------------==-===--:::::::::::::::::::::::::::::::: . . ..... . ...................................................................................................................................................................:::--------------::......................::::----===========================--========================================================================================================================----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------::::----==============++*********++++++++++++++++++++++==----------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::.......................................................................................................................................... ........................:::::::..........................................................................................................:::--==================================================================--:::...................................................................................:::--=+++*******+++=--:::............................................................................................::::::::::::::::::::::::::...........................................................................................:::::-:::::---====+====++++***#############################################################################################################********########****************************************#################*******************####################*****************#####################################***************************************#####################***################################################################################################################################################################################################################################*********************############**********************************##########***************************************************************+++===================================+++***********************************************************++++++++++++++++++++++++++++++===================================================------
**+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********++++++++++++*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@*:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.....::::----------------------------------------------------===========================================================================++++++++++++==================-------------------------------==--------------=========----:::::::..............................................................................................:*########=....:*#################%%%%%%%%%%%%%%%%%%%%%%###############%%#%%%%%########################################################%%:..:*%-#%%#%##%%#%%#%%%%%%%%#:##::.:%%%###%*:...........=%%%#:...+#%@@@@@@@%@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####################################%%%%%%%%%%%#+=====-----------------------------------------------------------------------::::::::::::::::::::::::::::....... ... .+++=--:::::::::::::::::::-------------------------------------------:-:::::---------:::::::--------------====-==--:::::::::::::::::::::::::::::::::. ... ..... .. ...................................................................................................................................................................:::--------------::....................::::----=============================--========================================================================================================================----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::-----==============++*********++++++++++++++++++++++==---------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::......................................................................................................................................... .........................................................................................................................................:::--=================================================================---:::....................................................................................:::-==+++******++==--::.............................................................................................:::::::::::::::::::::::::::..........................................................................................:::::::::::---==========+++***##########################################################################################################***********########****************************************#################*******************####################*****************####################################***************************************####################################################################################################################################################################################################################################################***************************##########*******************#**************###########***************************************************************++====================================+++************************************************************++++++++++++++++++++++++++++++==================================================------
***************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********++++++++++***+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*##%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#-:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.....::::----------------------------------------------------===========================================================================++++++++++++====================-----------------------------------------------=====-----::::::::..............................................................................................:*########-.....+#################%%%%%%%%%%%%%%%%%%%%%%################%#%%%%#########################################################%%:...=%=*%%%%#%%%#%##%%%%%%%%#:##:..-%%####%+............=%%%#:...-#%@@@@@@@%@@@@@@@@%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####################################%%%%%%%%##%#+=====-----------------------------------------------------------------------::::::::::::::::::::::::::::....... ... +++=---::::::::::::::::::---------------------------------------------:::::----------:::::::-------------====-==--:::::::::::::::::::::::::::::::::: .... ..... .. ...................................................................................................................................................................:::--------------:::.................:::::----===============++=++==========--========================================================================================================================---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::::----==============++*********++++++++++++++++++++++===--------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::....................................................................................................................................... .........................................................................................................................................:::---================================================================---:::....................................................................................:::--=+++*****+++==--::.............................................................................................:::::::::::::::::::::::::::..........................................................................................:::::::::::---==========+++***##########################################################################################################***********########****************************************#################*******************####################*****************####################################**************************************#####################################################################################################################################################################################################################################*#############******************************#########***##**************##*************###########**************************************************************+++====================================+++*************************************************************+++++++++++++++++++++++++++++==================================================------
***********************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***********++++++*******++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@=::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.....::::----------------------------------------------------==========================================================================+++++++++++++=========================---------------------------------------------------:::::::::..............................................................................................:*########-.....-#################%%%%%%%%%%%%%%%%%######################%%%%%%########################################################%%=...-%*+%%%##%##%%#%%%%%%%%%#:%#::.=%#%%#%%=............=%%%%:...:%%@@@@@@@%@@@@@@@@%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######################################%%%%%%%%%%%*======-----------------------------------------------------------------------:::::::::::::::::::::::::::::...... ... =++=---:::::::::::::::::::-----------------------------------------------:::---------:::::::--==-=----------==-==-::::::::::::::::::::::::::::::::::. ::.. .. ....... .. .................................................................................................................................................................::::-------------:::................::::----==================++++++=================================================================================================================================-----------------------------=---------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::::::----============+++*********++++++++++++++++++++++==---------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.................................................................................................................................... .............. ............................................................................................................................::---================================================================---:::.....................................................................................::--==++*****+++=--:::.............................................................................................:::::::::::::::::::::::::::..........................................................................................::::::::::::--===========++***#######################################################################################################**************************************************************#################*******************####################*****************###################################**************************************######################################################################################################################################################################################################################################*******#********************************************************************************############************************************************************+++=====================================++*************************************************************++++++++++++++++++++++++++++++==================================================-----
************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**************+************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#-::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.....::::----------------------------------------------------========================================================================+++++++++++++++==========================-------------------------------------------------::::::::::..............................................................................................:*########-.....:#################%%%%%%%%%%%%%%%%%%#####################%%%%%%########################################################%%+...:##=%%%%#%##%%#%%%%%%%%%#:%*::.+%######-............=%%%%-...:%%@@@@@@@@@@@@@@@@%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####################################%%%%%%%%%%%%*======-----------------------------------------------------------------------:::::::::::::::::::::::::::::...... ... -++=---:::::::::::::::::::-----------------------------------------------::::---------::::::-===-=-----=====--==-:::::::::::::::::::::::::::::::::::: ..:. ... ....... . .................................................................................................................................................................::::-------------:::..............:::-----====================++++++=================================================================================================================================-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::::::::----============+++*********++++++++++++++++++++++==---------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::................................................................................................................................. ...........................................................................................................................................:::--================================================================---:::.....................................................................................:::-==++****++++=--::::............................................................................................::::::::::::::::::::::::::::.........................................................................................::::::::::::--===========++***################################################################################################*********************************************************************##################******************####################*****************###################################*************************************#############################################################################################################################################################**########################################################################****************************************************************************************############************************************************************+++=====================================++**************************************************************++++++++++++++++++++++++++++++=================================================-----
**************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%*:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.....::::----------------------------------------------------=======================================================================++++++++++++++++==============================--------------------------------------------:::::::::::..............................................................................................:#%#######-..::.:*%###############%%%%%%%%%%%%%%###%#######################%%%%########################################################%%*....*%-%%%%####%%#%%%%%%%%%#-%=.::*%#%#%##:............=%%%%=...:%@@@@@@@@@@@@@@@@@%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####################################%%%%%%%%%%%#+======-----------------------------------------------------------------------:::::::::::::::::::::::::::::...... ... :+++=---::::::::::::::::::::---------------------------------------------::::----------:::::-==--=--===--====-==-::::::::::::::::::::::::::::::::::::. .:: ..... ... ....... . ......................................................................................................................:::.........................................::::-------------:::............::::----======================++++++=================================================================================================================================------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::::::::::::::::----===========++***##*****+++++++++++++++++++++++=--------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::............................................................................................................................... ...........................................................................................................................................:::--================================================================--:::.......................................................................................::--=+++***+++==--::::............................................................................................:::::::::::::::::::::::::::::........................................................................................::::::::::::--===========+++**#############################################################################################************************************************************************##################******************####################******************###################################***********************************###########################################################################################################################################################**************###############################################################***************************************************************************************#############************************************************************++======================================++***************************************************************++++++++++++++++++++++++++++++=================================================----
***************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::....::::-----------------------------------------------------======================================================================+++++++++++++++++===================================--------------------------------------::::::::::::..............................................................................................:#%#######-..::::+%###############%%%%%%%%%%%%%%###########################%%%%########################################################%%#....=#+%%%#####%%#%%%%%%%%%#=#-.::#%######.:...........=%%%%+...:%@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####################################%%%%%%%%%%%#=======------------------------------------------------------------------------::::::::::::::::::::::::::::........ .. :+++=----:::::::::::::::::::----------------------------------------------::::---------::::::==-==--=-----=-=-=--::::::::::::::::::::::::::::::::::::: . .:. ..... .. ....... ....................................................................................................................:::::::.......................................::::-------------:::...........:::----========================++++++=================================================================================================================================-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::::::::::::::::::---===========++***###****+++++++++++++++++***+++=-------::::::-------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::........................................................................................................................... ...........................................................................................................................................:::--================================================================--:::.......................................................................................::--==++***+++==--::::..............................................................................................:::::::::::::::::::::::::::........................................................................................:::::::::::---============++**#############################################################################################************************************************************************##################******************####################******************###################################*******************************##########################################################################################################################*****###################**########******************##################################################################**********************************************************************************###############***###*****************************##*********************+++======================================++****************************************************************++++++++++++++++++++++++++++++=================================================---
****************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@*:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::....::::-----------------------------------------------------=====================================================================++++++++++++++++++============================================---------------------------::::::::::::::..............................................................................................:#%#######-..:::.=#################%%%%%%%%%%%%%%%#########################%%%%#########################################################%%....-#*%%%#%###%%#%%%%%%%%%#*#:.::%%####%*.:...........=%%%%*...-%@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####################################%%%%%%%%%%%*=======------------------------------------------------------------------------::::::::::::::::::::::::::::........ .. .+++=----::::::::::::::::::::-----------------------------------------------::----------:::::--====------=----=-::::::::::::::::::::::::::::::::::::::. .: ... ... ........ ..................................................................................................................::::::::::.......................................:::--------------::..........:::---==========================++++++=================================================================================================================================-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::::::::::::::::::---==========+++***###****++++++++++++++++****+++=------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::........................................................................................................................ ...........................................................................................................................................:::---==============================================================---:::.......................................................................................::--==++**+++==---:::::..............................................................................................::::::::::::::::::::::::::........................................................................................:::::::::::---============++***#########################################################################################***#************************************************************************#################*******************###################******************#####################################*************************############################################################################################################################***********#***********#******************************#################################**###############################**********************************************************************************#######################*******************#############******************+++======================================++****************************************************************++++++++++++++++++++++++++++++++===============================================---
*****************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@%@+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::...:::::-----------------------------------------------------====================================================================++++++++++++++++++++================================================----------------------::::::::::::::...............................................................................................*########-..::::-#################%%%%%%%%%%%%%%%%%%%%%%%#################%%%%#########################################################%#....:##%%%%####%###%%%%%%%%###::.-%%####%=.............=%%%%#...=@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####################################%%%%%%%%%%%+=======-------------------------------------------------------------------------:::::::::::::::::::::::::::........ . .+++=-----::::::::::::::::::::----------------------------------------------:::---------:::::-==-=------==--=---::::::::::::::::::::::::::::::::::::::: .. .. ... ........ .................................................................................................................:::::::::::.......................................:::--------------:::.......::::---===========================++++++=================================================================================================================================-----------------------------------------------------------=-------------------------------------------------------------------------------------------------------------------------------------:::::::::::::::::---==========+++***####****++++++++++++++*****+++=----:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::..................................................................................................................... ............................................................................................................................................::---==============================================================---:::.......................................................................................:::-==+++++++==--:::::::.............................................................................................:::::::::::::::::::::::::::.......................................................................................:::::::::::---============++***#########################################################################################****************************************************************************#################*******************###################******************######################################****************###############################################################################################################################************************************************************###############################****#############################**********************************************************************************###########################****************###############****************+++======================================+++***************************************************************++++++++++++++++++++++++++++++++================================================--
******************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***********************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@*-:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::....:::::-----------------------------------------------------===================================================================+++++++++++++++++++++===========================================================--------------:::::::::::...............................................................................................+#######*:...:.::+#############%%#%%%%%%%%%%%%%%%%%%%%%%%%################%%%%########################################################%%#.....*##%%%####%###%%%%%%%%###::.=%######-.............=%%%%#...*@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######################################%%%%%%%%%%#=======--------------------------------------------------------------------------:::::::::::::::::::::::::::......... . =+++=----:::::::::::::::::::::----------------------------------------------::----------::::-==-=------=-----:::::::::::::::::::::::::::::::::::::::::. . ........ .. ........ ................................................................................................................::::::----::::......................................:::---------------:::....::::----===========================++++++++================================================================================================================================-----------------------------------------------------------=---------------------------------------------------------------------------------------------------------------------------------------:::::::::::::::---==========+++***####*****+++++++++++++*****++==----:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::................................................................................................................... ............................................................................................................................................:::--==============================================================--:::.........................................................................................::-==+++++++==--:::::::..............................................................................................::::::::::::::-----:::::::.......................................................................................:::::::::::--=============++***#########################################################################################****************************************************************************#################*******************##################*******************########################################************###############################################################################################################################**************************************************************###############################****############################***********************************************************************************############################**************#################***************++=======================================+++****************************************************************+++++++++++++++++++++++++++++++++==============================================--
******************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@=:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::....:::::-----------------------------------------------------===================================================================+++++++++++++++++++++==============================================================-------------:::::::::...............................................................................................+#######+:....:.:-###########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%################%%%%########################################################%%%.....=%#%%%########%%%%%%%%%%#::.+%######:.............=%%%%#..:#@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######################################%%%%%%%%%%#=======--------------------------------------------------------------------------:::::::::::::::::::::::::::......... . =+++=-----:::::::::::::::::::::---------------------------------------------:::----------:::-==-=-----------::::::::::::::::::::::::::::::::::::::::::: ........ .. . ........ ............. ................................................................................................:::::::------:::......................................::::--------------::::::::::---=============================++++++++================================================================================================================================-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::::::::::::---==========+++***####******+++++++++++******++==----:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::................................................................................................................. ............................................................................................................................................:::---=============================================================--:::.........................................................................................::-==+++++++==--:::::::..............................................................................................:::::::::::::-------::::::.......................................................................................:::::::::::--=============+++**#########################################################################################****************************************************************************#################*******************##################********************#########################################*******################################################################################################################################****************************************************************###############################****##########################################*********************************************************************#############################************##################**************+++=======================================+++****************************************************************++++++++++++++++++++++++++++++++++=============================================--
*******************************++++++++++++++++++++++++++++++++**+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@=:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::....::::--------------------------------------------------===-==================================================================+++++++++++++++++++++==================================================================-------------::::::...............................................................................................=#######+:.....:::################%%%%%%%%%%%%%%%%%%%%%%%%################%%%%########################################################%%%.....-##%%%%######%%%%%%%%%%##:.:*%###%#*:.:..........:=%%%%#:.:%@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####################################%%%%%%%%%%+=======--------------------------------------------------------------------------:::::::::::::::::::::::::::.......... -+++=-----::::::::::::::::::::::---------------------------------------------:::---------:::-=-==-==---=--:::::::::::::::::::::::::::::::::::::::::::::. .... ....... ............................................................................................................::::::--------::::......................................:::---------------:::::::----===============================++++++++===============================================================================================================================----------------------------------------------------------===------------------------------------------------------------------------------------------------------------------------------------------:::::::::::---==========+++**######******++++++++********++==---::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::............................................................................................................ .. ............................................................................................................................................:::---=============================================================--:::.........................................................................................::--=++++++==---::::::::...........................................................................................::::::::::::::--------::::::........................................................................................::::::::::--==============++**########################################################################################*****************************************************************************#################******************###################********************#####################################################################################################*#####################*****************#################################****************************************************************################################################################################*******************************************************************#####################################****########################**********+++=======================================+++****************************************************************++++++++++++++++++++++++++++++++++==============================================-
*******************************++++++++++++++++++++++++++++++++***++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%-::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::....::::--------------------------------------------------========================================================================++======+++++++++++===================================================================------------::::::...............................................................................................-#######+:........+################%%%%%%%%%%%%%%%%%%%%%%%################%%%%########################################################%%%:....:##%%%#######%%%%%%%%%%%#:::#%#####*:.............-%%%%#:.=%@@@@@@@@@@@@@@@@@%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####################################%%%%%%%%%%+=======--------------------------------------------------------------------------:::::::::::::::::::::::::::.......... -+++=------:::::::::::::::::::::---------------------------------------------:::----------::---==---===--::::::::::::::::::::::::::::::::::::::::::::::: ... ....... ...........................................................................................................:::::-----------:::......................................:::----------------:::::---=================================++++++++===============================================================================================================================----------------------------------------------------------===-------------------------------------------------------------------------------------------------------------------------------------------::::::::::---==========+++**#######*******++*+**********++==---:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::........................................................................................................... .. ............................................................................................................................................:::---============================================================---:::.........................................................................................::--=++++++==--:::::::::...........................................................................................:::::::::::::---------::::::........................................................................................::::::::::--==============++**#########################################################################################****************************************************************************#################*******************#################**********************#################################################################################################**************#####***************************########################*********************************************************************##################################################################################*****************************************************************##################################################################*********+++=======================================+++*****************************************************************++++++++++++++++++++++++++++++++++=============================================-
*******************************+++++++++++++++++++++++++++++++++***++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::...:::::-------------------------------------------------====================================================================================++++++++=====================================================================----------:::::................................................................................................:#######+:........-################%%%%%%%%%%%%%%%%%%%%%%%################%%%%########################################################%%%:.....*%%%%#######%%%%%%%%%%%*:::%%####%+..............-%%%%#:.+%@@@@@@@@@@@@@@@@@@%@%%%%%%%%%%%%%%%%%%%%%%###%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####################################%%%%%%%%%#=======---------------------------------------------------------------------------:::::::::::::::::::::::::::.......... :++++------::::::::::::::::::::::---------------------------------------------:::----------::--==--=---:::::::::::::::::::::::::::::::::::::::::::::::::. ....... ..........................................................................................................::::-------------:::......................................::::----------------------==================================++++++++===============================================================================================================================----------------------------------------------------------===-==-----------------------------------------------------------------------------------------------------------------------------------------:::::::::---==========+++**########********************++=----:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::......................................................................................................... .. ...............................................................................................................................................::::--============================================================--::::.........................................................................................::--=++++++==--:::::::::...........................................................................................:::::::::::::---------::::::........................................................................................::::::::::--==========-===++**#########################################################################################****************************************************************************##################******************#################**********************##############################################################################################**************************************************************************************************************************************#############################################################################################*********************************************************########################################################################**#*****++========================================+++*****************************************************************++++++++++++++++++++++++++++++++++++============================================
*******************************++++++++++++++++++++++++++++++++++****+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%*+--*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%-:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::...:::::-------------------------------------------------=====================================================================================++++++========================================================================--------:::::................................................................................................:#######+:........:################%%%%%%%%%%%%%%%%%%%%%%%################%%%%########################################################%%%:.....=%%%%%######%%%%%%%%%%%+::-%%#####=..............-%%#%#:.#@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%###########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####################################%%%%%%%%%*=======----------------------------------------------------------------------------::::::::::::::::::::::::::.......... .++++=-----:::::::::::::::::::::::--------------------------------------------:::--------------------:::::::::::::::::::::::::::::::::::::::::::::::::::: ....... ... .....................................................................................................::::-------------:::......................................::::----------------------==================================++++++++===============================================================================================================================----------------------------------------------------------=====-------------------------------------------------------------------------------------------------------------------------------------------::::::::---==========+++**#########*******************++=----::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::........................................................................................................ .. .................................................................................................................................................:::--============================================================--:::..........................................................................................::--==+++++==--:::::::::...........................................................................................::::::::::::----------::::::........................................................................................::::::::::--==========--==++**##########################################################################################***************************************************************************##################******************################************************###########################################################################################***********************************************************************************************************************************###**################################################################################################****************************************************#############################################################################*****++========================================+++******************************************************************+++++++++++++++++++++++++++++++++++============================================
*******************************+++++++++++++++++++++++++++++++++++****+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#*-:...=#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::...::::---------------------------------===-------------========================================================================================+++==========================================================================-------::::.................................................................................................:#######*:.......::################%%%%%%%%%%%%%%%%%%%%%%%#################%%%%#######################################################%%%:.....-#%%%%##%%##%%%%%%%%%%%=:.=%###%##-............:.:#%%%%.:%@@@@@@@@@@@@@@@@@@@@@%@@%%%%%%%%%###############%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###################################%%%%%%%%*=======-----------------------------------------------------------------------------::::::::::::::::::::::::::.......... .++++=------:::::::::::::::::::::::--------------------------------------------:::----------:-----:::::::::::::::::::::::::::::::::::::::::::::::::::::::. ....... ...........................:::::::::::..............................................................:::--------------:::......................................:::::--------------------===================================++++++++===============================================================================================================================----------------------------------------------------------==----------------------------------------------------------------------------------------------------------------------------------------------:::::::---===========+++**###########*************#***++=----::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::............................................................................................................ .................................................................................................................................................:::---==========================================================---:::..........................................................................................:::-==+++++==--::::::::::.........................................................................................::::::::::::----------:::::::........................................................................................::::::::::--=========---==++**##########################################################################################***************************************************************************##################******************################************************########################################################################################*************************************************************************************************************************************#########################################################################################################################################*****************#############################################################################*****++=========================================++******************************************************************++++++++++++++++++++++++++++++++++++===========================================
********************************++++++++++++++++++++++++++++++++++*****++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#+-::::.....*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@=::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::...::::-------------------------------=====-------------=======================================================================================================================================================================-----::::..................................................................................................#######*:.......::*###############%%%%%%%%%%%%%%%%%%%%%%%#################%%%%#######################################################%%%-.....:#%%%%#%%%##%%%%%%%%%%%-::+%%%####:............:..+%%%%.=%@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%#%##############%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###################################%%%%%%%#+======------------------------------------------------------------------------------::::::::::::::::::::::::::.......... ++++=-------:::::::::::::::::::::::--------------------------------------------::-----------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: ....... ..........................::::::::::::::::..........................................................:::--------------:::......................................::::::-------------------===================================++++++++===============================================================================================================================-----------------------------------------------------------=-----------------------------------------------------------------------------------------------------------------------------------------------:::::----===========+++**##############*********##***+==---:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::............................................................................................................ ..................................................................................................................................................:::---==========================================================---:::..........................................................................................:::-==++++==---::::::::::........................................................................................:::::::::::::----------:::::::........................................................................................::::::::::--=========---==++***########################################################################################****************************************************************************##################******************################************************####################################################################################****************************************************************************************************************************************###########################################################################################################################################**************###############################################################################****+++=========================================++*******************************************************************++++++++++++++++++++++++++++++++++++==========================================
********************************+++++++++++++++++++++++++++++++++++*****++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#+--::::::::::...*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%-:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::..:::::------------------------------=====--------------======================================================================================================================================================================-----:::::..................................................................................................*######*-.......::=###############%%%%#%%%%%%%%%%%%%%%%%%#################%%%%#######################################################%%%-......*%%%%%%%%##%%%%%%%%%%%-.:*%%%##%*:.:.........:..::#%%%:*@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%#################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###################################%%%%%%%*=======------------------------------------------------------------------------------::::::::::::::::::::::::::.......... +++++-------:::::::::::::::::::::::::-------------------------------------------:-----------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::. ....... .........................::::::::::::::::::........................................................:::--------------:::......................................::::::------------------====================================++++++++===============================================================================================================================-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:-----============+++**################******###***+==---:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::............................................................................................................ ...................................................................................................................................................::---==========================================================--:::.....................................................................:::::.................:::-==++++==---::::::::::.....................................................................................::::::::::::::::---------::::::::........................................................................................::::::::::--=========----==+***######################################################################################******************************************************************************##################******************###############*************************################################################################***********************************************************************************************************************************************************############################################################################################################################################*********####################################################################################****++==========================================++*******************************************************************+++++++++++++++++++++++++++++++++++++=========================================
********************************++++++++++++++++++++++++++++++++++++*****+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%*=-:-::-:::::::::....#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@*:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::..:::::------------------------------=====--==----------=====================================================================================================================================================================------::::...................................................................................................+#######-......::.-###############%%%%#%%%%%%%%%%%%%%%%%%#################%%%%#######################################################%%%-......=%%%%%%%%%#%%%%%%%%%%%-.:#%##%#%+..:.........:.:::%%%%:#@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%#################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###################################%%%%%%%+=======------------------------------------------------------------------------------::::::::::::::::::::::::::.......... +++++-------:::::::::::::::::::::::::-------------------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: ....... .........................::::---------:::::::......................................................:::--------------:::......................................::::::------------------====================================++++++++===============================================================================================================================-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------============+++**###################****#***++==---:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::............................................................................................................ ...................................................................................................................................................:::--=========================================================---:::....................................................................:::::::.................::--=++++==--:::::::::::....................................................................................:::::::::::::::::---------::::::::........................................................................................::::::::::--=========----==+***###################################################################################*********************************************************************************##################******************###############*************************############################################################***************************************************************************************************************************************************************############################################################################################################################################********#####################################################################################****++==========================================++*******************************************************************+++++++++++++++++++++++++++++++++++++=========================================
********************************+++++++++++++++++++++++++++++++++++++******++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***********************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#+-:::::::::::::::::::...#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@=:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::...::::---------------------------------------------------==================================================================================================================================================================------:::::....................................................................................................=#######-........::###############%%%%##%%%%%%%%%%%%%%%%%#################%%%########################################################%%%-......-#%%%%%%%%%%%%%%%%%%%%:.:#######=...:..........:.:#%%#-%@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%#################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#################################%%%%%%%#=======-------------------------------------------------------------------------------::::::::::::::::::::::::::.......... +++++=-------::::::::::::::::::::::::::------------------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::. ........ .........................::::-----------:::::::....................................................::---------------:::......................................::::::-----------------======================================+++++++===============================================================================================================================------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------=============+++**###################********++==---:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::................................................................................................::........... .... ......................................................................................................................................................:::---========================================================---:::...................................................................::::::::.................::--==+++==--::::::::::::...................................::::::::::::................................::::::::::::::::::::----------::::::::.......................................................................................:::::::::::---=======-----==+***#############################################################################***************************************************************************************##################******************###############***********************#########################################################******************************************************************************************************************************************************************##########*################################################################################################################################################################################################################################****++==========================================++********************************************************************++++++++++++++++++++++++++++++++++++++=======================================
********************************+++++++++++++++++++++++++++++++++++++******++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***********************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#=-:::::::::::::::::::::.:..=@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.:::::---------------------------------------------------=================================================================================================================================================================------:::::.....................................................................................................-#######-.......:::*##############%%%%##%%%%%%%%%%%%%%%%%#################%%%########################################################%%%-......:#%%%%%%%%%%%%%%%%%%%%:.-%%#####-..:.........:...:%%%%+@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%#################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#################################%%%%%%%#=======-------------------------------------------------------------------------------::::::::::::::::::::::::::.......... +++++=-------:::::::::::::::::::::::::::-----------------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::. ........ ..........................:::-------------:::::::.................................................:::---------------:::......................................::::::-----------------======================================+++++++===============================================================================================================================------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------=============+++**##################*********++==--::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::...............................................................................................:::........... ..... .......................................................................................................................................................:::---========================================================--:::....................................................................::::::::.................:::-==++===--::::::::::::...................................::::::::::::................................::::::::::::::::::::---------::::::::::......................................................................................:::::::::::---=======-----==+***###########################################################################*****************************************************************************************##################*******************##############**********************###################################################*************************************************************************************************************************************************************************###########################################################################################################################################################################################################################################****++==========================================++*********************************************************************++++++++++++++++++++++++++++++++++++++======================================
+*******************************++++++++++++++++++++++++++++++++++++++*******++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***********************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@*=::::::::::::::::::::::::::.:.:%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@+:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.:::::---------------------------------------------------==============================================================================================================================================================-------:::::.......................................................................................................:#######=......:::.+##############%%%%##%%%%%%%%%%%%%%%%##################%%%########################################################%%#-.......+%%%%%%%%%%%%%%%%%%%%:.=%#####*:.::.........:...:%%%%#@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%#################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#################################%%%%%%%*========------------------------------------------------------------------------------::::::::::::::::::::::::::.......... =++++=--------:::::::::::::::::::::::::::-----------------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: ........ .........................:::----------------::::::...............................................:::---------------:::......................................::::::----------------=======================================+++++++===============================================================================================================================-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------==============+++**##################*********++=---::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::...............................................................................................::::.......... .................................................................................................................................................................................::---=======================================================---:::...................................................................:::::::::.................:::-======---::::::::::::..................................::::::::::::::...............................::::::::::::::::::::---------::::::::::......................................................................................:::::::::::--========-----==++**##########################################################################******************************************************************************************###################******************###############******************#################################################*****************************************************************************************************************************************************************************############################################################################################################################################################################################################################################***+++==========================================++**********************************************************************+++++++++++++++++++++++++++++++++++++======================================
++++****************************+++++++++++++++++++++++++++++++++++++++*******++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@#=-::--:::--:----:::::::::::::::...=@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%-::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.:::::----------------------------------------------------===========================================================================================================================================================-------::::::.........................................................................................................#######=......:::.-##############%%%%##%%%%%%%%%%%%%%%%##################%%%#######################################################%%%*:.......=%%%%%%%%%%%%%%%%%%%%:.+%#####*:::.:........:...:%%%%%@@@@@@@@@@@@@@@@@@@@@%@@@@@@%%%%################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#################################%%%%%%%+========------------------------------------------------------------------------------::::::::::::::::::::::::::.......... -++++=--------::::::::::::::::::::::::::::-----------------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::. ........ .........................::::-----------------::::::::...........................................:::---------------:::......................................::::::----------------=======================================+++++++===============================================================================================================================----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------===============+++**#################**********++=---:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::...............................................................................................:::::.......... .................................................................................................................................................................................:::--=======================================================---:::...................................................................:::::::::.................:::--=====--::::::::::::::................................::::::::::::::::..............................::::::::::::::::::::-------:::::::::::::.....................................................................................:::::::::::--========-----==++**#####################################################################***********************************************************************************************###################******************################************##################################################*********************************************************************************************************************************************************************************###########################################################################################################################################################################################################################################****+++==========================================++**********************************************************************+++++++++++++++++++++++++++++++++++++++====================================
+++++***************************++++++++++++++++++++++++++++++++++++++++*******+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@%*-:::--::---::::::::::::::::::::::....*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@=::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.:::::----------------------------------------------------========================================================================================================================================================-------:::::::...........................................................................................................#######=......:::.:##############%%%%###%%%%%%%%%%%%%%%###################%%%######################################################%%%*:.......-#%%%%%%%%%%%%%%%%%%%:.*%#####+:::.:..........:..#%%%@@@@@@@@@@@@@@@@@@@@@@%@@@@@@%%%%################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#################################%%%%%%#+========------------------------------------------------------------------------------::::::::::::::::::::::::::.......... :++++=---------::::::::::::::::::::::::::::----------------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: ........ .........................::::-------------------:::::::::........................................::----------------:::......................................::::::---------------========================================+++++++===============================================================================================================================----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------===============+++**#################**********+==---::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::................................................................................................:::::.......... ....................................................................................................................................................................................:::--=======================================================--:::....................................................................::::::::...................::--=====--::::::::::::::...............................:::::::::::::::::..............................:::::::::::::::::::::----:::::::::::::::.....................................................................................:::::::::::--========-----==++**###################################################################*************************************************************************************************###################******************#################*****######################################################*********************************************************************************************************************************************************************************#############################################################################################################################################################################################################################################****++===========================================++***********************************************************************++++++++++++++++++++++++++++++++++++++====================================
+++++***************************+++++++++++++++++++++++++++++++++++++++++*******++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@#+-::--:::::--:::-:::::::::::::::::::....=@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@*:::::::::::::::::::::::::::::::::::::::::::::::::::::::::..:::::----------------------------------------------------======================================================================================================================================================-------:::::::.............................................................................................................*######+......:::::##############%%%%%##%%%%%%%%%%%%%%%###################%%%#######################################################%%+-.......:#%%%%%%%%%%%%%%%%%%%::#%#####=:.:.:..........:..#%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%################################%%%%%%*=========------------------------------------------------------------------------------::::::::::::::::::::::::::.......... :+++++----------::::::::::::::::::::::::::::----------------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::.:::. ......... .........................:::---------------------::::::::::.....................................:::---------------:::......................................::::::--------------==========================================+++++================================================================================================================================-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------==============+++**#################**********+==---::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::................................................................................................::::::......... .....................................................................................................................................................................................:::---=====================================================---:::.....................................................................::::::....................:::--===---::::::::::::::...............................::::::::::::::::::.............................:::::::::::::::::::::--:::::::::::::::::.....................................................................................:::::::::::--========------=++**###############################################################*****************************************************************************************************###################******************#########################################################################************************************************************************************************************************************************************************************#############################################################################################################################################################################################################################################****++===========================================++***********************************************************************+++++++++++++++++++++++++++++++++++++++===================================
+++++***************************++++++++++++++++++++++++++++++++++++++++++********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***********************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@%@@@@%%%*=-:-::--:---:::::::::::::::::::::::::::.::=%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%@@@@@@@@@@@@@@%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@%-::::::::::::::::::::::::::::::::::::::::::::::::::::::::..:::::-----------------------------------------------------==================================================================================================================================================------:::::::::...............................................................................................................*######+.......:::.*#############%%%%%##%%%%%%%%%%%%%%####################%%%#######################################################%%+-.......:*%%%%%%%%%%%%%%%%%%%::#%#####-::::.::::::::.....#%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%###############%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%################################%%%%%#+=========------------------------------------------------------------------------------::::::::::::::::::::::::::.......... .+++++----------::::::::::::::::::::::::::::::---------------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::. ..:: ......... .........................::::-----------------------::::::::::.................................::::---------------:::......................................::::::-------------===========================================++++=================================================================================================================================-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------============+++**#################**********+==---::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::................................................................................................::::::......... .......... ........................................................................................................................................................:::---=====================================================--::::......................................................................:::......................:::-------:::::::::::::::..............................:::::::::::::::::::.............................::::::::::::::::::::::::::::::::::::::::.....................................................................................:::::::::::--========------==+**#############################################################*******************************************************************************************************####################*****************#######################################################################*************************************************************************************************************************************************************************************##############################################################################################################################################################################################################################################***+++===========================================++************************************************************************+++++++++++++++++++++++++++++++++++++++==================================
+++++***************************++++++++++++++++++++++++++++++++++++++++++*********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***********************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@%*==--::-::--:----::::::::::::::::::::::::::::::::+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%@@@@@@@@@@@@@@@%%%%@@@@@@%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%=::::::::::::::::::::::::::::::::::::::::::::::::::::::::..:::::----------------------====---------------------------===========================================+================================================================================================----------:::::::...................................................................................................................+######+:......:::.=#############%%%%%###%%%%%%%%%%%%%####################%%%#######################################################%%=-........+#%%%%%%%%%%%%%%%%%%::%%#####:.:.:.::::::::.....%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%###############%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%################################%%%%%#+=========------------------------------------------------------------------------------::::::::::::::::::::::::::.......... .+++++----------:::::::::::::::::::::::::::::::--------------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::.. ..:: ......... .. ....................::::--------------------------::::::::::::............................::::---------------:::......................................::::::------------=============================================+++=================================================================================================================================-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------========+++**#################*********++==--:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::................................................................................................::::::......... .... .... ........................................................................................................................................................:::--====================================================---:::.................................................................................................:::------:::::::::::::::..............................::::::::----:::::::::::.........................::::::::::::::::::::::::::::::::::::::::.....................................................................................:::::::::::--=======-------==+**###########################################################*********************************************************************************************************####################*****************##################################################****************#*****************************************************************************************************************************************************************************************##############################################################################################################################################################################################################################################***+++===========================================++*************************************************************************+++++++++++++++++++++++++++++++++++++++=================================
+++++***************************+++++++++++++++++++++++++++++++++++++++++++*********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@%@@@@@@@@@@@#+::::::::----------::::::::::::::::::::::::::::....:%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%@@@@@@@@@@@@@@@@@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-------------------===========--==------=--------=---===-====================================++=+=========================================================================================---------------::::::......................................................................................................................=######*:......:::::#############%%%%####%%%%%%%%%%%%%%###################%%%#######################################################%%=-.......:=#%%%%%%%%%%%%%%%%%%:-%#####*:::::::::::::.....:%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@%@%%%%###############%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%################################%%%%#*++========------------------------------------------------------------------------------::::::::::::::::::::::::::.......... +++++=----------:::::::::::::::::::::::::::::::--------------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::. ..::. ......... ...................::::--------------------------:::::::::::::::........................::::---------------:::......................................::::::-----------=================================================================================================================================================================================------------------------------------------------------------=-==-----------------------------------------------------------------------------------------------------------------------------------------------------------=====++***################**********++==--:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::................................................................................................::::::........ . ...... ......................................................................................................................................................:::--===================================================---::::.................................................................................................::::----::::::::::::::::.............................:::::::------:::::::::........................:::::::::::.::::::::::::::::::::::::::::::.:....................................................................................:::::::::::--=======-------==+***########################################################***********************************************************************************************************####################*****************#################*################**************************************************************************************************************************************************************************************************************************##############################################################################################################################################################################################################################################***+++===========================================++*************************************************************************+++++++++++++++++++++++++++++++++++++++=================================
+++++***************************++++++++++++++++++++++++++++++++++++++++++++*********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++*++#@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@%@@@@@@@@@@@%@@@#=:.::::::::::--------:::::::::::::::::::::::::::......+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%@@@@@@@@@@@@@@@@@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%+:::::::::::::::::::::::::::::::::::::::::::::::::::::::..::::::------------------=============-----=====---======--========================================+==========================================================================================--------------:::::::........................................................................................................................-######*:......:::::#############%%%%####%%%%%%%%%%%%%%###################%%%#######################################################%%=-.......:=#%%%%%%%%%%%%%%%%%%:=%#####+:..:::::::::......-%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%###############%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###############################%%%%%#*++========------------------------------------------------------------------------------::::::::::::::::::::::::::.......... +++++=-----------:::::::::::::::::::::::::::::::-------------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::. ..:: ......... ................::::------------------------::::::::::::::::::::::::::.............:::::---------------:::......................................::::::---------=================================================+=================================================================================================================================---------------------------------==------------------------=====------------------------------------------------------------------------------------------------------------------------------------------------------------====++***################**********++==--:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::................................................................................................::::::........ . ........... .......................................................................................................................................................:::--==================================================----:::...................................................................................................:::::::::::::::::::::::.............................::::::--------::::::::.......................::::::::::::.::::::::::::::::::::::::::::::::....................................................................................:::::::::::--=======-------==+***########################################################***********************************************************************************************************####################*******************#############*******************************************************************************************************************************************************************************************************************************************###############################################################################################################################################################################################################################################****+++===========================================++**************************************************************************+++++++++++++++++++++++++++++++++++++++================================
+++++***************************+++++++++++++++++++++++++++++++++++++++++++++*********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++**++*@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@#=:..::::::::::::::::::::::::::::::::::::::::::::::......:@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%@@@@@@@@@@@@@@@@@@@%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%-::::::::::::::::::::::::::::::::::::::::::::::::::::::...::::::------------------========================================================================+=========================================================================================-------------:::::::...........................................................................................................................:######*:......::::.*############%%%%#####%%%%%%%%%%%%%%##################%%%#######################################################%%+-.......:-*#%%%%%%%%%%%%%%%%%:+%#####=::::::::::::..:...*%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%###############%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##############################%%%%%#+++========------------------------------------------------------------------------------::::::::::::::::::::::::::.......... +++++=-----------::::::::::::::::::::::::::::::::-------------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::. .::. ......... ................:::::--------------------:::::::::::::::::::::::::::::::::::::::::::::----------------:::......................................::::::---------=================================================+=================================================================================================================================---------------------------------==------------------------====-------------------------------------------------------------------------------------------------------------------------------------------------------------====++***################**********++=---:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::................................................................................................::::::........ . .....................................................................................................................................................................................:::---================================================----::::....................................................................................................::::::::::::::::::::::............................:::::::--------::::::::......................:::::::::::::.::::::::::::::::::::::::::::::::....................................................................................:::::::::::--=======-------==+***########################################################***********************************************************************************************************#####################********************########**********************************************************************************************************************************************************************************************************************************************###############################################################################################################################################################################################################################################****++============================================++**************************************************************************+++++++++++++++++++++++++++++++++++++++================================
++++****************************++++++++++++++++++++++++++++++++++++++++++++++*********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++**+++#@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@#=:...:::::::::::::::::::::::::::::::::::::::::::::::.......#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@*::::::::::::::::::::::::::::::::::::::::::::::::::::::..:::::::::-----------------================================================================================================================================================================-----------::::::::..............................................................................................................................######*:......::::.=############%%%%#####%%%%%%%%%%%%%%##################%%%%######################################################%%+-.......:-+#%%%%%%%%%%%%%%%%#:*%#####-::::::::::::......-%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%###############%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##############################%%%%%#++++=======-------------------------------------------------------------------------------:::::::::::::::::::::::::.......... +++++=-----------::::::::::::::::::::::::::::::::::------------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::...:::. .::: ......... ..................:::::::::------------:::::::::::::::::::::::::::::::::::::::::::::::-----------------:::......................................:::::::--------=================================================++================================================================================================================================--------------------------------====--=--------------------====--==----------------------------------------------------------------------------------------------------------------------------------------------------------===++***################**********+==---:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::................................................................................................::::::........ . .....................................................................................................................................................................................:::---===============================================----::::......................................................................................................:::::::::::::::::::::............................::::::----------:::::::....................::::::::::::::::::::::::::::::::::::::::::::::::....................................................................................:::::::::::--=======-------==+***########################################################***********************************************************************************************************#####################**************************************************************************************************************************************************************************************************************************************************************************###############################################################################################################################################################################################################################################****++============================================++***************************************************************************+++++++++++++++++++++++++++++++++++++++===============================
++++***************************++++++++++++++++++++++++++++++++++++++++++++++++**********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++*+++*@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@%+:.....::::::::::-::::::::::::::::::::::::::::::::::::.......=@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%=:::::::::::::::::::::::::::::::::::::::::::::::::::::..:::::::::::::::-------------==============================================================================================================================================================---------:::::::.................................................................................................................................*#####*:......:::::-############%%%%#####%%%%%%%%%%%%%%##################%%%%######################################################%%+=.......::+#%%%%%%%%%%%%%%%%#-#%#####::.::::::::::......-%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%###############%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#############################%%%%%*++++=======-------------------------------------------------------------------------------:::::::::::::::::::::::::.......... ++++++------------:::::::::::::::::::::::::::::::::---------------------------------------------------::::::::::::::::::::::::::::::::::::::::::.....:.. ..:::: . ... .......... .......................::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::------------------:::......................................:::::::--------=================================================+++===============================================================================================================================--------------------------------====--=--------------------=----===----------------------------------------------------------------------------------------------------------------------------------------------------------===++***################*********++==---:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::................................................................................................::::::........ .. .....................................................................................................................................................................................:::--=============================================-----::::........................................................................................................::::::::::::::::::::............................::::::----------:::::::...................::::::::::::::::::::::::::::::::::::::::::::::::.....................................................................................:::::::::::--=======-------==++**########################################################************************************************************************************************************####################**************************************************************************************************************************************************************************************************************************************************************************##############################################################################################################################################################################################################################################****+++===========================================+++***************************************************************************+++++++++++++++++++++++++++++++++++++++===============================
*******************************+++++++++++++++++++++++++++++++++++++++++++++++++***********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++**+++%@%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@%+-.......:::::::::::::::::::::::::::::::::::::::::::::::........#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#:::::::::::::::::::::::::::::::::::::::::::::::::::::..:::::::::::::::::::::--------------======================================================================================================================================================-------::::::::...................................................................................................................................*#####*:......::::::#############%%%######%%%%%%%%%%%%%%#################%%%%######################################################%%+=........:=#%%%%%%%%%%%%%%%%#-#%####+::.::::::::::......=%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%##############%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#############################%%%%#*++++=======------=-------------------------------------------------------------------------::::::::::::::::::::::::......... ++++++-------------::::::::::::::::::::::::::::::::::-------------------------------------------------:::::::::::::::::::::::::::::::::::::::::.. ..:... ..::::. .... ......... ..........................:::::::::::::::::::::............:::::::::::::::----------------------------------:::.....................................:::::::--------=================================================++++==============================================================================================================================-------------------------------======-=--------------------------=-----------------------------------------------------------------------------------------------------------------------------------------------------------===+++**################*********++==---:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::................................................................................................::::::........ .. ....................................................................................................................................................................................:::---===========================================----:::::..........................................................................................................:::::::::::::::::::............................::::::----------:::::::...................:::::::::::::::::::::::::::::::::::::::::::::::......................................................................................::::::::::--========-------==++**########################################################************************************************************************************************************####################*************************************************************************************************************************************************************************************************************************************************************************###############################################################################################################################################################################################################################################****+++===========================================+++***************************************************************************+++++++++++++++++++++++++++++++++++++++===============================
*******************************++++++++++++++++++++++++++++++++++++++++++++++++++***********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++************************#*******************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++**+++#@%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@%@@@%*-::.......:::::::::::::::::::::::::::::::::::::::::::::::........-%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-----------------==============================================================================================================================================-------:::::::......................................................................................................................................+#####*:......:::::.*############%%%######%%%%%%%%%%%%%%##################%%%######################################################%%+=........:=*%%%%%%%%#%%%%%%%%-%%####=::::::::::::.......*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%##############%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#############################%%%%#++++========-----=======--------------------------------------------------------------------::::::::::::::::::::::::......... ++++++-------------:::::::::::::::::::::::::::::::::::------------------------------------------------::::::::::::::::::::::::::::::::::::::::::.. .:......:::::: ...... ......... ...............................:::::::::......................:::::::::::---------------------------------:::.....................................:::::::-------==================================================++++==============================================================================================================================-------------------------------======--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------::::----====++**################*********++==---:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::................................................................................................::::::........ .. ........ ........................................................................................................................................................:::---==========================================----:::::............................................................................................................::::::::::::::::::............................:::::-----------:::::::...................:::::::::::::::::::::::::::::::::::::::::::::.......................................................................................:::::::::::--========-------==++**########################################################************************************************************************************************************###################*************************************************************************************************************************************************************************************************************************************************************************################################################################################################################################################################################################################################################****+++===========================================+++****************************************************************************+++++++++++++++++++++++++++++++++++++++==============================
*******************************+++++++++++++++++++++++++++++++++++++++++++++++++++***********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********************#######****************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++**+++*@@%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@%#=-:::.......:::::::-:::::::::::::::::::::::::::::-:::::::::.........+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#-:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-------------------=========+++==============================================================================================================================-----:::::::........................................................................................................................................+#####*:......::::::*############%%%######%%%%%%%%%%%%%%##################%%%######################################################%%+=........:-+%%%%%%%%#%%%%%%%%=%%####=::.::::::..:.......%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%###############%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%############################%%%%#++++========----=========--------------------------------------------------------------------:::::::::::::::::::::::......... ++++++-------------:::::::::::::::::::::::::::::::::::::-----------------------------------------------------:::::::::::::::::::::::::::::::::::.. .:::....::::::. ....... ......... ............................................................:::::::::---------------------------------:::....................................:::::::-------==================================================++++==============================================================================================================================------------------------------========-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::::----===++**################*********++==---:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::................................................................................................::::::........ .. .......................................................................................................................................................:::---==========================================---:::::.............................................................................................................::::::::::::::::::............................:::::-----------:::::::..:................::::::::::::::::::::::::::::::::::::::::::::........................................................................................:::::::::::--=======--------==++**########################################################************************************************************************************************************###################*************************************************************************************************************************************************************************************************************************************************************************########**######################################################################################################################################################################################################################################****++============================================+++****#***********************************************************************++++++++++++++++++++++++++++++++++++++++=============================
*******************************++++++++++++++++++++++++++++++++++++++++++++++++++++************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******************###############***********************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++*%@%%%%%%%%%%%%%%%%%%%%%%%@@%@@@@@@@@@@@@@@@@@@@@#+=--:::.......::::::::::::::::::::::::::::::::::::--::::::::::........:#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-::::::::::::--------------------======++++===========================================================================================================================-----:::::::..........................................................................................................................................=#####*:......::::::+############%%%#######%%%%%%%%%%%%%%#################%%%######################################################%%+=....:...:-+#%%%#%%%%%%%%%%%%=%%####-:::.:::.:.::......-%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%#############%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##########################%%%%%#++++=====================---------------------------------------------------------------------::::::::::::::::::::::........ ++++++=-------------:::::::::::::::::::::::::::::::::::::---------------------------------------------------::::::::::::::::::::::::::::::::::::......:::::::::::::. ......... ......... ..........................................................::::::::-------------------------------:::....................................:::::::-------==================================================+++===============================================================================================================================--------------------------------====--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::::::---===++**###############*********+++=----:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::................................................................................................::::::......... ... . .. ........................................................................................................................................................::---=========================================---::::................................................................................................................:::::::::::::::::...........................::::::-----------:::::::.:.................:::::::::::..::::::::::::::::::::::::::::::::.......................................................................................:::::::::::--=======--------==++**########################################################************************************************************************************************************####################***********************************************************************************************************************************************************************************************************************************************************************#####******######################################################################################################################################################################################################################################****++============================================++******************************************************************************+++++++++++++++++++++++++++++++++++++++=============================
*******************************++++++++++++++++++++++++++++++++++++++++++++++++++++**************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****************#####################******************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++%@@@%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@%@@%%*+==--:::.......:::::::::::::::::::::::::::::::::::::::::::::::.:....:...-%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%-:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::----:::::::::::::::::::::-----------=====++++=========================================================================================================================------::::::............................................................................................................................................-######:......::::::+############%%%#######%%%%%%%%%%%%%%#################%%%######################################################%%+=........:-=#%%%#%%%%%%%%%%%%=%####*:::::::::.:........*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%#############%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##########################%%%%%*++++======================--------------------------------------------------------------------::::::::::::::::::::::........ ++++++=-------------::::::::::::::::::::::::::::::::::::::----------------------------------------------------:::::::::::::::::::::::::::::::::::....::::::::::::::: ........... ......... ............................................................::::::::------------------------------:::...................................:::::::-------==================================================++++==============================================================================================================================--------------------------------====--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::::::----==++***##############*********+++=----:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::................................................................................................::::::......... ... ....................................................................................................................................................................:::--=========================================---::::....................................................................................:............................::::::::::::::::...........................::::::-----------:::::::.:.................::::::::::....::::::::::::::::::::::::::::::.......................................................................................::::::::::::--=======--------==++**########################################################************************************************************************************************************####################**********************************************************************************************************************************************************************************************************************************************************************#####*******######################################################################################################################################################################################################################################****++===========================================+++******************************************************************************+++++++++++++++++++++++++++++++++++++++=============================
*******************************+++++++++++++++++++++++++++++++++++++++++++++++++++++**************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++****************########################****************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++#@@@@%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@%@@@%@%%#+++==--:::.......::::::::::::::::::::::::::::::::::::::::::::--::::.:..:...-%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@+:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-----:::...::::::::::::::::::::-------====+++=======================================================================================================================------::::::..............................................................................................................................................-######::......:::::-############%%%#######%%%%%%%%%%%%%%#################%%%######################################################%%+=........:-=#%%%%%%%%%%%%%%%%+%####+:.::::::::.::.....:%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%#############%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##########################%%%%#*++++=======================-------------------------------------------------------------------::::::::::::::::::::::........ ++++++=--------------::::::::::::::::::::::::::::::::::::::----------------------------------------------------::::::::::::::::::::::::::::::::::::.::::::::::::::::. .....:::.... .... ......... .....................................................:::::::----------------------------:::...................................:::::::-------==================================================++++==============================================================================================================================--------------------------------====--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------::::::::---===+***##############********+++==---::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::................................................................................................::::::......... ... .......................................................................................................................................................................:::---========================================---:::...................................................................................::::...........................::::::::::::::::...........................::::::-----------:::::::.:.................:::::::::......::::::::::::::::::::::::::::........................................................................................::::::::::::--=======--------==++**########################################################************************************************************************************************************####################**********************************************************************************************************************************************************************************************************************************************************************####********######################################################################################################################################################################################################################################****++===========================================+++*******************************************************************************+++++++++++++++++++++++++++++++++++++++============================
*******************************++++++++++++++++++++++++++++++++++++++++++++++++++++++***************+++++++++++++++++++++++++++++++++++++++++++++++++++++++**************###########################***************************************************************+++++++++++*****+++++++++++++++++++++++++++++++++++++++*%@@@@%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@%@@%%%%%#*+++===--:::.......:::::::::::::::::::::::::::::::::::::::::::::::::::::.::...=%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%-:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::------:::...:::::::::::::::::::::::-----====+======================================================================================================================-----:::::::................................................................................................................................................-######::......::::::############%%%#######%%%%%%%%%%%%%%%################%%%######################################################%%+=.........-=*%%%%%#%%%%%%%%%%#%####=:::::::::::.......-%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%#############%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#########################%%%%#+++++========================------------------------------------------------------------------::::::::::::::::::::::........ ++++++=---------------:::::::::::::::::::::::::::::::::::::::---------------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::. ....:::::... ......... ......... ...... ..................................................:::::::-------------------------:::...................................:::::::-------==================================================++++==============================================================================================================================--------------------------------====--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------::::::::----==++**##############********+++==---::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::................................................................................................::::::......... ... ........................................................................................................................................................................:::---========================================---:::..................................................................................::::::...........................:::::::::::::::...........................::::::-----------:::::::.:.................::::::::::....:::::::::::::::::::::::..............................................................................................::::::::::::--=======--------==++***########################################################***********************************************************************************************************####################*********************************************************************************************************************************************************************************************************************************************************************#####********######################################################################################################################################################################################################################################****++===========================================+++********************************************************************************++++++++++++++++++++++++++++++++++++++============================
*******************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++***************++++++++++++++++++++++++++++++++++++++++++++++++++++++*************##############################**************************************************************++++++++********++++++++++++++++++++++++++++++++++++++#@@@@@@%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@%%%%@%#*+++++===--::.......::::::::::::::::::::::::::::::::::::::::::::::::::::::::.::..=@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@*:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::------:::...:::::::::::::::::::::::::----========================================================================================================================-----:::::::..................................................................................................................................................:######-:......::::::############%%%########%%%%%%%%%%%%%%%###############%%%######################################################%%+=:........-=+#%#%%#%%%%%%%%%#######-::::::::.::......-%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%############%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########################%%%%%#+++++========================-------------------------------------------------------------------:::::::::::::::::::::........ +*++++=---------------:::::::::::::::::::::::::::::::::::::::-----------------------------------------------------:::::::::::::::::::::::::....::::::::::::::::::::::: ....::::::... ............. ......... ..........................................................:::::::-----------------------:::...................................:::::::-------==================================================++++==============================================================================================================================--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::::::::---==++**##############*******++++==---:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::...............................................................................................::::::......... ... .........................................................................................................................................................................:::--========================================---:::..................................................................................::::::...........................::::::::::::::.............................:::::-----------:::::::::.........................:::::::::::::::::::::::::::................................................................................................::::::::::::--=======--------==++***########################################################***********************************************************************************************************####################*********************************************************************************************************************************************************************************************************************************************************************####**********#####################################################################################################################################################################################################################################****++==========================================+++*********************************************************************************+++++++++++++++++++++++++++++++++++++++===========================
*******************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++***************++++++++++++++++++++++++++++++++++++++++++++++++++++*************#################################*************************************************************++++++**********++++++++++++++++++++++++++++++++++++*%@@@@@%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@%%@%%%#*++++++===---::.......:::::::::::::::::::::::::::::::::::::-::::::::::::::::::::::::=%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%-::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::------:::....::::::::::::::::::::::::::---=======-----=========================================================================================================-----::::::.....................................................................................................................................................:######-:......::::::*###########%%%########%%%%%%%%%%%%%%%###############%%%######################################################%%+=:........:=+##%%%#%%%%%%%%%%######:::::::::::......=%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%############%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######################%%%%%*++++++==========================-----------------------------------------------------------------::::::::::::::::::::........ .+*++++=----------------::::::::::::::::::::::::::::::::::::::::----------------------------------------------------:::::::::::::::::::::::......::::::::::::::::::::::: ....::::::... ................. ......... ... ............................................................::::::---------------------:::...................................:::::::-------===================================================+++==============================================================================================================================--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::::::::----==+***#############******++++==----:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::...............................................................................................::::::......... .... ..........................................................................................................................................................................:::--===========================--===========---:::.................................................................................::::::::...........................:::::::::::::.............................:::::-----------::::::::::........................::::::::::::::::::::::::::................................................................................................:::::::::::::--======---------==++***#########################################################***********************************************************************************************************###################********************************************************************************************************************************************************************************************************************************************************************####***********#####################################################################################################################################################################################################################################****+++=========================================+++*****#****************************************************************************++++++++++++++++++++++++++++++++++++++===========================
*******************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++****************++++++++++++++++++++++++++++++++++++++++++++++++++************##################################***************************************************************+++***********+++++++++++++++++++++++++++++++++++++%@@@@%%%%%%%%%%%%%%%%@@@@@@@@@@@@%%%%%%@%*++++++++====--::.......:::::::-:::::::::::::::::::::::::::::-:::::::::::::::::::::::::-#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@*::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::------:::....::::::::::::::::::::::::::----===----------------===================--=========================================================================------::::::.......................................................................................................................................................:######=::.......::::+###########%%%########%%%%%%%%%%%%%#%###############%%%######################################################%%+=:........:=+##%%%%%%%%%%%%%%#####*::::::::::::....+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%#############%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######################%%%%#*++++++===========================----------------------------------------------------------------::::::::::::::::::::........ .+*+++++----------------:::::::::::::::::::::::::::::::::::::::::----------------------------------------------------::::::::::::::::::::::.. ..::::::...::::::::::::::. ....:::::::.. ..................... .......... ... .............................................................::::::------------------:::...................................::::::::------====================================================+===============================================================================================================================--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------::::::::::---==++***############******++++==----:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::...............................................................................................::::::......... .... ...........................................................................................................................................................................:::---========================-----===========--:::.................................................................................::::::::............................::::::::::::.............................::::------------::::::::::........................::::::::::::::::::::::::::................................................................................................::::::::::::---======---------==++***#########################################################***********************************************************************************************************#########**########********************************************************************************************************************************************************************************************************************************************************************####***********#####################################################################################################################################################################################################################################****+++========================================+++******#****************************************************************************+++++++++++++++++++++++++++++++++++++++==========================
*******************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****************+++++++++++++++++++++++++++++++++++++++++++++++++************##################################*****************************************************************************+++++++++++++++++++++++++++++++++++++#@@@@@%%%%%%%%%%%%%%%@@@@@@@@@@@%%%%%@%#+++++++++++==--:::.......:::::::-:::::::::::::::::::::::::::::::::::::::::::::::::::::::::+%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%-:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-----::::....:::::::::::::::::::::::::::---==-----------------------=========----------===================================================================-----:::::::.........................................................................................................................................................:######=::.........:.=###########%%%########%%%%%%%%%%%%%#%###############%%%######################################################%%+=:........:=+##%%#%%%%%%%%%%%%####+:::::::::::...:*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@%%%#############%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######################%%%%#*++++++============================---------------------------------------------------------------::::::::::::::::::::........ .+*+++++-----------------:::::::::::::::::::::::::::::::::::::::::---------------------------------------------------::::::::::::::::::::::.. ..:::::....::::::::::::::: ...::::-:::... ......................... .......... .... ..............................................................:::::::----------------:::...................................::::::::------====================================================================================================================================================================================--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------::::::::::----==+***############******++++==---::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::...............................................................................................::::::........ .... .............................................................................................................................................................................:::---========================-----===========--:::.................................................................................:::::::::............................:::::::::::.............................::::------------::::::::::.....................:::.::::::.:::::::::::::::::................................................................................................:::::::::::::--=======---------==++***#########################################################************************************************************************************************************######*****#######********************************************************************************************************************************************************************************************************************************************************************####***********#####################################################################################################################################################################################################################################*****++=======================================++++***********************************************************************************+++++++++++++++++++++++++++++++++++++++==========================
*******************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****************+++++++++++++++++++++++++++++++++++++++++++++++**********#####################################*****************************************************************************++++++++++++++++++++++++++++++++++++%@@@@%%%%%%%%%%%%%@@@@%@@%@@%%@%%%%@%#++++++++++++===--:::.......::::::::-:::::::::::::::::::::::::::::::::::::::::::::::::::::::::-#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@*::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::----:::::::::::::::::::::::::::::::::::-----------:-----------------------------------------==========================================================------:::::::...........................................................................................................................................................:######=:..........::-###########%%%########%%%%%%%%%%%%%%%###############%%%######################################################%%+=:........:=+#%%#%#%%%%%%%%%%%####=:.::::::::...:#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%############%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####################%%%%%#+++++++===============================-------------------------------------------------------------:::::::::::::::::::........ .+*+++++-----------------:::::::::::::::::::::::::::::::::::::::::-----------------------------------------------------::::::::::::::::::::.. ...:......::::::::::::::::: ...::::--::... .......................... ......... ...... ...............................................................::::::--------------:::....................................::::::::------====================================================================================================================================================================================--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::::::::::---==++***###########******++++==---:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::................................................................................................::::::............ ................................................................................................................................................................................:::---=======================-------==========---:::...............................................................................::::::::::..............................:::::::::.............................::::------------::::::::::.....................:::::::::::::::::::::::::::................................................................................:................:::::::::::::--=======--------===++***###########################################################*************************************************************************************************************#********######*********************************************************************************************************************************************************************************************************************************************************************###************####################################################################################################################################################################################################################################*****+++======================================+++**************************************************************************************++++++++++++++++++++++++++++++++++++++=========================
*******************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****************+++++++++++++++++++++++++++++++++++++++++++++++*********#######################################****************************************************************************++++++++++++++++++++++++++++++++++++%@@@@@%%%%%%%%%%%@@@@@@@@@@%%@%%@@@#*+++++++++++++===--:::.......:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-:-+%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%-::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--------::::::::-----------------------------------------------==============================================------:::::::.............................................................................................................................................................:######+:..........:::###########%%%#########%%%%%%%%%%%%%%###############%%%######################################################%%+=:........:=+#%%#%#%%%%%%%%%%%####-:::::::::.:.-%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%############%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####################%%%%%*++++++================================--------------------------------------------------------------::::::::::::::::::........ .+++++++=-----------------:::::::::::::::::::::::::::::::::::::::::-----------------------------------------------------:::::::::::::::::::.. .........::::::::::::::::::. ...::::--::... ........................... .......... ...... .................................................................::::::-----------:::.....................................::::::::------====================================================================================================================================================================================--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::::::::::----==++**###########******++++==---:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::................................................................................................::::::............. ..................................................................................................................................................................................:::--=======================--------=========---:::...............................................................................::::::::::...............................::::::::.............................::::------------::::::::::.....................:::::::::::::::::::::::::::.................................................................................................:::::::::::::--=======--------===++***###########################################################**********************************************************************************************************************######*********************************************************************************************************************************************************************************************************************************************************************##*************######################################################################################################################################################################################################################################****+++====================================+++***************************************************************************************++++++++++++++++++++++++++++++++++++++=========================
******************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****************+++++++++++++++++++++++++++++++++++++++++++++********#########################################***************************************************************************++++++++++++++++++++++++++++++++++++@@@@@@%%%%%%%%%@@@@@@@@@@%%%%%@@@%*+++++++++++++++===--:::.......:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-::-:::=*%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@*::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--------::::::::::::::::::::::::::::::::::-----------------------=========================================-------::::::................................................................................................................................................................:######+:...........::*##########%%%%########%%%%%%%%%%%%%%###############%%%######################################################%%*=:........:-+#%%%%#%%%%%%%%%%#####::::.:::::..=%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%###########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####################%%%%%+++++++================================--------------------------------------------------------------::::::::::::::::::........ .*++++++=-----------------::::::::::::::::::::::::::::::::::::::::::----------------------------------------------------::::::::::::::::::::..........:::::::::::::::::::::. ...:::---::... ............................. .......... ..... .....................................................................:::::---------:::.....................................::::::::------====================================================================================================================================================================================--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------::::::::::::----==+***##########******++++==---::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::...............................................................................................::::::............. . ..................................................................................................................................................................................:::--=======================--------==========--:::...............................................................................:::::::::::...............................:::::::.............................:::::-----------:::::::::......................:::::::::::::::::::::::::::.................................................................................................:::::::::::::--=======--------===++**#############################################################**********************************************************************************************************************#####*********************************************************************************************************************************************************************************************************************************************************************##*************######################################################################################################################################################################################################################################*****+++==================================+++******##*********************************************************************************++++++++++++++++++++++++++++++++++++++========================
******************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****************++++++++++++++++++++++++++++++++++++++++++++******####################################################******************************************************************+++++++++++++++++++++++++++++++++++*@@@@@@%%%%%%%%@@@@@@@@@%%@%@@@@%*++++++++++++++++====--:::.......:::::::::::::::::::::::::::::::::::::-::::::::::::::::::::::::::-::-::::--=+**#**#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%-::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::------:::::::::::::::::::::::::::::::::::::::----------------------====================================-------::::::..................................................................................................................................................................:######+:...........::*##########%%%%########%%%%%%%%%%%%%%###############%%%######################################################%%*=:.........-+#%%%%#%%%%%%%%%%%###*:::::::.:..=%@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%###########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######################%%%%#++++++===================================-------------------------------------------------------------:::::::::::::::::........ .*++++++=------------------::::::::::::::::::::::::::::::::::::::::::----------------------------------------------------::::::::::::::::::::...... ..:::::::::::::::::::::: ...:::---::... ............................. .......... ... .............. .......................................................::::::------:::......................................::::::::------====================================================================================================================================================================================--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::::::::::::---==++***#########******++++==---::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::................................................................................................:::::............. ......................................................................................................................................................................................:::---======================--------==========--:::..............................................................................:::::::::::::..............................::::::::............................:::::-----------::::::::.......................::::::::::::::::::::::::..............................................................................:::::................::::::::::::::-========--------==++***##############################################################**********************************************************************************************************************####*********************************************************************************************************************************************************************************************************************************************************************#**************#######################################################################################################################################################################################################################################****++++================================+++*******#**********************************************************************************++++++++++++++++++++++++++++++++++++++========================
******************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******************++++++++++++++++++++++++++++++++++++++++++******#####################################################*****************************************************************+++++++++++++++++++++++++++++++++++#@@@@@@%%%%%%%%@@@@@@@@%%@@@@@%*++++++++++++++++++====--:::.......:::::::::::::::::::::::::::::----------:::::::::::::::::::::::::--::-:--::--:---+%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@*::::::::::::::::::::::::::::::::::::::::::::::::::::-----:::::::::::::::::::::::::::::::::::::::::::------:::::::::::::::::::::::::::::::::::::::::::::::::::----------------=============================------::::::....................................................................................................................................................................:######+:...........:.+#########%%%%%#########%%%%%%%%%%%%%###############%%%######################################################%%*=::........:+#%%%%#%%#%%%%%%%%##%+::.::..:.:+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%##########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####################%%%%%*++++++====================================-------------------------------------------------------------::::::::::::::::........ .*++++++=-------------------::::::::::::::::::::::::::::::::::::::::::---------------------------------------------------:::::::::::::::::::::..... .::::::::::::::::::::::. ...:::---::... ............................ .......... ..........................................................................::::::---::::......................................::::::::------====================================================================================================================================================================================--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------::::::::::::::---==++***########******++++==---:::::::::::::::::::::::::::::::::::::::::::..:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::................................::..............................................................::::::............ .......................................................................................................................................................................................:::---=====================----------=========--::::.............................................................................::::::::::::::.............................::::::::............................:::::-----------:::::::........................:::::::::::::::::::::::............................................................................:::::::::::.............:::::::::::::--========-------===++***##################################################################*******************************************************************************************************************##*************************************************************************************************************************************************************************************************************************************************************************************########################################################################################################################################################################################################################################****++++=============================++++********************************************************************************************++++++++++++++++++++++++++++++++++++++=======================
******************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****************+++++++++++++++++++++++++++++++++++++++++******########################################################**************************************************************+++++++++++++++++++++++++++++++++++%@@@@@@@%%%%@%@@@@@@@@@@@@@@%#*+++++++++++++++++++====--:::.......::::::::::::---------------------------::::::::::::::::::::::::-::----::--:--:-=%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%=:::::::::::::::::::::::::::::::::::::::::::::::::--------::::::::::::::::::::::::::::::::::::::::::-----:::::::::::::::::::::::::::::::::::::::::::::::::::::::::----------------=======================------:::::......................................................................................................................................................................:######*..............=#########%%%%%#########%%%%%%%%%%%#%###############%%%######################################################%%*=::........:=#%%%%%%%#%%%%%%%%###=:::.::..:*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@%%%%##########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######################%%%%%+++++=+=====================================------------------------------------------------------------::::::::::::::::........ .*++++++=-------------------:::::::::::::::::::::::::::::::::::::::::::---------------------------------------------------:::::::::::::::::::::::.. ..::::::::::::::::::::::. ....:::---::... ............................. .......... ............................................................................::::::::::.......................................::::::::------====================================================================================================================================================================================--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------::::::::::::::----==++**########******++++==---:::::::::::::::::::::::::::::::::::::::::::...::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::..............................::::::............................................................::::::............ .........................................................................................................................................................................................::::--=====================----:::---=========---:::............................................................................::::::::::::::::............................::::::::............................:::::----------:::::::.........................::::::::::::::::::::::..........................................................................::::::::::::::::...........:::::::::::::--==+++===-------==++***#######################################################################***********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************###****************########################################################################################################################################################################################################################################*****+++========================++++++++********************************************************************************************+++++++++++++++++++++++++++++++++++++++=======================
******************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****************++++++++++++++++++++++++++++++++++++++++*****#########################################################***************************************************************++++++++++++++++++++++++++++++++++%@@@@@@@%%%%@@@@@@@@@@@@@@@#*+++++++++++++++++++++===---:::.......:::::::-:::----------------------------::::::::::::::::::::::::-:--:::------:--*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@#::::::::::::::::::::::::::::::::::::::::::::::::-----=---:::::::::::::::::::::::::::::::::::::::::::---::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---------------------==============------::::::.......................................................................................................................................................................:######*..............-#########%%%%%#########%%%%%%%%%%%#%###############%%%######################################################%%*=::.........=#%%%%%#%#%%%%%%%####-::..:..-#@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#@@@@@@@@@@@@@@%%%%##########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####################*#%%%%#+++++++=====================================------------------------------------------------------------::::::::::::::::......... :*++++++=--------------------::::::::::::::::::::::::::::::::::::::::::----------------------------------------------------:::::::::::::::::::::::.. ..::::::::::::::::::::::. ...:::----:::.. ............................ .......... ..............................................................................:::::::::.......................................::::::::-------===================================================================================================================================================================================--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::::::::::::::----=++***#######******++++==----:::::::::::::::::::::::::::::::::::::::::....::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::..............................::::::............................................................::::::............ ..........................................................................................................................................................................................:::--=====================---::::---==========--:::............................................................................::::::--::::::::::..........................::::::::............................:::::----------:::::::.........................::::::::::::::::::::::....................................................................:::::::::::::::::::::::..........:::::::::::::-==++++===------==++***##########################################################################**#*****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************####****************#########################################################################################################################################################################################################################################*****+++==================+++++++++++**********************************************************************************************++++++++++++++++++++++++++++++++++++++========================
******************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****************+++++++++++++++++++++++++++++++++++++++*****#########################################################***************************************************************++++++++++++++++++++++++++++++++++@@@@@@@@%%%%@@@@@@@@@@@@@%*+++++++++++++++++++++++===---::........::::::---:------------------------------::::::::::::::::::::::-:--:----------:=%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@=:::::::::::::::::::::::::::::::::::::::::::::::---====--::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--------------------==========------:::::.........................................................................................................................................................................:######*..............:#########%%%%%##########%%%%%%%%%%%%###############%%%######################################################%%*=::.........=#%%#%%%%#%%%%%%%####:::::..=%@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%##@@@@@@@@@@@@@@%%%%##########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####################*#%%%%*++++=+======================================-------------------------------------------------------------:::::::::::::::......... :*++++++=--------------------:::::::::::::::::::::::::::::::::::::::::::---------------------------------------------------:::::::::::::::::::::::.. ..::::::::::::::::::::::: ....:::----:::... .......................... ........... .................................................................................::::..........................................:::::::-------=============================================--------==============================================================================================================================--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------::::::::::::::::---==++***######******++++===---::::::::::::::::::::::::::::::::::::::::.....::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.............................::::::::...........................................................::::::............ ...........................................................................................................................................................................................:::---====================---:::::---=========--:::............................................................................:::::-----::::::::::.......................:::::::::............................:::::----------:::::::.........................::::::::::::::::::::::...............................................................::..:::::::::::::::::::::::::.........::::::::::::--==+++++==------==++***###############################################################################***************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************####****************##########################################################################################################################################################################################################################################****+++=================++++++++++*********##*************************************************************************************++++++++++++++++++++++++++++++++++++++========================
******************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******************+++++++++++++++++++++++++++++++++++++*****###########################################################*************************************************************++++++++++++++++++++++++++++++++++@@@@@@@@%%%%@@@@@@@@@@@%*+++++++++++++++++++++++++===---:::......::::::----------------------------------------::::::::-:::::-------------------*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@#:::::::::::::::::::::::::::::::::::::::::::::::--=====--::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-----------------=--------:::::...........................................................................................................................................................................:######*...............*########%%%%###########%%%%%%%%%%#%###############%%#######################################################%%*-:..........=#%%#%####%%%%%%%####-:::.:*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#*%@@@@@@@@@@@@@@@%%%#########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%############*#######*#%%%%*++++++========================================-----------------------------------------------------------::::::::::::::........... :+++++++=--------------------::::::::::::::::::::::::::::::::::::::::::::--------------------------------------------------::::::::::::::::::::::::.. ..::::::::::::::::::::::. ....:::-----:::... .......................... ............ ... ..................................................................................................................................:::::::------=========================================---------------============================================================================================================================--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::::::::::::::::---==++**######******+++++==---::::::::::::::::::::::::::::::::::::::::.....:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::..............................::::::::...........................................................::::::........................................................................................................................................................................................................:::---===================---::::::---=========--:::...........................................................................::::::-----:::::::::::......................::::::::::...........................:::::----------::::::.........................:::::::::::::::::::::............................................................:...::::::::::::::::::::::::::::::.........::::::::::::--=++++++===----==++***################################################################################*************####**********************************************************************************************************************************************************************************************************************************************************************************************************************************************************###******************#########################################################################################################################################################################################################################################*****+++===============+++++***************#*************************************************************************************++++++++++++++++++++++++++++++++++++++=========================
******************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******************++++++++++++++++++++++++++++++++++++*****############################################################************************************************************++++++++++++++++++++++++++++++++++%@@@@@@@@@@@@@@@@@@@@%#*++++++++++++++++++++++++++===---:::......::::::--------------------------------------------------:::--------------------#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@+::::::::::::::::::::::::::::::::::::::::::::::--=====--::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-------------------:::::............................................................................................................................................................................:######*...............=########%%%%###########%%%%%%%%%%#%###############%%#######################################################%%*-:..........=#%%#%#%%%%%%%%%%%#%%#+--+#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#**%@@@@@@@@@@@@@@@%%%#########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%############*#######*#%%%%++++++=========================================------------------------------------------------------------:::::::::::::........... :*++++++=---------------------::::::::::::::::::::::::::::::::::::::::::::--------------------------------------------------:::::::::::::::::::::::.. ...::::::::::::::::::::::. ....:::------:::... .......................... ................. ..................................................................................................................................:::::::------========================================-----------------============================================================================================================================-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::::::::::::::::---==++***#####******+++++==---::::::::::::::::::::::::::::::::::::::::.....::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.............................::::::::...........................................................::::::........................................................................................................................................................................................................:::---===================---::::::---=========---:::.........................................................................::::::--------:::::::::......................::::::::::...........................:::::----------::::::.........................:::::::::::::::::::::..........................................................::::::::::::::::::::::::::::::::::::.........:::::::::::--==+++++++==---===++***####################################################################################**#########****************************************************************************+++*****************************************************************************************************************************************************************************************************************************************************************************###******************##########################################################################################################################################################################################################################################*****+++=============++++*****************************************************************************************************++++++++++++++++++++=+======+===+++++++==========================
******************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******************+++++++++++++++++++++++++++++++++++*****#############################################################***********************************************************++++++++++++++++++++++++++++++++++#@@@@@@@@@@@@@@@@@@%#*+++++++++++++++++++++++++++====--:::.......::::::------------------------------------------------------------------------=#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%-:::::::::::::::::::::::::::::::::::::::::::::--=====--::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-----------:::::..............................................................................................................................................................................:######*...............:########%%%%###########%%%%%%%%%%%%###############%%#######################################################%%*-:..........=#%%%##%%%%%%%%%%%%%%%%####@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#*++*@@@@@@@@@@@@@@@@%%%########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%############*#######*#%%%#++++++=========================================------------------------------------------------------------:::::::::::::.......... :*++++++=---------------------:::::::::::::::::::::::::::::::::::::::::::::-------------------------------------------------::::::::::::::::::::::::.. ..:::::::::::::::::::::::. ...:::-------:::... .......................... .................. ..................................................................................................................................:::::::------=======================================-------------------===========================================================================================================================-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------::::::::::::::::::---==++***####******+++++==---::::::::::::::::::::::::::::::::::::::::......:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::............................:::::::::...........................................................::::::........................................................................................................................................................................................................::::--==================---::::::::--=========---:::.........................................................................::::::---------:::::::::.....................::::::::::...........................:::::----------:::::..........................::::::::::::::::::::........................................................::::::::::::::::::::::::::::::::::::::::........:::::::::::--==++**+++=======++***##############################################################################################********************************************************************++++++++++++++++++************************************************************************************************************************************************************************************************************************************************************************###******************###########################################################################################################################################################################################################################################*****+++===========++++*************##****########**************************************************************************++++++++++++++++==================================================
******************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******************++++++++++++++++++++++++++++++++++*****###############################################################*********************************************************+++++++++++++++++++++++++++++++++++%@@@@@@@@@@@@@@@%#*+++++++++++++++++++++++++++++====--:::.......::::::-------------------------------------------------------------------------#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@*:::::::::::::::::::::::::::::::::::::::::::::--=====--:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::...............................................................................................................................................................................:######*................########%%%%############%%%%%%%%%%%%##############%%#######################################################%%*-:..........-*%%%#####%%%%%%%%%%%%#####%@@@@@@@@@@@@@@@@@@@@@@@@@@@*++++*@@@@@@@@@@@@@@@@%%%#######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%############*#######*#%%%#++++++=========================================------------------------------------------------------------:::::::::::::.......... -*+++++++----------------------:::::::::::::::::::::::::::::::::::::::::::::------------------------------------------------::::::::::::::::::::....:.. ..::::::::::::::::::::::: ...:::--------:::... . ........................ ..................... ..................................................................................................................................:::::::------======================================---------------------===========================================================================================================================------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::::::::::::::::::---==+****###******+++++==---::::::::::::::::::::::::::::::::::::::::......:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::............................:::::::::...........................................................::::::.........................................................................................................................................................................................................:::---=================---::::::::---=========--:::.........................................................................:::::-----------::::::::.....................::::::::::...........................:::::----------:::::..........................::::::::::::::::::::..................................................::::::::::::::::::::::::::::::::::::::::::::::........:::::::::::--=+++**++++======++****########################################################################################**************************************************************++++++++++++++++++++++++++++++***********************************************************************************************************************************************************************************************************************************************************************###******************###########################################################################################################################################################################################################################################*****++++=========++++**************##**############**********************************************************************+++++++++++++=======================================================
*****************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******************++++++++++++++++++++++++++++++++*****################################################################********************************************************+++++++++++++++++++++++++++++++++++*%@@@@@@@@@@@@@%*+++++++++++++++++++++++++++++++====--:::.......::::::-------------------------------------------------------------------------*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@+::::::::::::::::::::::::::::::::::::::::::::---==---::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.................................................................................................................................................................................:#######................*#######%%%%############%%%%%%%%%%%%##############%%#######################################################%%*-:..........:+%%%%%%%%%%%%%%%%%%#######@@@@@@@@@@@@@@@@@@@@@@@@@@@#+++++#@@@@@@@@@@@@@@@@%%%######%%%%%%%%%%%%%%%#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%############*#######*#%%%*++++++=========================================------------------------------------------------------------:::::::::::::........... -*+++++++=---------------------:::::::::::::::::::::::::::::::::::::::::::::------------------------------------------------::::::::::::::::::::....:... ..:::::::::::::::::::::::: ...::---------::::.. . .................. ......................... ..................................................................................................................................:::::::------======================================----------------------==========================================================================================================================------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::::::::::::::::::---==++****#*******++++++==---:::::::::::::::::::::::::::::::::::::::......:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::............................:::::::::...........................................................::::::.........................................................................................................................................................................................................:::---================---::::.::::---=========--:::.........................................................................:::::------------:::::::.....................::::::::::...........................:::::----------:::::..........................:::::::::::::::::.................................................:::::::::::::::::::::::::::::::::::::::::::::::::::........::::::::::--=++****+++=====+++*****####################################################################################***********************************************************++++++++++++++++++++++++++++++++++++***********************************************************************************************************************************************************************************************************************************************************************###******************###########################################################################################################################################################################################################################################*******+++++===++++++************#******###############*****************************************************************++++++++++++==========================================================
*****************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******************+++++++++++++++++++++++++++++++*****#################################################################*******************************************************++++++++++++++++++++++++++++++++++++*%@@@@@@@@@@%*++++++++++++++++++++++++++++++++=====--:::.......::::::-------------------------------------------------------------------------+%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@%%=::::::::::::::::::::::::::::::::::::::::::::------::::..:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.........::::::::::::::...................................................................................................................................................................................#######................*#######%%%%############%%%%%%%%%%%%##############%%#######################################################%%*::.........::+%%%%%%#%%%%%%%%%#########@@@@@@@@@@@@@@@@@@@@@@@@@@%++++++#@@@@@@@@@@@@@@@@%%%#####%%%%%%%%%%%%%%%%#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#############*######**#%%%*++++++==========================================-----------------------------------------------------------:::::::::::::........... -*+++++++=----------------------:::::::::::::::::::::::::::::::::::::::::::::-----------------------------------------------::::::::::::::::::::........ ...:::::::::::::::::::::::. ..::----------::::... .............. ............................ ..................................................................................................................................:::::::------=====================================-----------------------===========================================================================================================================------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::::::::::::::::::---==++***********++++++==---:::::::::::::::::::::::::::::::::::::::.......::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::............................::::::::::..........................................................::::::.........................................................................................................................................................................................................:::---================---::::..:::---=========---:::.......................................................................:::::--------------:::::::...................::::::::::::..........................:::::----------:::::..........................::::::::::::::::................................................:::::::::::::::::::::::::::::::::::::::::::::::::::::.........:::::::::-==++*****++++==++++********##########*###################################################################**********************************************************++++++++++++++++++++++++++++++++++++++++***********************************************************************************************************************************************************************************************************************************************************************###*******************###########################################################################################################################################################################################################################################*******++++++++++++*********############################**************************************************************++++++++++=============================================================
*****************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******************+++++++++++++++++++++++++++++*****##################################################################******************************************************+++++++++++++++++++++++++++++++++++++*@@@@@@@@%#*+++++++++++++++++++++++++++++++++=====--:::.......::::::--------------------------------------------------------------------------*%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#--:::::::::::::::::::::::::::::::::::::::::::---:::::...:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::................:::::::.....................................................................................................................................................................................#######............... *#######%%%%############%%%%%%%%%%%%%#############%%%######################################################%%*::.........::=%%%%###%%%%%%###########%@@@@@@@@@@@@@@@@@@@@@%@@@%+++++++%@@@@@@@@@@@@@@@@%%%####%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########################**%%%%*++++++==========================================-----------------------------------------------------------:::::::::::::........... =**++++++=----------------------::::::::::::::::::::::::::::::::::::::::::::::----------------------------------------------::::::::::::::::::::......:.....:::::::::::::::::::::::: ..::-----------::::... ............. ..................................... ..................................................................................................................................::::::::-----=====================================------------------------===========================================================================================================================-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::::::::::::::::::----=+++**********++++++==---:::::::::::::::::::::::::::::::::::::::.......::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::............................::::::::::..........................................................::::::..........................................................................................................................................................................................................:::--===============---::::...::::--=========---:::.......................................................................:::::---------------::::::...................::::::::::::...........................::::----------:::::..........................:::::::::::::::................................................:::::::::::::::::::::::::::::::::::::::::::::::::::::::.....::::::::::::-==++*****++++++++++**************##*#*##############################################################********************************************************++++++++++++++++++++++++++++++++++++++++++++++************************************************************************************************************************************************************************************************************************************************************************###*******************############################################################################################################################################################################################################################################********+++++++********#********########################***********************************************************++++++++++===============================================================
*****************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******************++++++++++++++++++++++++++++****####################################################################*****************************************************++++++++++++++++++++++++++++++++++++++#@@@@@%#*+++++++++++++++++++++++++++++++++++=====--::........::::::---------------------------------------------------------------------------+#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%*-:::::::::::::::::::::::::::::::::::::::::::::::::.....::::::::::::::::...::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::............................................................................................................................................................................................................#######.............. *#######%%%%############%%%%%%%%%%%%%#############%%%######################################################%%*::.........::=%%%%%%%%%%########***#%%@@@@@@@@@@@@@@@@@@@@@@@@@%*++++++*%@@@@@@@@@@@@@@@@%%%##%%%%%%%%%%%%%%%%#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########################**%%%%++++++===========================================-=----------------------------------------------------------::::::::::::........... =**++++++=-----------------------:::::::::::::::::::::::::::::::::::::::::::::-----------------------------------------------::::::::::::::::::::.....:.....::::::::::::::::::::::::: ..::--==-------::::... ....................................... ................ .................................................................................................................::::::::-----=====================================------------------------===========================================================================================================================-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------::::::::::::::::::::---==+++*********++++++==---:::::::::::::::::::::::::::::::::::::::.......::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::............................::::::::::..........................................................::::::..........................................................................................................................................................................................................:::--===============---::::....:::---========---:::.......................................................................::::----------------::::::...................:::::-::::::...........................::::---------:::::...........................:::::::::::::::...............................................::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--==++******+++++++++*****************#*##############################################################**************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++************************************************************************************************************************************************************************************************************************************************************************###*******************#############################################################################################################################################################################################################################################**********************#########***#####################**********************************************************+++++++++=================================================================
*****************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******************++++++++++++++++++++++++++++****########################################################################*************************************************++++++++++++++++++++++++++++++++++++++*%@@%#*++++++++++++++++++++++++++++++++++++======--::........::::::------------------------------------------------------------------------:--:-+%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%=-:::::::::::::::::::::::::::::::::::::::::::::::......:::::::::::::::.....::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::...........................................................................................................................................................................................................#######............. +#######%%%%#############%%%%%%%%%%%%#############%%%#####################################################%%%*::.........:.-%%%%%%%#########**+++#@@@@@@@@@@@@@@@@@@@@@@@@@@@#+++++++*%@@@@@@@@@@@@@@@@%%%#%##%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######################%##############*#%%%#++++++===========================================------------------------------------------------------------::::::::::::........... .=**++++++=-----------------------::::::::::::::::::::::::::::::::::::::::::::::-----------------------------------------------::::::::::::::::::::..........:::::::::::::::::::::::::. ..:---==------:::::... ........................................... ......... .................................................................................................................::::::::-----=====================================------------------------===========================================================================================================================-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------::::::::::::::::::::----==+++*********+++++===---::::::::::::::::::::::::::::::::::::::.......::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::............................::::::::::..........................................................::::::..........................................................................................................................................................................................................:::---==============--::::.....:::---========---:::.......................................................................::::-----------------::::::..................:::::-::::::...........................:::::--------:::::.............................::::::::::........::........................................::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--=+++******+++++++++********************###########################################################**********************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***********************************************************************************************************************************************************************************************************************************************************************####******************############################################################################################################################################################################################################################################************************################################*********************************************************+++++++====================================================================
*****************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******************+++++++++++++++++++++++++*****########################################################################*************************************************+++++++++++++++++++++++++++++++++++++++*%#*++++++++++++++++++++++++++++++++++++++=====---::.......:::::::----------------------------------------------------------------------------:-+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%*--:::::::::::::::::::::::::::::::::::::::::::::.......::::::::::::::.......::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::..........................................................................................................................................................................................................#######............. +#######%%%%#############%%%%%%%%%%%%#############%%%######################################################%%*::............#%%%%#########**+++++*@@@@@@@@@@@@@@@@@@@@@@@@@@#++++++++*@@@@@@@@@@@@@@@@@%%%%%#%%%%%%%%%%%%%%%%#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######################%##############*#%%%#++++++============================================-----------------------------------------------------------::::::::::::........... .=**++++++=------------------------::::::::::::::::::::::::::::::::::::::::::::::-----------------------------------------------:::::::::::::::::::::........::::::::::::::::::::::::::. ..:--===------:::::... ............................................ .............................................................................................................................::::::::-----=====================================------------------------===========================================================================================================================-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::::::::::::::::::::----==+++*******++++++===---::::::::::::::::::::::::::::::::::::::.......::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::............................::::::::::..........................................................::::::..........................................................................................................................................................................................................:::---=============---::::.....:::---=========--:::.......................................................................::::-----------------::::::..................:::::--:::::...........................:::::--------:::::.............................::::::::::..................................................:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--==+++******++++++++++++*****************#########################################################*********************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***********************************************************************************************************************************************************************************************************************************************************************####******************################################################################################################################################################################################################################################################******************##################################*******************************************************++++++++=====================================================================
*****************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********************+++++++++++++++++++++++*****##########################################################################***********************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**+++++++++++======---::.......:::::::-------------------------------------------------------------------------:---:-#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%=-::::::::::::::::::::::::::::::::::::::::::::.......:::::::::::::::........::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.........................................................................................................................................................................................................#######............. *#######%%%%#############%%%%%%%%%%%%#############%%%######################################################%%*:... .... .#%%%##********+++++++*@@@@@@@@@@@@@@@@@@@@@@@@@%++++++++*#@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%##%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###############################*#######*#%%%*+++++=============================================-----------------------------------------------------------::::::::::::........... .+**++++++=-------------------------::::::::::::::::::::::::::::::::::::::::::::::----------------------------------------------::::::::::::::::::::::::....:::::::::::::::::::::::::::: ..::--===-----::::::... ............................................... ...............................................................................................................................::::::::------====================================-------------------------==========================================================================================================================-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------::::::::::::::::::::::----==+++*****++++++++==---::::::::::::::::::::::::::::::::::::::.......::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::............................::::::::::..........................................................::::::..........................................................................................................................................................................................................:::---=============---:::.......:::--=========--:::......................................................................:::::-----------------::::::..................::::---:::::...........................:::::--------:::::.............................::::::::::........................::........................::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---==+++++**++++++++++++++++++++************######################################################***************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***********************************************************************************************************************************************************************************************************************************************************************###******************############################################################################################################################################*######################################################################################################************#####################################******************************************************+++++++=======================================================================
*****************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********************++++++++++++++++++++++*****##########################################################################***********************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#%#+++++++++=======---::.......:::::::--------------------------------------------------------------------------:---:=%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#=-:::::::::::::::::::::::::::::::::::::::::::.......:::::::::::::::........:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::........................................................................................................................................................................................................#######.............. *#######%%%%#############%%%%%%%%%%%%#############%%%#####################################################%%%+:... -%%##*******++++++++++#@@@@@@@@@@@@@@@@@@@@@@@@%*++++++++*#@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%################################*#######*#%%%*+++++==============================================----------------------------------------------------------::::::::::::........... .+**++++++=--------------------------::::::::::::::::::::::::::::::::::::::::::::::----------::----------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::: ..::--==------:::::::.. .........................................................................................................................................................................................:::::::------====================================-------------------------=========================================================================================================================------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::::::::::::::::::::::----==+++++++++++++++==---::::::::::::::::::::::::::::::::::::::.......::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::............................::::::::::..........................................................::::::..........................................................................................................................................................................................................:::---=============--::::.......:::---========--:::......................................................................:::::-----------------::::::.................:::::----::::............................:::::------:::::..............................::::::::::........................::........................::::::::::::::::::::::::::::::::::::::::::::::::::::::::----------------===+++++++++++++++++++++++++++++************######****########################################**************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++************************************************************************************************************************************************************************************************************************************************************************#******************################################################################################################################################**###***#############################################################################################################**************################**#############********************************************************++++++=========================================================================
****************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********************+++++++++++++++++++++*****##########################################################################***********************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*%%%*++++++=========--:::.......:::::::--------------------------------------------------------------------------:-::-:+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@+=-:::::::::::::::::::::::::::::::::::::::::.......::::::::::::::::.........:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.......................................................................................................................................................................................................#######.............. *#######%%%%##############%%%%%%%%%%%##############%%#####################################################%%%+:.. :+###*******+++++++++++*#@@@@@@@@@@@@@@@@@@@@@@@@#+++++++++*#@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%################################*#######*#%%%*+++++==============================================----------------------------------------------------------::::::::::::........... .+**++++++=--------------------------:::::::::::::::::::::::::::::::::::::::::::::::------:::::::--------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::: ..:---==------:::::::... ............................................................... .........:................................................................................................................:::::::------====================================---------------------------=========================================================================================================+=++==========------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::::::::::::::::::::::-----===+++++++++++++===--::::::::::::::::::::::::::::::::::::::........:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.............................:::::::::..........................................................::::::..........................................................................................................................................................................................................:::---============---:::........:::---========---:::.....................................................................:::::------------------:::::.................:::::----:::::............................:::::-----:::::..............................::::::::::................::::::::::::......................::::::::::::::::::::::::::::::::::::::::::::::::::::::-----------------===++++++++++++++++++++++++++++++++*************************##################*####********************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******************************************************************************************************************************************************************************************************************************************************************************************##############################################################################################################################******#*****###################################################################################################################******#############*************###*********************************************************++++++==========================================================================
****************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********************+++++++++++++++++++*****###########################################################################**********************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*%%%*+++++==========--:::.......::::::--------------------------------------------------------------------------:--:----*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%==-::::::::::::::::::::::::::::::::::::::::.......::::::::::::::::.........::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::......................................................................................................................................................................................................#######.............. +#######%%%%##############%%%%%%%%%%%##############%%#####################################################%%%+:.. :=###*******+++++++++++*#**@@@@@@@@@@@@@@@@@@@@@@@#++++++++++*%@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%################################*######**%%%#*++++===============================================----------------------------------------------------------::::::::::::........... .+***+++++=---------------------------:::::::::::::::::::::::::::::::::::::::::::::::------::::::---------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::. ...:---==------:::::::... .........................................................................:................................................................................................................:::::::------===================================----------------------------========================================================================================================+++++=========-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------::::::::::::::::::::::::-----===++++++++++++===---::::::::::::::::::::::::::::::::::::::.......:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::............................::::::::::..........................................................::::::..........................................................................................................................................................................................................:::---============---:::.........:::--========---:::.....................................................................:::::------------------:::::.................:::::----:::::............................:::::::::::::::..............................:::::::::::..............:::::::::::::::....................:::::::::::::::::::::::::::::::::::::::::::::::::::::------==============++++++++++++++++++++++++++++++++++*******************************####****************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++************************************************************************************************************************************************************************************************************************************************************************#***************#############################################################################################################################****************###############################################################################################################*##**#############*******************************************************#####*************++++++============================================================================
****************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********************++++++++++++++++++*****############################################################################*********************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#%%%*++++===========--:::.......::::::---------------------------------------------------------------------------:--:-:--*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@*===-::::::::::::::::::::::::::::::::::::::......:::::::::::::::::..........:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::......................................................................................................................................................................................................#######................+#######%%%%##############%%%%%%%%%%%##############%%#####################################################%%%+:. .=####******+++++++++++****+*@@@@@@@@@@@@@@@@@@@@%@%*++++++++++*%@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%################################*######**%%%#+++++===============================================----------------------------------------------------------::::::::::::........... :+***+++++=---------------------------::::::::::::::::::::::::::::::::::::::::::::::::-----:::::::--------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::. ...:---==------:::::::... .........................................................................:................................................................................................................:::::::------==================================-----------------------------========================================================================================================+++++========--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::::::::::::::::::::::::------===+++++++++++==---::::::::::::::-:::::::::::::::::::::::.......:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::............................:::::-:::::.........................................................::::::..........................................................................................................................................................................................................:::---===========---:::..........:::---=======---:::.....................................................................:::::------------------::::::................:::::----:::::............................::::::::::::::...............................::::::::::............:::::::::::::::::::...................::::::::::::::::::::::::::::::::::::::::::::::::::::-----===============+++++++++++++++++++++++++++++++++++********************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***********************************************************************************************************************************************************************************************************************************************************************##*************##############################################################################################################################****************#######*#####################################################################################################***################********************************************************######***********++++++=============================================================================
****************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********************+++++++++++++++++*****#############################################################################********************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#%%%#+++============--:::.......::::::-------------------------------------------------------------------------------:----*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@+=+=-:::::::::::::::::::::::::::::::::::::......:::::::::::::::::..........::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.....................................................................................................................................................................................................#######:...............+#######%%%%##############%%%%%%%%%%%##############%%#####################################################%%%+. -###*******++++++++++++*#*+++*@@@@@@@@@@@@@@@@@@@@@%*+++++++++++*%@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######################################**%%%#+++++===============================================----------------------------------------------------------::::::::::::............ :+***++++++=---------------------------::::::::::::::::::::::::::::::::::::::::::::::::----::::::::-------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::. ..::--===-----::::::::... .........................................................................:................................................................................................................:::::::------=================================-------------------------------====================================================================================================+++++++=========--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------::::::::::::::::::::::::::------===++++++++++==---::::::::::::------:::::::::::::::::::::......:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::............................::::---::::.........................................................::::::..........................................................................................................................................................................................................:::--============---:::..........:::---=======---:::.....................................................................:::::------------------::::::................::::-----:::::.............................::::::::::::................................::::::::::........::::::::::::::::::::::::..................::::::::::::::::::::::::::::::::::::::::::::::::::::-----===============++++++++++++++++++++++++++++++++++++*************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********************************************************************************************************************************************************************************************************************************************************************##*************##############################################################################################################################********************************#######################################################################################################*########********************************************************######**********++++++==============================================================================
****************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********************+++++++++++++++*****##################################################################################****************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*%%%%#*++=+==========--:::.......:::::------------------------------------------------------------------------------------:-+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@%%==+=::::::::::::::::::::::::::::::::::::.......:::::::::::::::::..........::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::....................................................................................................................................................................................................:#######:...............+######%%%%################%%%%%%%%%##############%%%%###################################################%%%%+. .*%##******+++++++++++++**+++++#@@@@@@@@@@@@@@@@@@@@@#++++++++++++#@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######################################**%%%*+++++================================================---------------------------------------------------------::::::::::::............ :+***++++++=----------------------------::::::::::::::::::::::::::::::::::::::::::::::::---:::::::::-------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::. ..::--===-----::::::::... .........................................................................:................................................................................................................:::::::------===============================---------------------------------===================================================================================================++++++++========--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------::::::::::::::::::::::::::::------===+++++++++==---:::::::::::--------::::::::::::::::::::......:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::............................::::----:::.........................................................::::::.........................................................................................................................................................................................................::::---===========--::::..........::::--========--:::.....................................................................:::::-------------------:::::................::::-----:::::..............................::::::::::..............................:::::::::::::::.....:::::::::::::::::::::::::...................:::::::::::::::::::::::::::::::::::::......::.:::::::----==============++++++++++++++++++++++++++++++++++++******************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****************************************************************************************************************************************************************************************************************************************************************###############################################################################################################################################**************************************######################################################################################################************************************************************########********++++++===============================================================================
****************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********************+++++++++++++++*****####################################################################################**************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#%@@@%#*+=+==========--:::.......:::::----------------------------------------------------------------------------------:----=%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@*==+-:::::::::::::::::::::::::::::::::::......:::::::::::::::::...........::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::....................................................................................................................................................................................................:#######:...............=*#####%%%%################%%%%%%%%%###############%%%###################################################%%%@*. :###*******+++++++++++++++++++++#@@@@@@@@@@@@@@@@@@@@%+++++++++++++#@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######################################*#%%%*+++++================================================---------------------------------------------------------::::::::::::............ :+***++++++=----------------------------:::::::::::::::::::::::::::::::::::::::::::::::::---::::::::-------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: ..:---===-----::::::::... .........................................................................:................................................................................................................::::::::-----=============================-----------------------------------=================================================================================================+++++++++=========--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------::::::::::::::::::::::::::::::-----==+++++++++==---:::::::::::--------:::::::::::::::::::::.....:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::............................::::----:::.........................................................::::::.........................................................................................................................................................................................................::::--===========---:::............:::--========---:::....................................................................:::::------------------::::::................::::------::::...............................:::::::::.........................::::::::::::::::::::::::::::::::::::::::::::::::::...................:::::::::::::::::::::::::::::::::::...........::::::::-------===========++++++++++++++++++++++++++++++++++++***********************++*************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****************************************************************************************************************************************************************************************************************************************************************###############################################################################################################################################**************************************###################################################################################################***************************************************************########*******++++++================================================================================
****************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********************++++++++++++++****########################################################################################***********************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#%@@@@%#*+=+==========--:::.......:::::-----------------------------------------------------------------------------------:---:-#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%+=+=:::::::::::::::::::::::::::::::::::......:::::::::::::::::...........::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::....................................................................................................................................................................................................:#######:..........:....-*#####%%%%################%%%%%%%%%%##############%%%##################################################%%%%%*:.=##******++++++++++++++++++++++++#@@@@@@@@@@@@@@@@@@@%*+++++++++++++#@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######################################*#%%%*+++++================================================---------------------------------------------------------::::::::::::............ .-+****+++++=----------------------------:::::::::::::::::::::::::::::::::::::::::::::::::---:::::::::-------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::. ..:---===-----::::::::... ....:.....................................................................-................................................................................................................::::::::-----=====================-------------------------------------------===============================================================================================++++++++++==========--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------::::::::::::::::::::::::::::::::---===++++++++===--:::::::::::---------:::::::::::::::::::::...::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::............................::::----:::.........................................................::::::.........................................................................................................................................................................................................:::---===========---:::............:::---=======---:::....................................................................:::::------------------:::::::...............::::------::::.................................:::::........................:::::::::::::::::::::::::::::::::::::::::::::::::::::...................:::::::::::::::::::::::::::::...................::::::::----------=======++++++++++++++++++++++++++++++++++++********************+++++++++++++++++++++++++++*****++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***************************************************************************************************************************************************************************************************************************************************************##############################################################################################################################################**************************************#################################################################################**########***********************************************************************########******+++++==================================================================================
****************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********************+++++++++++++****########################################################################################***********************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#%@@@@@%#*+===========--:::.......:::::------------------------------------------------------------------------------------------+%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#+++=::::::::::::::::::::::::::::::::::......:::::::::::::::::...........:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::...................................................................................................................................................................................................:#######:..........::...:*#####%%%%################%%%%%%%%%%##############%%%#################################################%%@@%%*+*##******+++++++++++++++++++++++++#@@@@@@@@@@@@@@@@@@@*++++++++++++++%@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##############################*#######*#%%#*+++++=================================================--------------------------------------------------------::::::::::::............ .-+****+++++==---------------------------::::::::::::::::::::::::::::::::::::::::::::::::::---:::::::::------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: ..:---==------::::::::... ...:::....................................................................-................................................................................................................::::::::-----====================----------------------------------------------===========================================================================================++++++++++++=========---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------::::::::::::::::::::::::::::::::----==++++++++===---:::::::::----===---::::::::::::::::::::::..::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::............................::::----::::........................................................::::::.........................................................................................................................................................................................................:::---===========--::::............:::---=======---:::....................................................................:::::-------------------::::::...............::::------::::..............................................................:::::::::::::::::::::::::::::::::::::::::::::::::::::....................:::::::::::::::::::::::::........................:::::::::-----------====+++++++++++++++++++++++++++++++++++*******************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********************************************************************************************************************************************************************************************************************************************************####*##############################################################################################################################################**************************************###############################################################################****########***********************************************************************########*****+++++===================================================================================
***************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********************++++++++++++****###########################################################################################********************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#%@@@@@@%%#+==========--::::.......:::::-------------------------------------------------------------------------------------------=*%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@*=++-:::::::::::::::::::::::::::::::::.....::::::::::::::::::...........::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::....................................................................................................................................................................................................:#######:..........:::..:######%%%%################%%%%%%%%%%##############%%%###############################################%%%@%@@%**#******+++++++++++++++++++++++++++#@@@@@@@@@@@@@@@@%@#+++++++++++++++%@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#############################*#######*%%%#++++++=================================================--------------------------------------------------------::::::::::::............ .-+*****++++==----------------------------::::::::::::::::::::::::::::::::::::::::::::::::::--:::::::::------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: ..:---==------:::::::::.. ...:::....................................................................-.................................................................................................................:::::::-----====================----------------------------------------------=========================================================================================+++++++++++++++========---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::::::::::::::::::::::::::::::::---==+++++++++==---:::::::::---====---::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::............................::::-----:::........................................................::::::........................................................................................................................................................................................................::::---==========---:::..............::---========--::::...................................................................:::::-------------------::::::..............:::::------::::.............................................................::::::..::::::::::::::::::::::::::::::::::::::::::::::.....................:::::::::::::::::::........:.....................:::::::::::::::-----====+++++++++++++++++++++++++++++++++++*****************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******************************************************************************************************************************************************************************************************************************************************###################################################################################################################################################***************************************##############################################################################***********************************************************************************########*****++++====================================================================================
***************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******************+++++++++++*****###########################################################################################********************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*%%@@@@@@@%#+===+======--:::........:::::-------------------------------------------------------------------------------------:-------=%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%+++=::::::::::::::::::::::::::::::::::....:::::::::::::::::...........:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::....................................................................................................................................................................................................:#######:..........:::..-######%%%%#################%%%%%%%%%##############%%%##############################################%%@@%%@@%##******++++++++++++++++++++++++++++#@@@@@@@@@@@@@@@@@%++++++++++++++++%@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#############################*#######*%%%#++++++=================================================--------------------------------------------------------::::::::::::............ .-+*****++++==----------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::--:::::::::-----------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: ..::--===------:::::::::.. ...:::....................................................................-.................................................................................................................:::::::-----====================-----------------------------------------------======================================================================================+++++++++++++++++========---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::::::::::::::::::::::::::::::::---==+++++++++==---:::::::::--======---:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::............................:::------:::........................................................::::::........................................................................................................................................................................................................::::---==========--::::..............:::--========---:::...................................................................:::::-------------------::::::..............:::::------:::::..........................................................::::::::::::::::::::::::::::::::::::::::::::::::::::::::......................:::::::::::::......................................:::::::::::::::---===++++++++++++++++++++++++++++++++++++**************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****************************************************************************************************************************************************************************************************************************************************#####################################################################################################################################################***************************************############################################################################*************************************************************************************#######*****++++=====================================================================================
***************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******************++++++++++*****############################################################################################*******************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*%@@@@@@@@@%+==========--:::........:::::-------------------------------------------------------------------------------------:--:-----=#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%###%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@#+++-::::::::::::::::::::::::::::::::::.:::::::::::::::::::...........:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::....................................................................................................................................................................................................:#######:..........:::.:+######%%%%#################%%%%%%%%%##############%%%#############################################%%@@%%@@%##*****++++++++++++++++++++++++++++++*@@@@@@@@@@@@@@@@%*+++++++++++++++*%@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#############################*#######*%%%*+++++==================================================--------------------------------------------------------::::::::::::............ .-+*****++++====---------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::-::::::::::----------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::. ..:---===------:::::::::... ..::::....................................................................-.................................................................................................................:::::::-----====================------------------------------------------------====================================================================================++++++++++++++++++========---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------::::::::::::::::::::::::::::::::::--===++++++++==---::::::::---==++===--:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::............................:::------:::........................................................::::::.......................................................................................................................................................................................................::::----=========---:::...............:::---=======---:::...................................................................:::::------------------:::::::..............:::::------:::::..........................................................::::::::::::::::::::::::::::::::::::::::::::::::::::::::.......................::::..............................................::::::::::::::::---==+++++++++++++++++++++++++++++++++++++************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********************************************************************************************************************************************************************************************************************************************#######################################################################################################################################################***************************************########################################################################*****************************************************************************************#######****++++======================================================================================
***************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******************+++++++++****#############################################################################################*******************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*%@@@@@@@@@%++=========--:::.......::::::---------------------------------------------------------------------------------------------===*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#=-------=+#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%*=+=::::::::::::::::::..::::::::::::::::::::::::::::::::::...........::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.....................................................................................................................................................................................................:#######:..........:::::+######%%%%#################%%%%%%%%%##############%%%############################################%%@@%%@%%#*****++++++++++++++++++++++++++++++++*@@@@@@@@@@@@@@@@#++++++++++++++++*%@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%############################*#######*%%%*+++++==================================================--------------------------------------------------------::::::::::::............ :-+******+++====---------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::--:::::::::----------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::. ..:---===------:::::::::... ..::::....................................................................-.................................................................................................................:::::::-----====================------------------------------------------------===================================================================================++++++++++++++++++=========---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------::::::::::::::::::::::::::::::::::--===++++++++===--::::::::---=++++==--:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.............................:::-----:::........................................................::::::.......................................................................................................................................................................................................::::----=========---:::................::---========--:::...................................................................:::::------------------:::::::..............:::::------:::::..........................................................::::::::::::::::::::::::::::::::::::::::::::::::::::::::.....................................:::..................................::::::::::::::::--===++++++++++++++++++++++++++++++++++++++********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********************************************************************************************************************************************************************************************************************************************#######################################################################################################################################################***************************************#####################################################################********************************************************************************************#######****+++=======================================================================================
***************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******************++++++++****##############################################################################################*****************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*%@@@@@@@@@%*=+========--:::........::::::--------------------------------------------------------------------------------------------====+%@@@@@@@@@@@@#**#%@@@@@@@@@@%#+-----------:-+%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@%+=+-:::::::::::::::.....:::::::::::::::::::::::::::::::::...........:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::............................................................................................................................................................................:.........................:#######:..........:::::*######%%%%#################%%%%%%%%%%##############%%###########################################%%%@@%@%%##****++++++++++++++++++++++++++++++++++@@@@@@@@@@@@@@@%+++++++++++++++++*@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###########################*#######*#%%%*+++++==================================================--------------------------------------------------------::::::::::::............ :-+#*#***+++======---------------------------::::::::::::::::::::::::::::::::::::::::::::::::::-::::::::::--------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::. ..:---====-----:::::::::... ...::::....................................................................-.................................................................................................................:::::::-----====================--------------------------------------------------================================================================================++++++++++++++++++++========---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------::::::::::::::::::::::::::::::::::---==+++++++++==---:::::::--==+++++=---::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.............................:::-----:::........................................................::::::.......................................................................................................................................................................................................::::----=========---:::................:::--========---:::..................................................................:::::------------------:::::::..............:::::-------::::.......::...............................................::::::::::::::::::::::::::::::::::::::::::::::::::::::::::..........................................................................::::::::::...:::--===+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********************************************************************************************************************************************************************************************************************************###############################################################################################################################################################*****************########*************################################################################**************************************************************************************************#######****+++=======================================================================================
***************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******************++++++++****##############################################################################################*****************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*@@@@@@@@@@%*+=+=+=====--:::.......:::::::-------------------------------------------------------------------------------------------=======*%@@@@@@@@%+-----+#%@@#=----------------:---=#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%@@@%%%##**+===------=+*%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#++=-::::::::::::::......::::::::::::::::::::::::::::::::...........::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::............................................................................................................................................................................:::........................:#######:..........::::-#######%%%%##################%%%%%%%%%##############%%##########################################%%%@@%%%##*****+++++++++++++++++++++++++++++++++++%@@@@@@@@@@@@@@*+++++++++++++++++#@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###########################*#######*#%%%*+++++==================================================--------------------------------------------------------::::::::::::............. :-+#*#***+++======---------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::-:::::::::--------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::. ..:--=====-----:::::::::... ...::::.............. . ..................................................-.................................................................................................................:::::::-----====================--------------------------------------------------================================================================================++++++++++++++++++++========---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------::::::::::::::::::::::::::::::::::---==+++++++++==---:::::::--==+++++==--::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.............................:::-----:::........................................................::::::.......................................................................................................................................................................................................:::-----========---:::.................:::---=======---:::..................................................................:::::------------------::::::...............:::::-------::::.......::::...........................................::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.........................................................................:::::::::::...:::--===+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******************************************************************************************************************************************************************************************************************************###################################################################################################################################################################*****************########**************###############################################################**************************************************************************************************#######***++++=======================================================================================
***************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******************++++++*****##############################################################################################*****************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*@@@@@@@@@@%#+++=++=====-:::.......:::::::-------------------------------------------------------------------------------------------========+*%@@@@%+=-------=##=--------------------------------------===----------------------::---:::........:::::--:----=#%@@@@@@@%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%*=+=::::::::::::::......::::::::::::::::::::::::::::::::..........::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::............................................................................................................................................................................::::::......................:#######-..........::::=#######%%%%##################%%%%%%%%%##############%%##########################################%%@%%@%##*****++++++++++++++++++++++++++++++++++++%@@@@@@@@@@@@@#++++++++++++++++++#@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##########################*#######*#%%%*++++++=================================================--------------------------------------------------------::::::::::::............. :-+###***+++======---------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::-::::::::::-------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: ...:--=====-----:::::::::... ...::::.............. ..................................................-:................................................................................................................:::::::-----====================---------------------------------------------------============================================================================++++++++++++++++++++++=========---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------::::::::::::::::::::::::::::::::::---==+++++++++==---::::::---==++*++==--:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::............................:::------:::.......................................................::::::......................................................................................................................................................................................................::::----=========---:::.................:::---=======---:::..................................................................:::::-----------------::::::................:::::-------::::......:::::..........................................:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::........................................................................::::::::::::..::::--===+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****************************************************************************************************************************************************************************************************************************######################################################################################################################################################################****************########**************###########################################**********##########*************************************************************************************************########***+++========================================================================================
***************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******************+++++****################################################################################################****************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*@@@@@@@@@@%#*+++++++===--:::......:::::::-------------------------------------------------------------------------------------------=================--------------------------------:----------------------------------------:::::..............:::::--------=#@@@@%+-----=#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#+++-:::::::::::::......::::::::::::::::::::::::::::::::..........:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.............................................................:::::...........................................................................................................::::::......................:#######-..........::::+#######%%%%##################%%%%%%%%%##############%%#########################################%%@%%@%##*****+++++++++++++++++++++++++++++++++++++%@@@@@@@@@@@@#+++++++++++++++++++%@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########################*#######*#%%%*++++++==================================================-------------------------------------------------------::::::::::::............. :-+#####*++++======---------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::-::::::::::-----------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: ..::--=====-----:::::::::... ...:::::............. ..............................................-:.................................................................................................................::::::-----====================-----------------------------------------------------=======================================================================+++++++++++++++++++++++===========---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------::::::::::::::::::::::::::::::::::---==+++++++++==---::::::---=++**+++=---::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::............................:::------:::.......................................................::::::......................................................................................................................................................................................................::::---==========--::::..................:::--========--::::.................................................................:::::-----------------::::::................:::::-------::::.....:::::::.......................................:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::........................................................:.............:::::::::::::::::::--===++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**************************************************************************************************************************************************************************************************************************########################################################################################################################################################################****************########***************############################################*********##########************************************************************************************************########***+++========================================================================================
**************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****************++++*****################################################################################################****************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#@@@@@@@@@@%##*+++++++==--:::......:::::::-------------------------------------------------------------------------------------------==================------:----------------------:-----:------------------------------------::::::............:::::-----------=*%#=-----::=%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%*++=-::::::::::::.......:::::::::::::::::::::::::::::::..........::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::....................................................................::::::.........................................................................................................:::::::......................:*######=..........::::*#######%%%%###################%%%%%%%%%#############%%########################################%%@%%@%#******++++++++++++++++++++++++++++++++++++++#@@@@@@@@@@@%+++++++++++++++++++*@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######################*#######*#%%#*++++++==================================================-------------------------------------------------------::::::::::::............. .:-+#####**+++======---------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-----------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::. ..::--=====-----:::::::::... ...:::::............. .............................................-:.................................................................................................................::::::-----====================-----------------------------------------------------======================================================================+++++++++++++++++++++++============---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------::::::::::::::::::::::::::::::::::---==+++++++++==---::::::--==++***++==--::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::............................:::--==--:::.......................................................::::::......................................................................................................................................................................................................:::----=========---:::...................:::--========---:::.................................................................:::::-----------------:::::.................::::--------::::.....:::::::....................................::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::..................................................................:::::::::::::::::::::::--===++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********************************************************************************************************************************************************************************************************************############################################################################################################################################################################****************#########*************###############################################*******##########************************************************************************************************########***+++========================================================================================
**************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****************+++*****#################################################################################################***************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#@@@@@@@@@@%###+++++++===-:::......:::::::-------------------------------------------------------------------------------------------================-------------------------------------------------------------------------::::::..............:::::-----------------------#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%*=+-::::::::::::.......:::::::::::::::::::::::::::::::..........:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::......................................................................:::::::.........................................................................................................::::::::.....................:*######=..........:::-########%%%####################%%%%%%%%%#############%%#######################################%%%@%@%%#*****+++++++++++++++++++++++++++++++++++++++#@@@@@@@@@@%*+++++++++++++++++++*@@@@@@@@@@@%#%@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######################*#######*%%%#+++++++==================================================-------------------------------------------------------::::::::::::............. .:-+#####**+++=======---------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::. ..:--======-----::::::::::.. ..::::::............. .............................................-:.................................................................................................................::::::-----====================-----------------------------------------------------==================================================================++++++++++++++++++++++++++++============--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------::::::::::::::::::::::::::::::::::---==+++++++++===---:::::--==+*****+==--::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::............................:::-===--:::.......................................................::::::.....................................................................................................................................................................................................::::---==========---:::...................:::--========---:::..................................................................::::-----------------:::::.................::::--------:::::...::::::::..............................::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.............................................................:::::::::::::::::--:::::::---===+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******************************************************************************************************************************************************************************************************************###############################################################################################################################################################################**************#############**********###################################################***############***********************************************************************************************#########**+++========================================================================================
**************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++************************##################################################################################################**************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#@@@@@@@@@@@%%#*+++++++==-:::......:::::::------------------------------------------------------------------------------------------=================--------------------------------------------------------------------------:::::..............:::::----------------:------+%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@#++=-::::::::::.......::::::::::::::::::::::::::::::::.........:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.......................................................................:::::::.........................................................................................................::::::::.....................:*######+..........:::=#######%%%%####################%%%%%%%%%#############%%######################################%%%@%%%%#*****++++++++++++++++++++++++++++++++++++++++*@@@@@@@@@%*++++++++++++++++++++#@@@@@@@@@@%*+#@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##############################*%%%#+++++++==================================================------------------------------------------------------:::::::::::::............. .:-+######**++=======----------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::. ..:--======-----::::::::::... ..::::::............. ............................................-:.................................................................................................................::::::-----====================-----------------------------------------------------===============================================================+++++++++++++++++++++++++++++++============--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------::::::::::::::::::::::::::::::::::---==++++++++++==---:::::--==+*****++=---:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::............................:::-====--::.......................................................::::::.....................................................................................................................................................................................................:::----=========---::::...................::::--=======---:::..................................................................::::-----------------:::::.................::::--------:::::...:::::::::........................::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::..............................:........................:::::::::::::::::::::------:::---====+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****************************************************************************************************************************************************************************************************************########################################################################################################################################################################################****#################****############################################################################################################*********************************************************##########**+++========================================================================================
**************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***********************##################################################################################################**************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#@@@@@@@@@@@%##*+++++++==-:::......:::::::------------------------------------------------------------------------------------------=================-------------------------------------------------------------------------:::::...............::::-------------------------=#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%*++=::::::::::.......:::::::::::::::::::::::::::::::..........:::::::::::::::::.:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.......................................................................:::::::.........................................................................................................::::::::.....................:*######+..........:::+#######%%%%####################%%%%%%%%%#############%%######################################%%@@%%%#*****+++++++++++++++++++++++++++++++++++++++++*%@@@@@@@@#+++++++++++++++++++++#@@@@@@@@@%*++#@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####################*########*%%%#+++++++===================================================-----------------------------------------------------:::::::::::::............. .:-+######**++=======----------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: ..:--======-----::::::::::... ..:::::::............ ...........................................-:.................................................................................................................::::::-----====================-------------------------------------------------------============================================================+++++++++++++++++++++++++++++++++===========--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------::::::::::::::::::::::::::::::::::---==++++++++++==---::::---=++******+==--:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::............................:::-====--::.......................................................::::::.....................................................................................................................................................................................................:::---==========---:::....................::::--========--::::..........................::::...................................::::-----------------:::::.................::::--------:::::...:::::::::.....................:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::..............................:................::::::::::::::::::::::::::::------------====++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****************************************************************************************************************************************************************************************************************###############################################################################################################################################################################################################***##############################################################################################################**########################*****************************##########**+++========================================================================================
**************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********************####################################################################################################************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#@@@@@@@@@@@%%##+++++++=--:::......::::::-------------------------------------------------------------------------------------------=================-------------------------------------------------------------------------:::::...............::::---------------------------*%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%+++-::::::::.:......:::::::::::::::::::::::::::::::..........:::::::::::::::....::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.......................................................................:::::::........................................................................................................::::::::::....................:*######*..........:::*#######%%%%#####################%%%%%%%##############%%#####################################%%@%@%%#*****++++++++++++++++++++++++++++++++++++++++++*%@@@@@@@%++++++++++++++++++++++#@@@@@@@@%++++#@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#################*#########%%%#+++++++===================================================-----------------------------------------------------::::::::::::.............. .:-+######***+=======-----------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-----------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::. ...:--======-----::::::::::... ...:::::::............ ...........................................-:.................................................................................................................:::::::----=====================-------------------------------------------------------=========================================================+++++++++++++++++++++++++++++++++=============--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::::::::::::::::::::::::::::::::::--==++++++++++==---::::---=++******++=--:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::...........................::::-====--:::......................................................::::::...........................................................................................................................................................................:........................::::---==========--::::....................::::--========---:::.........................:::::..................................:::::-----------------:::::................:::::--------:::::...:::::::::...........:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::................................................::::::::::::::::::::::::::-----------=====++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****************************************************************************************************************************************************************************************************************###################################################################################################################################################################################################################################################################################################################################################################**********************#########***++========================================================================================
**************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********************#####################################################################################################************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#@@@@@@@@@@@@%%#++++++==--:::......::::::-------------------------------------------------------------------------------------------================--------------------------------------------------------------------------:::::...............::::--------------------------:-+%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#++=:::::::::.......:::::::::::::::::::::::::::::::..........:::::::::::::::....::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::....................................................::................::::::::........................................................................................................::::::::::....................:*######*...........:-########%%%%#####################%%%%%%%##############%%####################################%%%%@%%#*****++++++++++++++++++++++++++++++++++++++++++++%%@@@@@%*++++++++++++++++++++++%@@@@@@@#+++++%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%################*#########%%%#+++++++===================================================-----------------------------------------------------::::::::::::.............. .:-+######***+========----------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-----------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::. ..:---======-----::::::::::... ...:::::::............ ............................................-:.................................................................................................................::::::-----=====================-------------------------------------------------------========================================================++++++++++++++++++++++++++++++++++==============-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::::::::::::::::::::::::::::::::::--==++++++++++==---::::--==++******++=---::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::............................:::-====--:::......................................................::::::...........................................................................................................................................................................::.......................:::---==========---::::.....................:::--========---:::.........................::::::.................................:::::-----------------:::::................:::::--------::::::.:::::::::::........:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::................................................::::::::::::::::::::::::::-----=========++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******************************************************************************************************************************************************************************************************####***#######################################################################################################################################################################################################################################################################################################################################################################******************############**++========================================================================================
**************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********************######################################################################################################***********************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#@@@@@@@@@@@@%%#*+++++==-::::......::::::-------------------------------------------------------------------------------------------================--------------------------------------------------------------------------:::::..............:::::---------------------------:-=%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%*++-::::::.:.......::::::::::::::::::::::::::::::...........:::::::::::::::....:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::..................................................:::::::..............::::::::........................................................................................................::::::::::....................:*######*...........:=########%%%%#####################%%%%%%%##############%%####################################%%%%@%#*****+++++++++++++++++++++++++++++++++++++++++++++#@@@@@@#+++++++++++++++++++++++%@@@@@@#+++++#%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##############*#########%%%*+++++++===================================================-----------------------------------------------------::::::::::::.............. .--+#######**+========-----------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::. ..::--======-----::::::::::... ...:::::::............. ............................................-:..................................................................................................................:::::-----=====================-------------------------------------------------------=======================================================+++++++++++++++++++++++++++++++++++==============-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::::::::::::::::::::::::::::::::::--==++++++++++==---::::--==++*******+==--::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::............................:::-====--:::......................................................::::::..........................................................................................................................................................................::::......................:::---=========---:::::.....................:::---=======---:::........................::::::::................................:::::-----------------::::::...............:::::--------::::::::::::::::::.....::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::...............................................::::::::::::::::::::::::::----=========++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******************************************************************************************************************************************************************************************#############################################################################################################################################################################################################################################################################################################################################################################################**************#############**++========================================================================================
**************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******************######################################################################################################***********************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#@@@@@@@@@@@@@%#*++++==--:::......:::::::-------------------------------------------------------------------------------------------================-------------------------------------------------------------------------:::::...............:::::------------------------------=%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%+++::::::........:::::::::::::::::--::::::::::::...........:::::::::::::::....:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.................................................:::::::::............:::::::::.......................................................................................................:::::::::::....................:*######*...........:+########%%%######################%%%%%%%##############%%###################################%%%%@%##****++++++++++++++++++++++++++++++++++++++++++++++#@@@@@#++++++++++++++++++++++++%@@@@%*++++++#%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%############*#########%%%*+++++++===================================================----------------------------------------------------:::::::::::::.............. .--+####*##**+=========----------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::. .:--=======-----::::::::::... ...:::::::............ .............................................-:..................................................................................................................::::::----=====================--------------------------------------------------------==================================================+++++++++++++++++++++++++++++++++++++++==============-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::::::::::::::::::::::::::::::::::--==++++++++++==---::::--==+********+==--:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.............................:::-=====-:::......................................................::::::..........................................................................................................................................................................:::::....................::::--==========---::::......................:::---========--:::........................::::::::................................:::::------------------::::::..............:::::---------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::....:::::::::::::::::............................................::::::::::::::::::::::::::::----=======+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******************************************************************************************************************************************************************************************################################################################################################################################################################################################################################################################################################################################################################################################***********#############**+++=======================================================================================
**************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******************######################################################################################################***********************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#%@@@@@@@@@@@@%#*+++===--:::......::::::--------------------------------------------------------------------------------------------===============--------------------------------------------------------------------------:::::...............:::::---------------------------:---=%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#++=:::..:.......:::::::::::::::------::::::::::..........:::::::::::::::.....:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.................................................::::::::::...........:::::::::.......................................................................................................:::::::::::....................:*######*...........:*########%%%######################%%%%%%%##############%%###################################%%%%@%#****+++++++++++++++++++++++++++++++++++++++++++++++#%@@@%+++++++++++++++++++++++++%@@@#+++++++*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####################%%%*+++++++===================================================---------------------------------------------------::::::::::::::.............. .-=+####**#***=========----------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::. .:--========-----:::::::::... ...:::::::............ ..............................................-:..................................................................................................................::::::----=====================--------------------------------------------------------================================================+++++++++++++++++++++++++++++++++++++++++==============-------------------------------------::----------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::::::::::::::::::::::::::::::::::---=++++++++++==---::::--=++********++=--:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.............................:::--====-:::......................................................::::::..........................:::............................................................................................................................................::::::....................:::---=========---:::::.......................:::--========--::::.......................::::::::................................:::::------------------:::::::::...........:::::---------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::..............:::::::::::::...........................................::::::::::::::::::::::::::::----======++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****************************************************************************************************************************************************************************************##################################################################################################################################################################################################################################################################################################################################################################################################********#**#############***++=======================================================================================
**************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******************######################################################################################################***********************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#%@@@@@@@@@@@@%#*+++==--:::.......::::::--------------------------------------------------------------------------------------------===============--------------------------------------------------------------------------:::::...............:::::--------------------------------=%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%*=+-:::.........::::::::::::::--------::::::::...........:::::::::::::::.....:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::................................................::::::::::::..........:::::::::......................................................................................................::::::::::::....................:+######*...........-#########%%%######################%%%%%%%##############%%##################################%%%%@%#****++++++++++++++++++++++++++++++++++++++++++++++++*%@@%*+++++++++++++++++++++++++*%%*++++++++*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##########*##########%%%*+++++++===================================================---------------------------------------------------::::::::::::::............... .-=**###**##**==========---------------------------:-::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.:--========-----:::::::::... ...::::::::........... ..............................................-:.............................................................:::..................................................::::::----=====================--------------------------------------------------------=============================================++++++++++++++++++++++++++++++++++++++++++++==============-------------------------------------::----------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::::::::::::::::::::::::::::::::::---==+++++++++==---:::---=++********++==--:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::..............................:::--====--::......................................................::::::.........................::::::..........................................................................................................................................:::::::...................:::---=========---::::........................:::--========---:::......................::::::::::...............................:::::------------------:::::::::::.........:::::---------:::::::::::::::::::::::::::::::---::::::::::::::::::::::::::::::::::::::::::::::::::::::.................:::::::::::::..........................................::::::::::::::::::::::::::::----=====++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***************************************************************************************************************************************************************************************#####################################################################################################################################################################################################################################################################################################################################################################################################*********##############**++=======================================================================================
**************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****************######################################################################################################***********************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#%@@@@@@@@@@@@@#*++===--:::.......::::::--------------------------------------------------------------------------------------------===============--------------------------------------------------------------------------::::................:::::-------------------------:----:--+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#++=:::.........::::::::::::::---------:::::::...........:::::::::::::::.....:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::................................................:::::::::::::........::::::::::......................................................................................................::::::::::::....................:+######*...........=#########%%#######################%%%%%%%##############%%#################################%%%%@%%#***+++++++++++++++++++++++++++++++++++++++++++++++++*#%%*++++++++++++++++++++++++++++++++++++++#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##########*##########%%%*+++++++====================================================--------------------------------------------------::::::::::::::............... .-=**###**##**==========----------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--========-----:::::::::... ...::::::::....:...... . ...............................................-:.............................................................:::..................................................:::::----======================--------------------------------------------------------===========================================++++++++++++++++++++++++++++++++++++++++++++++=============--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::::::::::::::::::::::::::::::::::---==+++++++++==----::---=++*********+==--:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::..............................:::--====--:::.....................................................::::::........................::::::::.........................................................................................................................................::::::::..................:::--=========---::::.........................:::---=======---:::......................::::::::::...............................:::::------------------::::::::::::........:::::---------::::::::::::::::::::::::::::------:::::::::::::::::::::::::::::::::::::::::::::::::::....................:::::::::::::..........................................:::::::::::::::::::::::::::----====++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**************************************************************************************************************************************************************************************######################################################################################################################################################################################################################################################################################################################################################################################################*********##############**++=======================================================================================
**************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****************######################################################################################################***********************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#%%@@@@@@@@@@@%#++====--:::.......::::::--------------------------------------------------------------------------------------------==============---------------------------------------------------------------------------::::................:::::----------------------------------*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@*=+-:.:.:......::::::::::::::---==----:::::::...........::::::::::::::......:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::................................................:::::::::::::::......::::::::::......................................................................................................::::::::::::....................:+######*..........:+########%%%#######################%%%%%%%##############%%#################################%%%%@%#***+++++++++++++++++++++++++++++++++++++++++++++++++++*##*++++++++++++++++++++++++++++++++++++++%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###########*##########%%%*+++++++====================================================--------------------------------------------------::::::::::::::............... .-+**###**##**==========----------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--========-----:::::::::... ...::::::::..:.::...... . ...............................................--............................................................:::::.................................................:::::----======================---------------------------------------------------------=========================================++++++++==+++++++++++++++++++++++++++++++++++++=============--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::::::::::::::::::::::::::::::::::---==+++++++++===---::---=++***###***++=--::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::...............................:::--====--:::.....................................................::::::.......................:::---:::.........................................................................................................................................::::::::.................::::--=========---::::.........................:::---=======---:::......................::::::::::..............................::::::-------------------::::::::::::.......:::::---------:::::::::::::::::::::::::::-------:::::::::::::::::::::::::::::::::::::::::::::..........................:::::::::::::..........................................::::::::::::::::::::::::::----===++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**************************************************************************************************************************************************************************************#######################################################################################################################################################################################################################################################################################################################################################################################################*********#############**+++======================================================================================
*************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***************######################################################################################################************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#%%@@@@@@@@@@@%#+++===--:::.......::::::---------------------------------------------------------------------------------------------=============---------------------------------------------------------------------------::::................::::------------------------------------#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%++=-:........::::::::::::::---=====---::::::...........::::::::::::::......:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::...............................................::::::::::::::::::...:::::::::::......................................................................................................::::::::::::....................:+######*..........:*########%%%########################%%%%%%##############%%#################################%%%@%#***++++++++++++++++++++++++++++++++++++++++++++++++++++++**+++++++++++++++++++++++++++++++++++++*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#########*##########%%%*++++++++==================================================--------------------------------------------------:::::::::::::::............... .-+**###**###*===========-----------------------------::::::::::::::::::::::::::::::::::::::::::::..:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--======-----::::::::::.. ...:::::::::.:::::..... ...............................................--............................................................:::::.................................................:::::----======================---------------------------------------------------------===========================================++++++++++++++++++++++++++++++++++++++++++++==============--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::::::::::::::::::::::::::::::::::---==++++++++++==---::---=++***###***++=--::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::...............................:::--====--:::.....................................................::::::.......................::-----:::........................................................................................................................................::::::::.................:::---=========--::::..........................:::---=======---:::.....................::::::::::::.............................::::::-------------------::::::::::::......:::::-----------::::::::::::::::::::::::::--------:::::::::::::::::::::::::::::::...::::::..............................:::::::::::::..............................:......:::::::::::::::::::::::::::::-----===+++++++++++++++++++++++++++++++++++++++++++++*****+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*+++++++**********************************************************************************************************************************************************************************######################################################################################################################################################################################################################################################################################################################################################################################################************#############***++======================================================================================
*************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***************#####################################################################################################************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#%%%@@@@@@@@@@%#++===---::........::::::----------------------------------------------------:::::::----------------------------------============---------------------------------------------------------------------------:::::................::::-------------------------------------%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#=+=::.......::::::::::::::---=====---::::::...........::::::::::::::......:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::...............................................::::::::::::::::::::::::::::::::......................................................................................................::::::::::::....................:+######*..........-#########%%%########################%%%%%%##############%%################################%%%%%#***++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##########*##########%%%*++++++++==================================================-------------------------------------------------::::::::::::::::............... .-+**###**###*===========-----------------------------:::::::::::::::::::::::::::::::::::::::::::.....::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-======-----::::::::::... ...:::::::::.:::::..... ................................................--............................................................:::::.................................................:::::----======================--------------------------------------------------------============================================++++++++++++++++++++++++++++++++++++++++++++==============--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::::::::::::::::::::::::::::::::::---==++++++++++==---::---=++***###***++==--:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::...............................:::--====--:::.....................................................::::::.......................::--=--:::........................................................................................................................................:::::::::................:::---========---::::..........................:::---=======---:::.....................::::::::::::.............................:::::::------------------:::::::::::::.....:::::-----------::::::::::::::::::::::::::--------::::::::::::::::::::::::..............................................:::::::::::::.....................................:::::::::::::::::::::::::--------===+++++++++++++++++++++++++++++++++++++++++++*********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=+++=+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**************************************************************************************************************************************************************************************######################################################################################################################################################################################################################################################################################################################################################################################################**************###########***++======================================================================================
*************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***************#####################################################################################################***********************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#%%%%@@@@@@@@@%#++===---::........::::::---------------------------------------------------:::::::::---------------------------------============---------------------------------------------------------------------------:::::................::::--------------------------------:----=%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@*=+:.......:::::::::::::::--=======--::::::..........:::::::::::::::......:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::...............................................::::::::::::::::::::::::::::::::.....................................................................................................:::::::::::::...................::+######*.........:=#########%%%#####################%##%%%%%%##############%%################################%%%%#****++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#########*###########%%%*++++++++==================================================-------------------------------------------------::::::::::::::::............... .=***##***###*+==========-----------------------------::::::::::::::::::::::::::::::::::::::::::.. ...::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--====------:::::::::... ...:::::::::::::::..... ................................................:-............................................................:::::.................................................:::::---=======================--------------------------------------------------------====================================++++++++++++++++++++++++++++++++++++++++++++++++++===============---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::::::::::::::::::::::::::::::::::---==++++++++++==---::---=++***###****+==--:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::...............................:::--====--:::.....................................................::::::................. ....::--===--::........................................................................................................................................:::::::::................:::---========---:::...........................::::---=====---::::.....................::::::::::::.............................:::::::-------------------:::::::::::::...::::::------------:::::::::::::::::::::::::-------:::::::::::::::::::.....................:::::::::::....................:::::::::::::..............................:::::::::::::::::::::::::-------------====++++++++++++++++++++++++++++++++++++++++++++*********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==========+++++++++++++++++++++=======================++++++++++++++++++++++++++++++++++++++++++****++++********++**********************************************************************************************************************************************************************###################################################################################################################################################################################################################################################################################################################################################################################################********************###########**++======================================================================================
*************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***************####################################################################################################***********************++++++++++++++++++++++++++++++++++++++++++++*****+++++++++++++#%%%%@%%@@@@@@@#*+===--:::........::::::---------------------------------------------------::::::::::--------------------------------============---------------------------------------------------------------------------:::::................::::--------------------------------------+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@%=+=:......:::::::::::::::--===++==--::::::..........:::::::::::::::.....::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::...............................................::::::::::::::::::::::::::::::::.....................................................................................................:::::::::::::...................::+######*........::+#########%%######################%##%%%%%%##############%%###############################%%%%%#***++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##########*##########%%%#+++++++++==================================================------------------------------------------------:::::::::::::::::............... .=********###*+===========-----------------------------:::::::::::::::::::::::::::::::::::::::::.. ...::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--===------:::::::::... ...:::::::::::::::...... ................................................:-............................................................:::::.................................................:::::---=======================-------------------------------------------------------================================++++=+++++++++++++++++++++++++++++++++++++++++++++====================---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::::::::::::::::::::::::::::::::::---==++++++++++==---::---=++***####***++=--::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::................................:::--=====-:::.....................................................::::::......................::--===--::........................................................................................................................................::::::::::...............:::--=========---:::............................:::----====---:::......................:::::-::::::.............................:::::::-------------------::::::::::::::::::::::------------:::::::::::::::::::::::::-------::::::::::::::::.......................:::::::::::::::::::::::::::::::::::::::::::::........................::::::::::::::::::::::::::-------------=======++++++++++++++++++++++++++++++++++++++++++++++*********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=+++++++++++++++++++++=============================================================+++++++++++++++++++++++++++++++++++++++*+++++************************************************************************************************************************************************************************###############################################################################################################################################################################################################################################################################################################################################################################################***************************###########**+++=====================================================================================
*************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**************####################################################################################################***********************++++++++++++++++++++++++++++++++++++++++*+********++++++++++++#%%%%@%%@@@@@@@%#*+==--:::........::::::---------------------------------------------------::::::::::::::----------------------------===========----------------------------------------------------------------------------:::::................::::------------------------------------:-:*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@*=+-.:....:::::::::::::::--==+++==---:::::..........::::::::::::::......::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::...............................................::::::::::::::::::::::::::::::::....................................................................................................::::::::::::::...................::+######+.......:::*#########%%######################%###%%%%###############%%##############################%%%%%#***+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##########*##########%%%#+++++++++++================================================-----------------------------------------------::::::::::::::::::............... :+********####+===========-----------------------------:::::::::::::::::::::::::::::::::::::::::.. ..:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-===------:::::::::... ...:::::::::::::::...... ................................................:-............................................................:::::.................................................:::::---=======================-------------------------------------------------------=================================++++++++++++++++++++++++++++++++++++++++++++++======================----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::::::::::::::::::::::::::::::::::---==++++++++++==---::---=++***####***++=--::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.................................:::-=====-:::.....................................................::::::......................::-====--::........................................................................................................................................::::::::::..............::::--========---::::............................::::---------::::......................::::---::::::............................::::::::------------------::::::::::::::::::::::------------::::::::::::::::::::::::::-----::::::::::::............................:::::::::::::::::::::::::::::::::::::::::::::......................:::::::::::::::::::::::::::-------=============++++++++++++++++++++++++++++++++++++++++++++++++********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=============++===========================================================+++++++++++++++++**++++++++++++++++****************************************************************************************************************************************************************************############################################################################################################################################################################################################################################################################################################################################################################************************************************##########**+++=====================================================================================
*************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**************###################################################################################################***********************++++++++++++++++++++++++++++++++++++++**************++++++++++#%%%%%%%@@@@@@@%##*+=--:::........::::::---------------------------------------------------:::::::::::::::---------------------------==========-----------------------------------------------------------------------------::::.................::::-------------------------------------:--#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%+==:....::::::::::::::::--==++++==--::::...........::::::::::::::......:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::..............................................::::::::::::::::::::::::::::::::....................................................................................................::::::::::::::...................::+######+.......::-##########%%*#####################%###%%%%##############%%%##############################%%%%#***++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########*##########%%%#+++++++++++=================================================---------------------------------------------:::::::::::::::::::............... :+********####+============-----------------------------:::::::::::::::::::::::::::::::::::::::... ...:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--=------:::::::::... ...::::::::::::::::..... ................................................:-............................................................:::::.................................................:::::---=======================-------------------------------------------------------==================================+++++++++++++++++++++++++++++++++++++++++++========================----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::::::::::::::::::::::::::::::::::---==++++++++++==---::---==+***####****+==--:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.................................:::-=====--::.....................................................::::::......................::-====--::........................................................................................................................................::::::::::..............:::---========---:::..............................::::--------::::.....................:::::----:::::...........................::::::::::-----------------:::::::::::::::::::::-------------:::::::::::::::::::::::::::----::::::::................................::::::::::::::::::::::::::::::::::::::::::::::..................:::::::::::::::::::::::::::::----==========++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=============+================================================================+++++++++++++++++*******++++***********************************************************************************************************************************************************************#########################################################################################################################################################################################################################################################################################################################################################################*****************************************************#########***++=====================================================================================
*************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**************##################################################################################################***********************++++++++++++++++++++++++++++++++++++*****************+++++++++#%%%%%%@@@@@@@@%%##+=--:::........::::::---------------------------------------------------::::::::::::::::---------------------------=========----------------------------------------------------------------------------:::::.................::::-----------------------------------:---:=%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#=+=:...:::::::::::::::---=+++++==--::::...........::::::::::::::.....:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::..............................................:::::::::::::::::::::::::::::::::...................................................................................................:::::::::::::::...................::+######+.......::=##########%%*#####################%###%%%%##############%%%#############################%%%%%#***+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##################%%%*+++++++++++=================================================--------------------------------------------::::::::::::::::::::............... :*********####+============-----------------------------::::::::::::::::::::::::::::::::::::::::.. ..::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--------:::::::::... ..:::::::::::::::::..... ................................................:-.............................................................:::..................................................:::::---=======================-------------------------------------------------------===================================++++++++++++++++++++++++++++++++++++++++==========================----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::::::::::::::::::::::::::::::::::---==++++++++++==---:::--==++***###****+==--:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.................................:::-=====--::.....................................................::::::......................::-====--::.......................................................................................................................................:::::::::::..............:::---========--::::..............................::::::----:::::......................:::::----:::::...........................::::::::::-----------------:::::::::::::::::::::------------:::::::::::::::::::::::::::::--:::::::.................................::::::::::::::::::::::::::::::::::::::::::::::::................:::::::::::::::::::::::::::::---=====++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=========+++==========================================================================================++++++++++++++*******************************************************************************************************************************************************************#####################################################################################################################################################################################################################################################################################################################################*****************************************************************************************##########**++=====================================================================================
*************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*************##################################################################################################***********************+++++++++++++++++++++++++++++++++++******************+++++++++#%%%%%%@@@@@@@@%%%#*=--:::........::::::---------------------------------------------------::::::::::::::::----------------------------=======-----------------------------------------------------------------------------:::::................:::::-----------------------------------------=%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%+==-...:::::::::::::::---=+++++==--::::...........::::::::::::::.....:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::..............................................:::::::::::::::::::::::::::::::::...................................................................................................::::::::::::::::..................::+######+.......::+##########%%*#########################%%%###############%%##############################%%%%#***++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#########%#######%%%*+++++++++++=================================================--------------------------------------------::::::::::::::::::::............... -*********####*===========-------------------------------:::::::::::::::::::::::::::::::::::::::.. ...::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-------:::::::::... ..:::::::::::::::::..... ................................................::.............................................................:::...................................................::::---=======================-------------------------------------------------------============================+======+++++++++++++++++++++++++++++++++++++++==========================-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::::::::::::::::::::::::::::::::::---==++++++++++==--::::--==++***####***++=--:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.................................:::-=====--:::....................................................::::::......................::-====--::.......................................................................................................................................::::::::::::.............:::---=======---:::................................:::::::::::::.......................:::::----:::::...........................::::::::::-----------------::::::::::::::::::::::----------:::::::::::::::::::::::::::::::-:::::::................................::::::::::::::::::::::::::::::::::::::::::::::::::...............:::::::::::::::::::::::::::----===+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===============================================================================================================+++++++************************************************************************************************************************************************************##############################################################################################################################################################################################################################################################################################################################*************************************************************************************************##########**++=====================================================================================
*************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*************#################################################################################################***********************+++++++++++++++++++++++++++++++++*******************++++++++++#%%%%%%@@@@@@@@@%%##+--::........::::::----------------------------------------------------:::::::::::::::::-----------------------------====------------------------------------------------------------------------------:::::................:::::------------------------------------------+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#===:.:.::::::::---:::---=++++++=--::::..........::::::::::::::......:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::..............................................::::::::::::::::::::::::::::::::....................................................................................................::::::::::::::::.................:::+######*......:::*#########%%#*#####################%##%##################%%#############################%%%%%***+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#*#%#%#######%%%*+++++++++++=================================================--------------------------------------------::::::::::::::::::::............... =*********####*+===========------------------------------:::::::::::::::::::::::::::::::::::::::.. ..:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::------::::::::::.. ...:::::::::::::::::...... ...............................................................................................................:::...................................................:::::---======================-------------------------------------------------------=============================================================++++++++++=============================-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------::::::::::::::::::::::::::::::::::::--==+++++++++==---::::---=++***####***++=--::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::..................................:::--====--:::...................................................:::::::................. ....::-====--::.......................................................................................................................................::::::::::::............::::--========---:::.................................:::::::::::........................:::::-----::::...........................::::::::::-----------------:::::::::::::::::::::::-------:::::::::::::---:::::::::::::::::::::::::..............................::::::::::::::::::::::::::::::::::::::::::::::::::::..............:::::::::::::::::::::::---------==+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=======================================================================================================================+++++++*****************************************************************************************************************************************************##############################################################################################################################################################################################################################################################################################################################*************************************************************************************************##########**+++====================================================================================
*************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**************################################################################################################***********************+++++++++++++++++++++++++++++++*********************++++++++++#%%%%%%@@@@@@@@@%%%#+--::........::::::----------------------------------------------------:::::::::::::::::---------------------------------------------------------------------------------------------------------------::::.................:::::-------------------------------------------#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%+==-:::::::::----------==++**++==-::::..........::::::::::::::......:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::..............................................::::::::::::::::::::::::::::::::....................................................................................................::::::::::::::::.................:::+######*.......::*##########%#*#####################%#####################%%#############################%%%%#***+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#*#%#########%%%*++++++++++++================================================-------------------------------------------:::::::::::::::::::::............... +*********####*+===========-------------------------------:::::::::::::::::::::::::::::::::::::::.. ..::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-----::::::::::.. ...:::::::::::::::::...... ...............................................................................................................:::...................................................:::::---======================-------------------------------------------------------====================================================================================================----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::::::::::::::::::::::::::::::::::::--==+++++++++==---:::::--=++***####***++=---:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::..................................:::--====--:::...................................................:::::::......................::-====--::.......................................................................................................................................:::::::::::::...........::::--========--::::..................................:::::::::.........................:::::-----::::...........................::::::::::-----------------:::::::::::::::::::::::::--::::::::::::::::----:::::::..::::::::::::::...........................::::::::::::::::::::::::::::::::::::::::::::::::::::::::::............::::::::::::::::::-------------===++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++================================================================================================================================+++++***********************************************************************************************************************************************###########################################################################################################################################################################################################################################################################################################################****************************************************************************************************##########***++====================================================================================
*************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**************###############################################################################################***********************+++++++++++++++++++++++++++++**********************+++++++++++#%%%%%%@@@@@@@@@@%%#*=-::........::::::----------------------------------------------------:::::::::::::::::---------------------------------------------------------------------------------------------------------------::::.................:::::--------------------------------------------%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@#=+=-:::::::-----------==++**++==-::::..........::::::::::::::......:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::..............................................::::::::::::::::::::::::::::::::...................................................................................................:::::::::::::::::.................:::+######*.......:-###########%*######################%#####################%%############################%%%%%#**+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#*##%########%%%*++++++++++++================================================------------------------------------------:::::::::::::::::::::................ .**********####*+===========-------------------------------::::::::::::::::::::::::::::::::::::::::... ..:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---::::::::::.. ...:::::::::::::::::...... ...............................................................................................................:::...................................................:::::----=====================-------------------------------------------------------====================================================================================================----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::::::::::::::::::::::::::::::::::::--==+++++++++==---:::::--=++***####****+==--:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::..................................:::--====--:::...................................................:::::::......................::-====-::.......................................................................................................................................::::::::::::::...........::::--=======---:::....................................................................:::::------:::::..........................:::::::::------------------:::::::::::::::::::::::::::::::::::::::::::----:::::::...::::::::::::::..................:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::...........:::::::::::::----------------=====++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=====================================================================================================================================+++++*****************************************************************************************************************************************########################################################################################################################################################################################################################################################################################################***************##*******************************************************************************************************##########***++====================================================================================
*************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***************##############################################################################################***********************+++++++++++++++++++++++++++***********************++++++++++++#%%%%%%@@@@@@@@@@%%%*=:::........::::::----------------------------------------------------:::::::::::::::::---------------------------------------------------------------------------------------------------------------::::.................:::::--------------------------------------------=%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@*=+=:::::::---==------==++***+==--:::..........::::::::::::::......:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::..............................................::::::::::::::::::::::::::::::::...................................................................................................:::::::::::::::::.................:::+######*......::+##########%%+######################%%####################%%############################%%%%#***+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##%#%%#######%%%*++++++++++++===============================================----------------------------------------::::::::::::::::::::::::................ .***********###**+===========------------------------------:::::::::::::::::::::::::::::::..::::::::......::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---:::::::::.. ....:::::::::::::::::...... ................................................................................................................:::...................................................:::::-----====---=--==========------------------------------------------------------=====================================================================================================----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::::::::::::::::::::::::::::::::::::--==+++++++++==---:::::--==+***####****+==--:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::..................................:::--====--:::...................................................:::::::......................::--==--::.......................................................................................................................................:::::::::::::::..........:::---=======---:::....................................................................:::::------:::::.........................::::::::::------------------::::::::::::::::::::::::::::::::::::::::::------:::::::.::::::::::::::::.......:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::........::::::-----------------===========+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===========================================================================================================================================++++***********************************************************************************************************************************###########################################################################################################################################################################################################################################################################################################**********************************************************************************************************************###########**++====================================================================================
*************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***************#############################################################################################***********************+++++++++++++++++++++++++***********************++++++++++++++#%%%%%@@@@@@@@@@@%%%*=:::........::::::----------------------------------------------------:::::::::::::::::--------------------------------------------------------------------------------------------------------------:::::.................::::---------------------------------------------:+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@%+=+-:::::---=====----==++***++=--:::..........::::::::::::::......:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::..............................................:::::::::::::::::::::::::::::::....................................................................................................:::::::::::::::::.................:::+######*:.....::*##########%%+######################%%####################%%###########################%%%%##**++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#*#%%#%#######%%%*++++++++++++===============================================-------------------------=++++=--------:::::::::::::::::::::::::................ .***********###**+===========-------------------------------::::::::::::::::::::::::::::::...:::::::::...:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.. ....:::::::::::::::::...... ................................................................................................................::....................................................:::::-------------------=====-------------------------------------------------------=====================================================================================================----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::::::::::::::::::::::::::::::::::::---=+++++++++==---:::::--==+****###****++=--:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::..................................:::--====--::....................................................:::::::......................::--==--::.......................................................................................................................................:::::::::::::::.........::::---=======--::::....................................................................:::::------:::::.........................:::::::::-------------------:::::::::::::::::::::::::::::::::...::::::------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::----------::::::::::.......:::::----------------=============++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=================================================================================================================================================++++******************************************************************************************************************************#############################################################################################################################################################################################################################################################################################################*********************************************************************************************************************##########**++====================================================================================
*************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***************#############################################################################################***********************++++++++++++++++++++++++***********************+++++++++++++++#%%%%%@@@@@@@@@@@%%#*=:::........::::::----------------------------------------------------:::::::::::::::::--------------------------------------------------------------------------------------------------------------:::::.................::::-----------------------------------------------*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#===-::::---======---==++***++=--:::.........::::::::::::::......::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::..............................................:::::::::::::::::::::::::::::::...................................................................................................::::::::::::::::::.................:::+######*:.....::###########%#+%#####################%%####################%%###########################%%%%#**+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#*##%#%#######%%%*++++++++++++===============================================------------------------+**###*=-----:::::::::::::::::::::::::::................ .***********###***===========--------------------------------:::::::::::::::::::::::::::::. .::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.. ....:::::::::::::::::...... ..................................................... .........................................................::....................................................:::::-------------------------------------------------------------------------------=====================================================================================================----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::::::::::::::::::::::::::::::::::::---=++++++++===--::::::--==++****##****++=--:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::..................................:::--====--::....................................................:::::::......................::--=---::.......................................................................................................................................:::::::::::::::.........::::--=======---::::....................................................................:::::------:::::.........................::::::::--------------------:::::::::::::::::::::::::::::::......:::::------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::------------------:::::::::.....::::::---------------=============+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=====================================================================================================================================================++++**************************************************************************************************************************################################################################################################################################################################################################################################################################################################################******************************************************************************************************************##########**+++===================================================================================
*************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****************############################################################################################***********************+++++++++++++++++++++++***********************++++++++++++++++#%%%%%@@@@@@@@@@@%%##+:::........::::::----------------------------------------------------:::::::::::::::::--------------------------------------------------------------------------------------------------------------:::::.................::::------------------------------------------------#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@%%*=+=::::---==+========+****++=--:::.........::::::::::::::......::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::..............................................:::::::::::::::::::::::::::::::..................................................................................................:::::::::::::::::::.................:::=######*:.....:=###########%**%#####################%%####################%%##########################%%%%##**+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#*#%%#%#######%%%*+++++++++++++==============================================----------------------=*#######+----::::::::::::::::::::::::::::................ :************##***+==========--------------------------------:::::::::::::::::::::::::::::. ..:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.. ....:::::::::::::::::...... ..................................................... . .....................................................::....................................................:::::-----------------------------------------------------------------------------=======================================================================================================----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::::::::::::::::::::::::::::::::::::---=++++++++==---::::::---=++****##*****+==-:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::..................................:::--====--::..........................:::::::...................:::::::......................::-----:::......................................................................................................................................:::::::::::::::::.........:::--=======--::::.....................................................................:::::------:::::.......................:::::::::---------------------:::::::::::::::::::::::::::.........::::::------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::------------------------:::::::::....::::::---------------============+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===========================================================================================================================================================+++**********************************************************************************************************************################################################################################################################################################################################################################################################################################################################******************************************************************************************************************##########***++===================================================================================
*************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****************###########################################################################################***********************+++++++++++++++++++++***********************++++++++++++++++++#%%%%%@@@@@@@@@@@%%%#+:::........::::::----------------------------------------------------:::::::::::::::::--------------------------------------------------------------------------------------------------------------:::::.................::::------------------------------------------------=@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%+=+-:::--===++=======+****++==-:::.........::::::::::::::......::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::..............................................:::::::::::::::::::::::::::::::..................................................................................................:::::::::::::::::::.................:::=######*:....::+###########%+*%#####################%%####################%%##########################%%%%#**++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#*#%%#%%######%%%*+++++++++++++==============================================---------------------=*########*=-::::::::::::::::::::::::::::::................ =************##***+==========--------------------------------:::::::::::::::::::::::::::::.. ..::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.. ....:::::::::::::::::...... ................................................. .. ..................................................:.....................................................:::::----------------------------------------------------------------------------=======================================================================================================-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::::::::::::::::::::::::::::::::::::---=++++++++==---:::::::--=++****##*****+==--::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::...................................::--====--::..........................::::::::..................:::::::......................::-----:::......................................................................................................................................:::::::::::::::::.........:::---=====---::::.....................................................................:::::-------::::......................::::::::::---------------------:::::::::::::::::...................::::::-------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---------------------------------::::::::..::::::-----------------==========++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===============================================================================================================================================================+++******************************************************************************************************************################################################################################################################################################################################################################################################################################################################******************************************************************************************************************###########**++===================================================================================
*************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******************###########################################################################################**********************++++++++++++++++++++************************++++++++++++++++++#%%%%%%@@@@@@@@@%%%%#+:::........::::::----------------------------------------------------::::::::::::::::---------------------------------------------------------------------------------------------------------------::::.................:::::-------------------------------------------------*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@*=+=-:---==++++=====++*****+==-::..........::::::::::::::.....:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::..............................................:::::::::::::::::::::::::::::::..................................................................................................:::::::::::::::::::................::::=#######:....::*##########%%+#%#####################%%####################%%##########################%%%##**+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##*#%%#%##%%####%%%*+++++++++++++==============================================--------------------+*######%%%*+=::::::::::::::::::::::::::::::................ +************##****===========--------------------------------:::::::::::::::::::::::::..::. ..::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::... ....:::::::::::::::::...... ................................................ ............................................::....................................................:::::---------------------------------------------------------------------------========================================================================================================-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::::::::::::::::::::::::::::::::::::---==+++++++==---:::::::--==+*****#*****+==--::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::..................................:::--====--::..........................::::::::::................:::::::......................::-----::.......................................................................................................................................:::::::::::::::::.........:::---====---::::......................................................................::::--------::::....................:::::::::::---------------------::::::::::::::::::................:::::::::------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-------------------------------------:::::::..::::::-------------------=========+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++====================================================================================================================================================================+++*****************************************************************************************************##******###################################################################################################################################################################################################################################################################################################################***************************************************************************************************************###########**+++==================================================================================
*************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******************##########################################################################################*******+++++***********+++++++++++++++++++***********************++++++++++++++++++++#%%%%%%@@@@@@@@@%%%%#+:::.......:::::::----------------------------------------------------::::::::::::::::--------------------------------------------------------------------------------------------------------------:::::.................:::::--------------------------------------------------#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%++==::--==+++++====++*****+==-::..........::::::::::::::.....:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::..............................................:::::::::::::::::::::::::::::::..................................................................................................:::::::::::::::::::................::::=#######:....::*##########%#+#%#####################%%####################%%#########################%%%%##**+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#*#%%%%#%%%####%%%*+++++++++++++===============================================------------------+*#####%%%%%#*=-:::::::::::::::::::::::::::::................ *************##****+==========--------------------------------::::::::::::::::::::::::....:.. ..::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.. ....:::::::::::::::::...... ............................................... ...........................................::....................................................:::::-------------------------------------------------------------------------==========================================================================================================-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::::::::::::::::::::::::::::::::::::---==+++++++==--::::::::--==++**********+==--:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::...................................:::--====--::..........................:::---::::................:::::::......................::----:::.......................................................................................................................................:::::::::::::::::.........:::----==----:::.......................................................................::::--------:::::................::::::::::::::---------------------::::::::::::::::...........:::..:::::::::::------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::----------------------------------------:::::::::::::::--------------------========+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=======================================================================================================================================================================+++**************************************************************************************************#******####################################################################################################################################################################################################################################################################################################################***************************************************************************************************************###########**+++==================================================================================
*************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******************##########################################################################################******+++++++**********++++++++++++++++++***********************+++++++++++++++++++++#%%%%%%@@@@@@@@@%%%%#+:::.......::::::-----------------------------------------------------::::::::::::::----------------------------------------------------------------------------------------------------------------:::::.................:::::---------------------------------------------------%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#+++-:--==+++++====++*****+==-::.........::::::::::::::::....::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::...............................................:::::::::::::::::::::::::::::::..................................................................................................::::::::::::::::::.................::::=#######:....:-###########%#+#######################%%####################%%#########################%%%##**++++++++++++++++++++++++++++++++++++++**++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#*#%%%%%%%%####%%%*+++++++++++++===============================================-----------------*##%#%%%%%%%%%*+-:::::::::::::::::::::::::::::................ .*************##****+==========---------------------------------:::::::::::::::::::::::. ..:....::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.. ....:::::::::::::::::...... ............................................. ...........................................::.....................................................::::------------------------------------------------------------------------===========================================================================================================-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::::::::::::::::::::::::::::::::::::---==+++++++==--::::::::---=++**********+==--:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::....................................::--====--::.........................::::-----:::...............:::::::......................::----:::.......................................................................................................................................::::::::::::::::::........::::--------::::.......................................................................::::--------:::::............::::::::::::::::::---------------------:::::::::::::::.......::::::::::::::::::::::-----::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---------------------------------------------:::::::::::::---------------------=======+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===========================================================================================================================================================================++++***************************************************************************************************##################################################################################################################################################################################################################################################################################################***################***************************************************************************************************************###########***++==================================================================================
*************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****##***********##########################################################################################*****+++++++++*********++++++++++++++++***********************+++++++++++++++++++++++#%%%%%%@@@@@@@@@%%%%#+:::.......::::::-----------------------------------------------------::::::::::::::----------------------------------------------------------------------------------------------------------------:::::.................:::::---------------------------------------------------=%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@*++=---==+++++====++*****++=-::.........::::::::::::::::...:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::...............................................::::::::::::::::::::::::::::::::................................................................................................:::::::::::::::::::.................::::=#######:....:=###########%*+#######################%%####################%%########################%%%%##*++++++++++++++++++++++++++++++++++++*****++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#*###%#%%######%%%*+++++++++++++================================================--------------=*####%%%%%%%%%%#*=-::::::::::::::::::::::::::::................ .*************##*****==========----------------------------------::::::::::::::::::::::. ..:....::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.. ....:::::::::::::::::..... ............................................. ..........................................::.....................................................::::------------------------------------------------------------------------===========================================================================================================-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::::::::::::::::::::::::::::::::::::---==++++++===--:::::::::--=++**********+==--:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::....................................::--====--::.........................:::-------:::..............:::::::......................:::--::::.......................................................................................................................................::::::::::::::::::........::::-------:::::.......................................................................::::--------::::::........::::::::::::::::::::----------------------::::::::::::::::...::::::::::::::::::::::::::---::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::------------------------------------------------:::::::::::::---------------------=======++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=================================================================================================================================================================================++**********************************************************************************************####################################################################################################################################################################################################################################################################################################**#################***************************************************************************************************************###########***++==================================================================================
*************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****#####*********#########################################################################################******+++++++++*********+++++++++++++++*********************++++++++++++++++++++++++++#%%%%%%@@@@@@@@@%%%%#+:::.......::::::-----------------------------------------------------:::::::::::::-----------------------------------------------------------------------------------------------------------------:::::.................::::-----------------------------------------------------+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%+++=--=+++*+++===++*****++=-::........:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::...............................................:::::::::::::::::::::::::::::::::::.............................................................................................:::::::::::::::::::.................::::=#######:...::*###########%++%######################%%###################%%#########################%%%##**++++++++++++++++++++++++++++++++********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#*###%#%%######%%%*+++++++++++++=================================================------------=*##%%##%%%%%%%%%%#+-::::::::::::::::::::::::::::............... :**************#*****+=========----------------------------------::::::::::::::::::::::. ..:...::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.. ....:::::::::::::::::..... ............................................ ..........................................:......................................................::::-----------------------------------------------------------------------============================================================================================================-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::::::::::::::::::::::::::::::::::::---==++++++==---:::::::::--==+**********+==--:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::....................................::--====--::..........................::-------:::...............::::::......................:::--:::.......................................................................................................................................:::::::::::::::::::.........:::::----:::::........................................................................::::--------::::::::::::::::::::::::::::::::::----------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::----------------------------------------------------::::::::::::----------------------======+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===++++++++++++======================================================================================================================================================================================+++*****************************************************************************************#######################################################################################################################################################################################################################################################################################################################***************************************************************************************************************############**++==================================================================================
*************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****######********########################################################################################*******+++++++++*********++++++++++++++*******************+++++++++++++++++++++++++++++#%%%%%%@@@@@@@@@%%%%#*:::.......::::::-----------------------------------------------------::::::::::::------------------------------------------------------------------------------------------------------------------::::..................::::------------------------------------------------------#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@#+++=-=+++++++===++*****++=-::.......:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::..............................................::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::...................................................................::::::::::::::::::::.................::::=#######:...::*###########%++%######################%%###################%%########################%%%%##**++++++++++++++++++++++++++++************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#*####%#%%######%%%*+++++++++++++=================================================-----------=####%%%%%%%%%%%%%%#*-::::::::::::::::::::::::::::............... -**************#*****+==========----------------------------------:::::::::::::::::::::.. ..::..::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::. ....:::::::::::::::::..... ........................................... ........................................:......................................................::::----------------------------------------------------------------------=============================================================================================================-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::::::::::::::::::::::::::::::::::::---==++++++==---:::::::::--==++*********+==--:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::....................................::--====--::..........................:::-------:::..............::::::......................::::::::.......................................................................................................................................:::::::::::::::::::.........:::::::::::::.........................................................................::::--------::::::::::::::::::::::::::::::::::---------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---------::::::::---------------------------------------------------------:::::::::::---------------------=======++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=========================================================================================================================================================================================+++*************************************************************************************#########################################################################################################################################################################################################################################################################################################################*************************************************************************************************************#############**++==================================================================================
*************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****########*****#########################################################################################*******+++++++++*********++++++++++++++*****************+++++++++++++++++++++++++++++++*#%%%%%@@@@@@@@@%%%%#*:::.......::::::----------------------------------------------------:::::::::::::------------------------------------------------------------------------------------------------------------------::::.................:::::------------------------------------------------------=%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%*++=-=+++++++===++*****++=-::......::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::..............................................::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.................................................::::::::::::::::::::................:::::=#######:...:-#############=+%######################%%###################%%########################%%%%#**++++++++++++++++++++++++++++*************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#*#%####%%######%%%*+++++++++++++=================================================----------+####%#%%%%%%%%%%%%%%#+::::::::::::::::::::::::::::............... =**************#******==========----------------------------------::::::::::::::::::::::.....::..:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::. ...::::::::::::::::::.... ............................................ ........................................:.......................................................:::---------------------------------------------------------------------==============================================================================================================---------------------------------------------------------:-------------------------------------------------------------------------------------------------------------------------------------------------------------::::::::::::::::::::::::::::::::::::::--==++++++==---::::::::::--=++********++==--:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::....................................::--====--::..........................::::------:::..............:::::.......................::::::::.......................................................................................................................................::::::::::::::::::::.........:::::::::::..........................................................................::::--------::::::::::::::::::::::::::::::::::---------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::------------------------------------------------------------------------------:::::::::::--------------------======++++++++++++++++++++++++++++++========+++++++++++++===+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=++++++++++==============================================================================================================================================================================================+++*******************************************************************************##########################################################################################################################################################################################################################################################################################################################*************************************************************************************************************#############**+++=================================================================================
*************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****##########***##########################################################################################*******++++++++++********+++++++++++++***************++++++++++++++++++++++++++++++++++*#%%%%%@@@@@@@@@%%%%#*::........::::::----------------------------------------------------:::::::::::::------------------------------------------------------------------------------------------------------------------::::.................:::::------------------------------------------------------:*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%+++===++*+++===++*****++=-::.....:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::..............................................::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::...........................................::::::::::::::::::::................:::::=#######:...:=#############=+%######################%%###################%%########################%%%##**++++++++++++++++++++++++++++*************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#*#%####%#######%%%*+++++++++++++================================================----------+###%%%%%%%%%%%%%#%%%%%*-:::::::::::::::::::::::::::............... +*********************==========-----------------------------------:::::::::::::::::::::::..::::.::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::. ...::::::::::::::::::.... ........................................... ........................................:.......................................................::::--------------------------------------------------------------------==============================================================================================================---------------------------------------------------------:-------------------------------------------------------------------------------------------------------------------------------------------------------------::::::::::::::::::::::::::::::::::::::--==++++++==--:::::::::::--==+********++==-::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::....................................::--====--::...........................:::-------:::.............:::::.......................::::::::.......................................................................................................................................::::::::::::::::::::..........:::::::::...........................................................................::::--------:::::::::::::::::::::::::::::::::::--------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::------------------------------------------------------------------------------------:::::::::::--------------------=====+++++++++++++++++++++++++================++++++++++=====++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++====================================================================================================================================================================================================+++*************************************************************************###########################################################################################################################################################################################################################################################################################################################*************************************************************************************************************#############**+++=================================================================================
*************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****#######################################################################################################*******++++++++++********+++++++++++**************++++++++++++++++++++++++++++++++++++++#%%%%%@@@@@@@@@%%%%#*::........::::::-----------------------------------------------------:::::::::::------------------------------------------------------------------------------------------------------------------:::::.................:::::--------------------------------------------------------#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%+++=+++*+++==+++*****++=-::....:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.............................................::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.................................::::::::::::::::::::................:::::=#######-...:+############*-*%######################%%###################%%##%####################%%%%#**+++++++++++++++++++++++++++*************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#*%%%##########%%%#*+++++++++++++================================================---------*###%%%%%%%%%%%%%%%%%%%%#-:::::::::::::::::::::::::::.............. .**********************+==========----------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::. ...:::::::::::::::::..... ........................................ ................................................................................................::::------------------------------------------------------------------================================================================================================================-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------::::::::::::::::::::::::::::::::::::::---==++++==---:::::::::::--==++*******+==--::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::....................................::---==--:::............................:::------:::.............:::::.......................:::::::.......................................................................................................................................:::::::::::::::::::::.............:::.............................................................................:::::---------::::::::::::::::::::::::::::::::::--------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-------------------------------------------------------------------------------------------::::::::::---------------------====+++++++++++++++++++++=====================++++++++========++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++======================================================================================================================================================================================================++++*******************************************************************################################################################################################################################################################################################################################################################################################################*###########*************************************************************************************************************#############***++=================================================================================
*************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****#######################################################################################################*******++++++++++********++++++++++++******+++++++++++++++++++++++++++++++++++++++++++++#%%%%%@@@@@@@@@%%%%#*::........::::::-----------------------------------------------------:::::::::::------------------------------------------------------------------------------------------------------------------:::::.................:::::--------------------------------------------------------=@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@#++++++++++==+++*****++=-::....::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::............................................::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.........................::::::::::::::::::::................:::::-#######-...:*############*-*%######################%%###################%%%#%###################%%%%%#**+++++++++++++++++++++++++++*************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##%%%##########%%%#*+++++++++++++================================================--------*####%%%%%%%%%%%%%%%%%%%%%=-:::::::::::::::::::::::::............... .***********************==========-----------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::. ...:::::::::::::::::..... ................................... .............................................................................................::::------------------------------------------------------------------===============================================================================================================------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------::::::::::::::::::::::::::::::::::::::---==++++==---:::::::::::---==++*****++==--::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::....................................:::--==--:::.............................:::-----:::..............::::.......................:::::::.......................................................................................................................................:::::::::::::::::::::.............................................................................................:::::---------::::::::::::::::::::::::::::::::::-------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::------------------------------------------------------------------------------------------------::::::::::---------------------====++++++++++++++++===============----=======+++++++=========+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==============================================================================================================================================================================================================+++++*************************************************************############################################################################################################################################################################################################################################################################################################################*************************************************************************************************************#############***++=================================================================================
*************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****#######################################################################################################*******++++++++++*********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*%%%%%@@@@@@@@@%%%%#*::........::::::-----------------------------------------------------:::::::::::------------------------------------------------------------------------------------------------------------------:::::.................:::::---------------------------------------------------------*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@%*+++++*+++===++*****++=-::....::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::........................................::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::...................::::::::::::::::::::................:::::-#######-...-#############+-########################%%###################%%%#%###################%%%%##**+++++++++++++++++++++++++++************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#*#%%%##########%%%#*+++++++++++++================================================-------*####%%%%%%%%%%%%%%%%%%%%%%*-:::::::::::::::::::::::::............... -***********************+=========------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::. ...:::::::::::::::::..... ............................ .. .....................................................................................::::------------------------------------------------------------------===============================================================================================================------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------::::::::::::::::::::::::::::::::::::::---==++++==---::::::::::::--===+++*+++==--:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::....................................:::--=---:::.............................::::----:::..............::::.......................:::::::..................................................................................................::::.................................::::::::::::::::::::::..........................................................................................:::::::---------::::::::::::::::::::::::::::::::::-------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-------------------------------------------------------------------------------------------------------:::::::::----------------------=====++++++++++++==============-----------=====+++++==========+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++====================================================================================================================================================================================================================++++++******************************************************############################################################################################################################################################################################################################################################################################################################*************************************************************************************************************##############**++=================================================================================
*************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****#######################################################################################################*******++++++++++*********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*%%%%%@@@@@@@@@%%%%#*::........:::::------------------------------------------------------:::::::::::------------------------------------------------------------------------------------------------------------------:::::.................:::::----------------------------------------------------------%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@%*++++++++===++*****+==-::....:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.....................................::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::............:::::::::::::::::::::................:::::-#######-...=#############=-########################%%###################%%%#%##################%%%@%#**+++++++++++++++++++++++++++************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#*#%%%%######%%#%%%#*+++++++++++++===============================================------=#%##%%%%%%%%%%%%%%%%%%%%%%%%#=:::::::::::::::::::::::::............... =***********************+=========------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: ...:::::::::::::::::..... ........................ ....................................................................................::::-----------------------------------------------------------------================================================================================================================--------------::--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::::::::::::::::::::::::::::::::::::::--==+++===--::::::::::::::---==+++++===--:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.....................................::------:::..............................::::----:::.............::::........................:::::..................................................................................................:::::::..............................:::::::::::::::::::::::.........................................................................................::::::::---------::::::::::::::::::::::::::::::::::-------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::-------------------------------------------------------------------------------------------------------------::::::::-----------------------====+++++++++++===========--------:::----=====+++++==========+++++++++++++++++++++++++++++++++++++++++++++++++++++++====++++++++++++++++++++++++++++++++++++++++++++++===========================================================================================================================================================================================================================++++++***********************************************############################################################################################################################################################################################################################################################################################################################*************************************************************************************************************##############**++=================================================================================
*************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****#######################################################################################################******+++++++++++************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#%%%%%@@@@@@@%%%%%#*::.......::::::------------------------------------------------------::::::::::-------------------------------------------------------------------------------------------------------------------:::::.................::::----------------------------------------------------------:+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%*++++++====++*****+==-::....:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.................................::::::::::::::::::::::::::::::.......::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::..:::::::::::::::::::::::::.................:::::-#######-..:+############*--%#######################%%###################%%%%%##################%%%@%#**+++++++++++++++++++++++++++***********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#*#%%%%######%%%%%%#**++++++++++++===============================================-----=#%#%%%%%%%%%%%%%%%%%%%%%%%%%%#+:::::::::::::::::::::::::............... +************************==========-----------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::. ...:::::::::::::::::..... ............... .... ...................................................................................::::-----------------------------------------------------------------================================================================================================================--------------::--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::::::::::::::::::::::::::::::::::::::--===+===---:::::::::::::::---=======---::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.....................................::------::................................:::----:::.............::::........................:::::..................................................................................................:::::::..............................:::::::::::::::::::::::.....................................................................................::::::::::::--------::::::::::::::::::::::........:::::------------------::::::::::::::::::::::::::::::::::::::::::::::::::------------------------------------------------------------------------------------------------------------------::::::::------------------------====+++++++++======-----------::::::::---===================++++++++++++++++++++++++++++++++++++++++++++++++++++++======+++++++++++++++++++++++++++++++++++++++++++++++++====================================================================================================================================================================================================================+=======+=++********************************************############################################################################################################################################################################################################################################################################################################################*************************************************************************************************************##############***++================================================================================
*************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****#######################################################################################################******+++++++++++************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#%%%%%%@%%@@@%%%%%#*::.......::::::------------------------------------------------------::::::::::------------------------------------------------------------------------------------------------------------------:::::..................::::------------------------------------------------------------#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@%*++++=====++*****+==-::....::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::..............................::::::::::::::::::::::::::::.............::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::................:::::-#######-..:*############*-=%#######################%%###################%%%%%#################%%@@%#***++++++++++++++++++++++++++************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#*%%%%%%#####%%%%%%#**++++++++++++==============================================-----+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#*-::::::::::::::::::::::::............... *************************+=========------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::. ...::::::::::::::::...... ............ ..................................................................................::::-----------------------------------------------------------------================================================================================================================--------------::--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::::::::::::::::::::::::::::::::::::::--=======--::::::::::::::::-----===----:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.....................................:::----:::................................::::---:::.............::::........................:::::.................................................................................................:::::::::.............................:::::::::::::::::::::::.................................................................................:::::::::::::::::------:::::::::::::::::::............:::::------------------::::::::::::::::::::::::::::::::::::::::::::------------------------------------------------------------------------------------------------------------------------::::::::-------------------------====+++++++=====----------:::::::::::---===================++++++++++++++++++++++++++++++++++++++++++++++++++++++=======+++++++++++++++++++++++++++++++++++++++++++++++==================================================================================================================================================================================================================================++*****************************************############################################################################################################################################################################################################################################################################################################################*************************************************************************************************************##############***++================================================================================
*************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****#######################################################################################################******+++++++++++************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#%%%%%%#%%%%%%%%%#*::.......::::::------------------------------------------------------::::::::::------------------------------------------------------------------------------------------------------------------:::::.................:::::-----------------------------------------------------------:=%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%*++======++*****+=--::....::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::............................::::::::::::::::::::::::::::.....................::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::...............:::::::#######-..-#############+-+%#######################%%###################%%%%%#################%@@%%#**+++++++++++++++++++++++++++***********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##%%%%%%%####%%%%%%#**++++++++++++==============================================----*%%%#%%%%%%%%%%%%%%%%%%%%%%%%%%%#*-::::::::::::::::::::::::............... .*************************+=========------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::. ...::::::::::::::::..... ......... ................................................................................::::-----------------------------------------------------------------================================================================================================================-------------::::-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::::::::::::::::::::::::::::::::::::::--======---::::::::::::::::::---------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.....................................:::----:::.................................:::----:::............:::.........................:::::.................................................................................................:::::::::..............................:::::::::::::::::::::::............................................................................:::::::::::::::::::::::::::::::::::::::::.................:::::------------------::::::::::::::::--------::::::::::::::::-----------------------------------------------------------------------------------------------------------------------------:::::::--------------------------====++++++====--------::::::::...:::--====================+++++++++++++++++++++++++++++++++++++++++++++++++++++========+++++++++++++++++++++++++++++++=++++++++++++++================================================================================================================================================================================================================================++==++****************************************############################################################################################################################################################################################################################################################################################################################*************************************************************************************************************###############**++================================================================================
*************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****#######################################################################################################******++++++++++++**********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#%%%%%#*%%%%%%%%%#*::.......::::::------------------------------------------------------::::::::::------------------------------------------------------------------------------------------------------------------:::::.................:::::-------------------------------------------------------------*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@%#++=======+*****+=--::....::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::..........................:::::::::::::::::::::::::::...........................:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::...............:::::::#######-..-#############=:*%#######################%%###################%%%%%################%%@%%#***+++++++++++++++++++++++++++**********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##%%%%%%%####%%%%%%#**++++++++++++==============================================---#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###=::::::::::::::::::::::::............... :**************************+========-------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::. ...::::::::::::::::..... ...... .................................................................................:::-----------------------------------------------------------------========================================================================================------==================-------------::::-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::::::::::::::::::::::::::::::::::::::---=====---:::::::::::::::::::------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.....................................:::----:::.................................:::----:::............:::.........................::::..................................................................................................::::::::::.............................:::::::::::::::::::::::........................................................................:::::::::::::::::::::::::::::::::::::::::.....................:::::------------------::::::::::::::-----------::::::::::::--------------------------------------------------------------------------------------------------------------------------------:::::::---------------------------===++++++===-----:::::::::::....:::--====================+++++++++++++++++++++++++++++++++++++++++++++++++++++=========++++++++++++++++++++++++++++++==+++++++++++===========++++++++++===================================================================================================================================================================================================================++**************************************############################################################################################################################################################################################################################################################################################################################*************************************************************************************************************###############**++================================================================================
*************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****########################################################################################################******++++++++++++*********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*%%%%%*+#%%%%%%%%#+:........::::::-------------------------------------------------------:::::::--------------------------------------------------------------------------------------------------------------------:::::.................:::::--------------------------------------------------------------%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@%#+==-=-==++***++=-::....::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-::::::::::::::::::........................:::::::::::::::::::::::::::..............................::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::....::::::::*######-..+#############=:#%#######################%####################%%%%#################%@@@%#**++++++++++++++++++++++++++++***#******+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#*#%%%%#%#####%#%%%%#**++++++++++++=============================================---#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###+::::::::::::::::::::::::............... =**************************+=========------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-:. ...:::::::::::::::...... .................................................................................:::-----------------------------------------------------------------======================================================================================----======================-------------::::----------------------------------------------------------------------------------::----------------------:--------------------------------------------------------------------------------------------:::::::::::::::::::::::::::::::::::::::---=====--::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.....................................:::---:::..................................::::---:::............:::..........................::..................................................................................................:::::--::::............................::::::::::::::::::::::::.....................................................................:::::::::::::::::::::::::::::::::::::::..........................:::::------------------::::::::::::------===------:::::-------------------------------------------------------------------------------------------------------------------------------------::::::----------------------------===++++++===----::::::::::::....:::--=====================++++++++++++++++++++++++++++++++++++++++++++++++++++===--====+++++++++++++++++++++++++++++++==+++++++=======+++++++++++++++++++==================================================================================================================================================================================================================++***************************************##########################################################################################################################################################################################################################################################################################################################*************************************************************************************************************###############**++================================================================================
*************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****#########################################################################################################*****++++++++++++********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#%%%#*+#%%%%%%%%#+:........::::::--------------------------------------------------------::::::--------------------------------------------------------------------------------------------------------------------:::::.................::::---------------------------------------------------------------+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%*==---==++***++=-::....::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---------:::::::::::::::.......................:::::::::::::::::::::::::::................................::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::*######-.:*############*--#%#######################%####################%%%%################%@%%%#***++++++++++++++++++++++++++++**********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#*#%%%%%%%####%#%%%%#***+++++++++++==============================================-#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##**::::::::::::::::::::::::............... +***************************=========------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::. ...:::::::::::::::...... ..............................................................................:::-----------------------------------------------------------------====================================================================================---=========================-------------:::-----------------------------------------------------------------------------------:--------------------------------------------------------------------------------------------------------------------:::::::::::::::::::::::::::::::::::::::---====---::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::....................:::::............::::--:::..................................::::---:::............:::..............................................................................................................................::::----::::...........................::::::::::::::::::::::::..................................................................::::::::::::::::::::::::::::::::::::::::............................:::::------------------::::::::::::-----=====-----------------------------------------------------------------------------------------------------------------------------------------------::::::----------------------------===++++++===---::::::::::::.....:::--=====================++++++++++++++++++++++++++++++++++++++++++++++++++++===---===+++++++++++++++++++++++++++++++++==+++=====++++++++++++++++++++++++++===============================================================================================================================================================================================================++***************************************##########################################################################################################################################################################################################################################################################################################################*************************************************************************************************************###############**+++===============================================================================
*************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****#########################################################################################################*****++++++++++++********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*%%%*++#%%%%%%%##+:........::::::--------------------------------------------------------:::::---------------------------------------------------------------------------------------------------------------------::::..................::::----------------------------------------------------------------#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@%*=----=++**++==-::....:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-------------::::::::::::::.....................::::::::::::::::::::::::::...................................::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::*######-.:#############+--%%#######################%####################%%%%################%@@%%***++++++++++++++++++++++++++++**#*******+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#%###%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#*##%##%%%%#####%%%%#***+++++++++++=============================================-*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####-:::::::::::::::::::::::............... ****************************+========-------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.::::::::::::::: ...:::::::::::::::...... ...........................................................................:::-----------------------------------------------------------------===================================================================================---==========================-------------:::--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------::::::::::::::::::::::::::::::::::::::::--====---:::::::::::::::::::::::::::::::-------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::...................::::::::..........:::::::::..................................::::----::............:::..............................................................................................................................:::-----::::...........................::::::::::::::::::::::::..............................................................::::::::::::::::::::::::::::::::::::::::::..............................::::-------------------:::::::::::----=======------------------------------------------------------------------------------------------------------------------------------------------------:::::----------------------::----===++++++===---::::::::::::.....:::--====================++++++++++++++++++++++++++++++++++++++++++++++++++++===----===+++++++++++++++++++++++++++++++++++==++++++++++++++++++++++++++++++++++==============================================================================================================================================================================================================++**************************************###########################################################################################################################################################################################################################################################################################################################************************************************************************************************************###############**+++===============================================================================
*************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****#########################################################################################################*****++++++++++++*******++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#%#*+*#%%%%%%%##+:........:::::----------------------------------------------------------:::---------------------------------------------------------------------------------------------------------------------:::::..................::::----------------------------------------------------------------=@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%+----==+++++=--::....:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-----------------::::::::::::...................::::::::::::::::::::::::::.....................................::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::*######-.-#############+:=%########################%###################%%%%%###############%@%@%#***++++++++++++++++++++++++++++*#*******++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#%########%%%%%####%%%%#***+++++++++++============================================-+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####+:::::::::::::::::::::::............ . .****************************+========--------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::. .-:::::::::::-:. ...:::::::::::::::...... .....................................................................:::----------------------------------------------:------------------================================================================================================================------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------::::::::::::::::::::::::::::::::::::::::--===----:::::::::::::::::::::::::::::----------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::..................::::::::::.........:::::::::...................................:::----:::...........:::..............................................................................................................................:::------:::...........................:::::::::::::::::::::::::..........................................................:::::::::::::::::::::::::::::::::::........................................::::--------------------:::::::::-----=======------------------------------------------------------------------------------------------------------------------------------------------------::::----------------------::::----===+++++===--:::::::::::::.....::---======++++++++=====+++++++++++++++++++++++++++++++++++++++++++++++++++++===-----==+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==========================================================================================================================================================================================================+==+**************************************############################################################################################################################################################################################################################################################################################################################***********************************************************************************************************###############***++===============================================================================
*************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****##################################################################################################*######*****++++++++++++******++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++##*++*#%%%%%%%##+:.......::::::----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::::..................::::-----------------------------------------------------------------#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@%#=---==++++==-::.....:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--------------------:::::::::::::::.............:::::::::::::::::::::::::........................................::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::*#%####=:+#############=:+%%######################%%###################%%%%%##############%@@%@#****++++++++++++++++++++++++++++*#******++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#########%%%%%%%%%%%%%%%%%%%%%%%%%%%%#%#*######%%%%%####%%%%#***+++++++++++=============================================#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####*:::::::::::::::::::::::............ -*****************************+=======--------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::. .:::::::-::::::. ...::::::::::::::....... ....................................................................:::--------------------------------------------:::::----------------===============================================================================================================------------------------------------------------------------:------------------------------------------------------------------------------------------------------------------------------------------------------------::::::::::::::::::::::::::::::::::::::::--===---:::::::::::::::::::::::::::::------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::..................:::::::::::........:::::::::...................................:::----:::...........::::.............................................................................................................................:::------:::...........................:::::::::::::::::::::::::........................................................::::::::::::::::::::::::::::::::............................................:::::---------------------::::::-------=======-------------------------------------------------------------------------------------------------------------------------------------------------:::----------------------::::----===+++++===--:::::::::::::.....::--======++++++++++===++++++++++++++++++++++++++++++++++++++++++++++++++++++===-----==+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=========================================================================================================================================================================================================++*************************************#############################################################################################################################################################################################################################################################################################################################*#*******************************************************************************************************#################**++===============================================================================
*************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****##################################################################################################*#####******++++++++++++******++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#*++*%%%%%%%%##+:.......::::::----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::::.................:::::-----------------------------------------------------------------=@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@*----==++===-::.....:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::----------------------:::::::::::::::...........:::::::::::::::::::::::::.........................................:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::*#%####=:*############*=:#%%######################%%###################%%%%%##############%@@@%#***++++++++++++++++++++++++++++*#******+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##########%%%%%%%%%%#%%%%%%%%%%%%%%%%#%#*######%%%%%#####%%%#***+++++++++++===========================================-#%#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####::::::::::::::::::::::............. =*****************************+========--------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::. .:::::::::::::::. ...::::::::::::::....... ...................................................................:::-------------------------------------------:::::::----------------==============================================================================================================------------:---------------------------------------------:-:------------------------------------------------------------------------------------------------------------------------------------------------------------:::::::::::::::::::::::::::::::::::::::---===---::::::::::::::::::::::::::::----======----:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::..................::::----::::.......::::::::....................................:::----:::...........::::.............................................................................................................................::-------:::............................::::::::::::::::::::::::.....................................................:::::::::::::::::::::::::::::.................................................::::::----------------------------------======---------------------------------------------------------------------------------------------------------------------------------------------------------------------------::::----===+++++===--:::::::::::::....:::--====+=+++++++++++=+++++++++++++++++++++++++++++++++++++++++++++++++++++++==------===+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*++++========================================================================================================================================================================================================+*************************************#################################################################################################################################################################################################################################################################################################################################*****************************************************************************************************#################**+++==============================================================================
************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****########################################################################################################******++++++++++++******+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#+++*%%%%%%%%##+:.......::::::----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::::.................:::::------------------------------------------------------------------#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@%+----=====--::.....:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-----------------------::::::::::::::::.........:::::::::::::::::::::::::..........................................::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::*#%####+:*############*-:#%#######################%%###################%%%%%#############%@@%%#****++++++++++++++++++++++++++++*******++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#############%%%%%%####%%%%%%%%%%%%####*#######%%%%%####%%%#***+++++++++++===========================================+%%%#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####=:::::::::::::::::::::............. +******************************========---------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: :::::::::-:::-:. ...::::::::::::::...... .................................................................:::-------------------------------------------:::::::----------------==============================================================================================================------------:---------------------------------------------:-::-----------------------------------------------------------------------------------------------------------------------------------------------------------:::::::::::::::::::::::::::::::::::::::---==----:::::::::::::::::::::::::::----=========---::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::..................::::-----:::.......::::::::....................................:::----:::...........::::............................................................................................................................:::-------:::............................::::::::::::::::::::::::...................................................:::::::::::::::::::::::::::....................................................::::::------------------------------------=-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------::::----===+++++===--:::::::::::::....::---====+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==------===+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=====================================================================================================================================================================================================+*************************************##################################################################################################################################################################################################################################################################################################################################****************************************************************************************************#################**+++==============================================================================
************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****########################################################################################################******++++++++++++******+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*+++*%%%%%%%%##+:.......::::::----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::::.................:::::------------------------------------------------------------------=%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@%@@@%=---====--:::.....::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-:--::::::::::::::::::::::::::::---------------------------::::::::::::::........::::::::::::::::::::::::............................................:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::----::*#%####+-#############+:-%%#######################%%###################%%%%%#############%@@@%*****+++++++++++++++++++++++++++*#******+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###%###########%%%%########%%%%%%%%############%%%%%%###%%%##**+++++++++++===========================================%%#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####*:::::::::::::::::::::............. .*******************************+=======---------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: .::::::::::-:::. ...::::::::::::::...... .................................................................:::-------------------------------------------:::::::----------------==============================================================================================================------------:---------------------------------------------:-::--:----------------------------------------------::-----------::-------------------------------------------------------------------------------------------:::::::::::::::::::::::::::::::::::::::---==---::::::::::::::::::::::::::::---==========---::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::..................:::-------:::......::::::::....................................:::-----::...........::::............................................................................................................................:::-------:::............................::::::::::::::::::::::::................................................:::::::::::::::::::::::::.......................................................::::::::--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------::::----===+++++===---:::::::::::::..:::--=====+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==------===++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==================================================================================================================================================================================================+*************************************###################################################################################################################################################################################################################################################################################################################################*******************#*******************************************************************************#################**+++==============================================================================
************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****#####################################################################################################**#******++++++++++++*****++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#%%%%%%%##+:.......:::::-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::::.................:::::-------------------------------------------------------------------*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%---------::......::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-----:::::::::::::::::::::::::-----------------------------::::::::::::::......::::::::::::::::::::::::............................................:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-----:*#%####+=#############+:=%%#######################%%##################%%%%%%############%@%@%#****++++++++++++++++++++++++++++*******++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##############################%%###%#*########%%##%%###%%%##**+++++++++++==============*%*+========================#%%%%#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######:::::::::::::::::::::........... :********************************=======----------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: .:::::::::::::-:. ..::::::::::::::....... ...............................................................:::-------------------------------------------::::::::---------------==========================-----==--===========================================================================-------------:::-------------------------------------------::::----------------------------------------------------------------------------------------------------------------------------------------------------------:::::::::::::::::::::::::::::::::::::::---==---::::::::::::::::::::::::::::---====++=====---:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::..................::::------:::......::::::::....................................:::-----:::..........::::............................................................................................................................:::---=---:::............................::::::::::::::::::::::::...............................................::::::::::::::::::::.........................................................:::::::::::--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------::::::---===+++++===---:::::::::::::..:::--====++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==------===++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++================================================================================================================================================================================================+************************************#####################################################################################################################################################################################################################################################################################################################################**************************************************************************************************#################***++==============================================================================
************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****#####################################################################################################*********++++++++++++*****++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*%%%%%%%%##+:.......:::::----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------::::::.................::::--------------------------------------------------------------------=%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@#-------::.......:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---::::::::::::::::::::::::::::-------------------------------::::::::::::......::::::::::::::::::::::::...........................................::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-----:*#%####++############*=.+%%#######################%%##################%%%%%############%%%%@#*****+++++++++++++++++++++++++++********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##############################%%#####*########%%%%%%%##%%%##**+++++++++++==============#%%#*=====================-*%%#%#%#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######:::::::::::::::::::::........... -********************************========---------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: .::::::-:::-::-:. ..::::::::::::::....... ...............................................................:::-------------------------------------------::::::::----------------===========================---=---===========================================================================-------------:::-------------------------------------------::::----------------------------------------------------------------------------------------------------------------------------------------------------------:::::::::::::::::::::::::::::::::::::::---==---:::::::::::::::::::::::::::---====+++++===---:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::..................::::------:::......::::::::....................................:::-----:::..........::::............................................................................................................................:::---=---:::.............................::::::::::::::::::::::::...............................................::::::::::::::..........................................................:::::::::::::::--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------::::::---===+++++===---:::::::::::::.::::--====++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==--::---==+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=============================================================================================================================================================================================+*************************************####################################################################################################################################################################################################################################################################################################################################**************************************************************************************************##################**++==============================================================================
************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****#####################################################################################################*********++++++++++++*****++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*%%%%%%%%##+:.......:::::----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::::.................:::::--------------------------------------------------------------------:*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@+:----:::.......:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---::::::::::::::::::::::::::::-----------------------------------::::::::......::::::::::::::::::::::::...........................................::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::------*#%####*#############*-.#%########################%%##################%%%%%############%@%@%#****++++++++++++++++++++++++++++*******++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####################################*########%%%%#%%##%%%##**+++++++++++==============%%%%%+=====================%%##%#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######-::::::::::::::::::::........... =********************************+=======----------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::----------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: ::::::::::-::::. ...::::::::::::::....... ..............................................................:::-------------------------------------------:::::::::---------------===========================--------==========================================================================------------:::::-----------------------------------------:::::----------------------------------------------------------------------------------------------------------------------------------------------------------::::::::::::::::::::::::::::::::::::::----==---:::::::::::::::::::::::::::---===++++++===---:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::..................::::------:::......::::::::....................................:::-----:::..........::::............................................................................................................................:::---=---:::.............................::::::::::::::::::::::::.....................:::::::::::::.................................................................................:::::::::::::::::---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::::::---===+++++===---:::::::::::::.:::--====+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==--:::--==++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==========================================================================================================================================================================================+*************************************#####################################################################################################################################################################################################################################################################################################################################*************************************************************************************************##################**++==============================================================================
************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****#####################################################################################################*********++++++++++++*****++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*%%%%%%%%##+:.......:::::----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::::.................:::::----------------------------------------------------------------------%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%@%=:--::::.......::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-:::::::::::::::::::::::::::::-------------------------------------:::::::.....:::::::::::::::::::::::............................................:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-----*%%####*#############+-.%%########################%###################%%%%%###########%@@@%#****+++++++++++++++++++++++++++++******+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####################################*########%%%%#%%%##%%##**+++++++++++==============%%%%%#+===================#%####%#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######-::::::::::::::::::::........... +*********************************=======----------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::. .::::::-::-::-::. ...::::::::::::::....... .............................................................::::--------------------------------------------::::::::---------------===========================--------==========================================================================------------:::::----------------------------------------::::::----------------------------------------------------------------------------------------------------------------------------------------------------------::::::::::::::::::::::::::::::::::::::----==---:::::::::::::::::::::::::::---===+++++++===---::::::::::::::::::::::::::::::::::::::::::::::::::::::::::...................:::------:::......::::::::....................................:::------:::.........::::............................................................................................................................:::---=---:::.............................:::::::::::::::::::::::::...........:::::::::::::::::::::::::::::::::.....................................................................::::::::::::::::----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------::::::::---===+++++===---:::::::::::::::::--====+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==--:::--==++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++========================================================================================================================================================================================+*************************************######################################################################################################################################################################################################################################################################################################################################************************************************************************************************##################**+++=============================================================================
************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****#####################################################################################################*********++++++++++++*****++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*%%%%%%%%##=:.......:::::----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::::.................:::::----------------------------------------------------------------------*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@#-:::::........::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--------------------------------------::::::.....:::::::::::::::::::::::...........................................::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-----*%%##################+::%%########################%###################%%%%%##########%%@%@%*****++++++++++++++++++++++++++++******+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####################################*#########%%%%%%%%##%%##**++++++++++==============*#%%%%%#==================+%%%##%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######-::::::::::::::::::::........... .**********************************+======-=---------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::. .::::::::::::-::. ...::::::::::::::....... .............................................................::::--------------------------------------------:::::::::--------------===========================---------========================================================================-----------:-::::::--------------------------------------::::::::---------------------------------------------------------------------------------------------------------------------------------------------------------::::::::::::::::::::::::::::::::::::::---===--::::::::::::::::::::::::::::---===+++++++===---::::::::::::::::::::::::::::::::::::::::::::::::::::::::::...................:::------:::......:::::::.....................................:::------:::.........::::............................................................................................................................:::---==--:::.............................::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::..................................................................::::::::::::::::-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::::::::---===+++++===---:::::::::::::::::--====++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===--:::--==+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++====================================================================================================================================================================================+**************************************######################################################################################################################################################################################################################################################################################################################################************************************************************************************************##################**+++=============================================================================
************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****#####################################################################################################*********++++++++++++*****++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*%%%%%%%%##=:.......:::::----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------::::..................:::::-----------------------------------------------------------------------%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%@*:::::........::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---------------------------------------::::::....:::::::::::::::::::::::..........................................::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::----*%%#################*+.-%########################%%###################%%%%%##########%@@@%#*****++++++++++++++++++++++++++++*****++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###################################*########%%%%%%%%%%##%##**++++++++++=============+###%%%%%+=================%%#%#%%#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######=::::::::::::::::::::........... :**********************************+======-=----------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::. .::-::--::-::::::. ...::::::::::::::...... .............................................................::::---------------------------------------------:::::::::--------------===========================---------=======================================================================-----------:::::::::-------------------------------------:::::::::--------------------------------------------------------------------------------------------------------------------------------------------------------::::::::::::::::::::::::::::::::::::::---===--::::::::::::::::::::::::::::---===+++++++===---::::::::::::::::::::::::::::::::::::::::::::::::::::::::::...................:::------:::.......::::::.....................................:::------::::........::::............................................................................................................................:::---==--:::.............................::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.................................................................:::::::::::::::------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------::::::::::---===+++++===---:::::::::::::::::-====+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==---:::--==++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=================================================================================================================================================================================+**************************************######################################################################################################################################################################################################################################################################################################################################************************************************************************************************##################***++=============================================================================
************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****#####################################################################################################*********++++++++++++*****++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*%%%%%%%%#*=:.......:::::----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------::::..................:::::-----------------------------------------------------------------------*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@%%%@%=::::........::::::::::::::::::::::::::::::----:::::::::::::::::::::::::::::::::::::::::::::::::::::::----------------------------------------::::::....:::::::::::::::::::::::..........................................::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::----*%%#################*=.+%########################%%###################%%%%%#########%@@%%#*****++++++++++++++++++++++++++++*****++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###################################*########%%%%%%%%%%#####**++++++++++=============####%%%%%#================#%#%#%%#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######*::::::::::::::::::::.......... =*********************+*************=======-----------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-----------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::. :::::::-::::::-:. ...:::::::::::::::...... .............................................................::::----------------------------------------------::::::::--------------===========================---------======================================================================------------:::::::::-------------------------------------:::::::::--------------------------------------------------------------------------------------------------------------------------------------------------------:::::::::::::::::::::::::::::::::::::---====--::::::::::::::::::::::::::::---===+++++++====--::::::::::::::::::::::::::::::::::::::::::::::::::::::::::...................:::-----:::........::::::.....................................:::--==---:::........::::..............................:..............................................................................................::---==--:::............................:::::::::::::-::::::::::::::::::::::::::::::::::::::::::::::::::::::::::...............................................................::::::::::::---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::::::::::---===+++++===---::::::::::::::::--====+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==---:::--===+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==============================================================================================================================================================================+***************************************######################################################################################################################################################################################################################################################################################################################################***********************************************************************************************###################***++=============================================================================
************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****#####################################################################################################*********++++++++++++*****++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#%%%%%%%#*=:......::::::---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::::..................::::-------------------------------------------------------------------------%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#%%@%-:::........::::::::::::::::::::::::::::-------::::::::::::::::::::::::::::::::::::::::::::::::::::::----------------------------------------::::::....:::::::::::::::::::::::.........................................:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::----*%%#################+-.#%########################%%###################%%%%%########%%@%%%#****+++++++++++++++++++++++++++++****+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###################################*########%%%%%%%%%%#####**++++++++++============*%####%%%%%+==============*%%##%%#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######::::::::::::::::::::.......... +*********************+*************+=======----------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::. .:::-::::::::::::...:::::::::::::::...... ..............................................................::::----------------------------------------------::::::::--------------============================--------======================================================================-----------::::::::::-------------------------------------:::::::::--------------------------------------------------------------------------------------------------------------------------------------------------------:::::::::::::::::::::::::::::::::::::---====--:::::::::::::------:::::::::---===++++++++===--::::::::::::::::::::::::::::::::::::::::::::::::::::::::::...................:::-----:::........::::::.....................................:::--==---:::........::::.............................::..............................................................................................::---==--:::............................:::::::::::::--::::::::::::::::::::::::::::::::::::::::::::::::::::::::::..............................................................::::::::::----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------::::::::::::---===+++++===---::::::::::::::::--====+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==--:::::-===++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==========================================================================================================================================================================++***************************************######################################################################################################################################################################################################################################################################################################################################***********************************************************************************************###################***++=============================================================================
************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****##################################################################################################*#**********++++++++++++*****++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#%%%%%%%#*=:......::::::---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::::..................::::------------------------------------------------------------------------:*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%@#:::........:::::::::::::::::::::::::::---------:::::::::::::::::::::::::::::::::::::::::::::::::::::----------------------------------------::::::....:::::::::::::::::::::::........................................::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::----*%%#################+:.#%########################%%###################%%%%%########%@%%%#*****++++++++++++++++++++++++++++***++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#################################**########%%%%%%%%%%%####**++++++++++===========*%#####%%%%%#=============+%##%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######::::::::::::::::::::.......... .**********************+**************=======-----------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: :::::::::::::::::.:::::::::::::::...... . .............................................................::::----------------------------------------------:::::::::--------------===========================---------================================-====================================-----------:::::::::------------------:--------------::::::::::::-::------------------:-------------------:----------------------------------------------------------------------------------------------------------------::::::::::::::::::::::::::::::::::::---=====--:::::::::::----------::::::----==+++++++++===--::::::::::::::::::::::::::::::::::::::::::::::::::::::::::...................:::-----:::........:::::......................................:::--===--::::.......::::.............................:::.............................................................................................::---==--:::...........................:::::::::::--------::::::::::::::::::::::::::::::::::::::::::::::::::::::::............................................................:::::::::-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::::::::::::---===+++++===---:::::::::::::::---====+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==--:::::--==+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++======================================================================================================================================================================++****************************************######################################################################################################################################################################################################################################################################################################################################***********************************************************************************************####################**++=============================================================================
************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****##################################################################################################*#**********++++++++++++*****++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#%%%%%%##*=:......::::::---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::::..................::::--------------------------------------------------------------------------%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%@@+::........::::::::::::::::::::::::::----------:::::::::::::::::::::::::::::::::::::::::::::::::::::----------------------------------------::::::.....::::::::::::::::::::::........................................::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::----*%%#################=.:%#########################%%###################%%%%%#######%@@%%#*****++++++++++++++++++++++++++++****++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#################################*########%%%%%%%%%%%%####**++++++++++==========+########%%%%%*=======-====#%#%#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######-:::::::::::::::::::.......... .**********************++*************+=======-----------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: .::::::-::::-:::::::::::::::::::...... . ............................................................:::::-----------------------------------------------::::::::--------------===========================---------================================-====================================-----------:::::::::------------------:---------------:::::::::::-::------------------:-------------------:::--------------------------------------------------------------------------------------------------------------::::::::::::::::::::::::::::::::::::---=====--::::::::::-------------::::---===+++++++++===--::::::::::::::::::::::::::::::::::::::::::::::::::::::::::...................:::-----:::........:::::......................................:::--====--:::.......::::.............................:::.............................................................................................::---==--:::...........................:::::::::::--------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.........................................................::::::::------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------::::::::::::::---===+++++===---:::::::::::::::--====++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==--:::::--==+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*+++===================================================================================================================================================================++*****************************************######################################################################################################################################################################################################################################################################################################################################***********************************************************************************************####################**++=============================================================================
************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****##################################################################################################*#*********+++++++++++++*****++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#%%%%%%##*-:......::::::--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------::::::.................:::::-------------------------------------------------------------------------:*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@%=:........:::::::::::::::::::::::::-----------::::::::::::::::::::::::::::::::::::::::::::::::::::::---------------------------------------::::::.....::::::::::::::::::::::.......................................:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::----*%%################*=.=%#########################%%##################%%%%%########%@%%%#*****++++++++++++++++++++++++++++****+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###########################%########*########%%%%%%%%%%%%####*+++++++++++==========#%########%%%%#==========-*%#%#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######-:::::::::::::::::::.......... -**********************++*************+=======-----------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::----------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: ..:-::::::::::::::::::::::::::...... . ..........................................................::::::-----------------------------------------------:::::::---------------============================--------==============================--====================================------------::::::::::----------------::----------------:::::::::::::------------------:-------------------:::::-----------------------::::::::-----------------------------------------------------------------------------::::::::::::::::::::::::::::::::::::--======--:::::::::----======-----------===+++++++++===--::::::::::::::::::::::::::::::::::::::::::::::::::::::::::...................:::-----:::.........:::.......................................:::--====--:::.......::::.............................:::.............................................................................................::--===--:::.......................::::::::::::::---------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::........................................................:::::::------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::::::::::::::---===+++++===---:::::::::::::::--====+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===--:::::--==+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**++++==============================================================================================================================================================+*******************************************#######################################################################################################################################################################################################################################################################################################################################**********************************************************************************************####################**+++============================================================================
************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****##############################################################################################*****#*********+++++++++++++****+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#%%%%%%##*-.......:::::---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::::..................:::::--------------------------------------------------------------------------=%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@%-:.......:::::::::::::::::::::::::---====----::::::::::::::::::::::::::::::::::::::::::::::::::::::--------------------------------------:::::::.....::::::::::::::::::::::.......................................::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---#%%################*- *%#########################%###################%%%%%#######%@%%%#*****++++++++++++++++++++++++++++****++++++++++++++++++++++++++++++++++**++++++++++++++++++++++++++++++++++#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%############################%########*########%%%%%%%%%%%%####*+++++++++++=========*%#########%%%%%*========-+%#%##%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######+:::::::::::::::::::.......... =***********************+**************========-----------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::. .:-:-::::::::::::::::::::::....... .. .........................................................::::::-------------------------------------------------:::::-----------------===========================---------=============================-===================================-=------------::::::::::-------------::::::---------------:::::::::::::------------------::-----------------::::::::---------------------::::::::-----------------------------------------------------------------------------::::::::::::::::::::::::::::::::::::--======--::::::::----========---------====+++++++++===---:::::::::::::::::::::::::::::::::::::::::::::::::::::::::...................:::----::::...................................................:::--=====-:::........::.............................:::::............................................................................................::--===--:::....................:::::::::::::::::----------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.....................................................::::::::------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::::::::::::::::---==+++++===---:::::::::::::::--====+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==--::::::--==+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*++++**++++========================================================================================================================================================++*********************************************########################################################################################################################################################################################################################################################################################################################################*********************************************************************************************####################***++============================================================================
************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****########################################################################################*********************+++++++++++++****+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#%%%%%%##*-.......:::::---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::::..................:::::---------------------------------------------------------------------------*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%*:.......::::::::::::::::::::::::---======---::::::::::::::::::::::::::::::::::::::::::::::::::::::--------------------------------------:::::::.....::::::::::::::::::::::......................................:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---#%%################+- #%#########################%###################%%%%%######%@@%%#******+++++++++++++++++++++++++++****++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###################################%#*#######%%%%%%%%%%%%%%###*+++++++++++========+############%%%%%+======-=#%%%%##%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######*:::::::::::::::::::.......... =***********************=+*************+=======-----------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::. .:-:::::::::::::::::::::::....... .. ........................................................:::::::-----------------------------------------------------------------------============================--------=============================-===================================--------------::::::::::-------------:::::::------------:::::::::::::::-------------------------------------:::::::::--------------------::::::::-----------------------------------------------------------------------------:::::::::::::::::::::::::::::::::::--=======--::::::::---============----======+++++++++===---:::::::::::::::::::::::::::::::::::::::::::::::::::::::::....................:::---:::....................................................:::--=====--::........::.............................:::::............................................................................................::--===--:::.............::::::::::::::::::::::::----------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::...................................................::::::::------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------::::::::::::::::::---==+++++===---::::::::::::::--=====++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===--::::::--==+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**++++====================================================================================================================================================+***********************************************########################################################################################################################################################################################################################################################################################################################################*********************************************************************************************####################***++============================================================================
***********************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****######################################################################################***********************+++++++++++++****+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#%%%%%%##+::......:::::-----------------------------------------------------------------------------------------::--------------------------------------------------------------------------------------:::::..................::::----------------------------------------------------------------------------=@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%+......:::::::::::::::::::::::::---======----::::::::::::::::::::::::::::::::::::::::::::::::::::::------------------------------------::::::::.....::::::::::::::::::::::......................................::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--#%%################+..%%########################%%###################%%%%%######%@%%%#*****++++++++++++++++++++++++++++***+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######################################*#######%%%%%%%%%%%%%%%###*+++++++++++=======+#%############%%%%*=====-=#%#%#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########::::::::::::::::::........... +***********************++**************========-----------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::. :::-::::::::::::::::::::....... . .......................................................:::::::::-----------------------------------------------------------------------============================---------===========================-====================================-----------:--::::::::::------------:::::::::---------:::::::::::::::::-----------------:-------------------::::::::::-------------------::::::::-----------------------------------------------------------------------------:::::::::::::::::::::::::::::::::::--===++==---::::::---======================++++++++++===---:::::::::::::::::::::::::::::::::::::::::::::::::::::::::....................:::::::::....................................................:::--=====--:::........:.............................::::::..........................................................................................:::--===---:::........::::::::::::::::::::::::::::-----------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::...............................................:::::::::------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::::::::::::::::::---==+++++===---::::::::::::::--====++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===--:::::::--==+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***+++================================================================================================================================================++************************************************#########################################################################################################################################################################################################################################################################################################################################********************************************************************************************#####################**++============================================================================
***********************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****####################################################################################*************************+++++++++++++***++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#%%%%%%##+:.......:::::----------------------------------------------------------------------------------------::::-------------------------------------------------------------------------------------:::::..................::::-----------------------------------------------------------------------------*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%-.....:::::::::::::::::::::::::--=======----:::::::::::::::::::::::::::::::::::::::::::::::::::::::-----------------------------------::::::::.....:::::::::::::::::::::......................................:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--#%%################=.-%#########################%%###################%%%%%#####%@%%%#*****++++++++++++++++++++++++++++***++++++++++++++++++++++++++++++++***++++++++++++++++++++++++++++++++++++*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####################################%##*######%%%%%%%%%%%%%%%%###**++++++++++=======*%#############%%%%%+=====*%%%%%#%#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########-:::::::::::::::::........... .+***********************+=**************+=======------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-----------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::. :-:::::::::::::::::::::....... . .......................................................::::::::-------------------------------------------------------------------------============================--------==========================--====================================-----------::-::::::::::------------::::::::::-------::::::::::::::::::-----------------:------------------:::::::::::-------------------::::::::-----------------------------------------------------------------------------::::::::::::::::::::::::::::::::::--===+++===--::::::---====+++++============+++++++++++===---:::::::::::::::::::::::::::::::::::::::::::::::::::::::::....................:::::::::....................................................:::--=====--:::........:.............................::::::..........:::.............................................................................::--=====--::::::::::::::::::::::::::::::::::::::--------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::........................................::::::::::::::------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------::::::::::::::::::::---==+++++===---::::::::::::::--====+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==---::::::::--==+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*++++*++*+++++**++++==========================================================================================++*****+++++++++++==============================++**************************************************#########################################################################################################################################################################################################################################################################################################################################********************************************************************************************#####################**++============================================================================
***********************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****##################################################################################**************************+++++++++++++***+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#%%%%%%#*=:......::::::----------------------------------------------------------------------------------------::::-------------------------------------------------------------------------------------:::::..................::::-----------------------------------------------------------------------------=@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@%%:....:::::::::::::::::::::::::--===++===---:::::::::::::::::::::::::::::::::::::::::::::::::::::::-----------------------------------::::::::.....:::::::::::::::::::::......................................:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--#%%###############*- =%#########################%%###################%%%%%####%%%%%#******+++++++++++++++++++++++++++****+++++++++++++++++++++++++++++******++++++++++++++++++++++++++++++++++++#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####################################%##*####%#%%%%%%%%%%%%%%%%###**++++++++++======+%%#############%%%%%#====*%%%#%#%#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########-:::::::::::::::::........... .************************+=**************+=======------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: :::::::::::::::::::::........ . ......................................................:::::::::-------------------------------------------------------------------------============================--------==========================-=====================================-----------::-::::::::::------------::::::::::::::--::::::::::::::::::::----------------:------------------:::::::::::-------------------::::::::-----------------------------------------------------------------------------:::::::::::::::::::::::::::::::::---==++++===--::::::--====++++++++=========++++++++++++===---:::::::::::::::::::::::::::::::::::::::::::::::::::::::::....................:::::::::....................................................:::--=====--:::......................................::::::..........::::............................................................................::--=====---:::::::::::::::::::::::::::::::::::::--------------:::::::::::::::::::::::::::::::::::::::::::-----:::::::::::::::.................................:::::::::::::::::-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------::::::::::::::::::::---==++++++===--:::::::::::::--=====++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==---:::::::::--==++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*+++++======================================================================================+************************+++++++===============++***************************************************##########################################################################################################################################################################################################################################################################################################################################********************************************************************************************#####################**++============================================================================
***********************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****#################################################################################**************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#%%%%%%#*-:......::::::---------------------------------------------------------------------------------------::::--------------------------------------------------------------------------------------::::..................:::::------------------------------------------------------------------------------*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#:...:::::::::::::::::::::::::--==++++==---:::::::::::::::::::::::::::::::::::::::::::::::::::::::::---------------------------------::::::::.....:::::::::::::::::::::......................................::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::=%%%###############*: *%#########################%###################%%%%%%####%@%%%#*****++++++++++++++++++++++++++++**++++++++++++++++++++++++++++*****+++++++++++++++++++++++++++++++++++++++*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######################################%#%#*##%##%%%%%%%%%%%##%%%%####*++++++++++======#%%%#############%%%%%*===%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#########=:::::::::::::::::........... .************************+=+**************+=======-----------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: .:::::::::::::::::::........ .. ........................................................:::::::::-------------------------------------------------------------------------============================---------========================-=====================================------------:::::::::::::-------------:::::::::::::::::::::::::::::::::::-----------------------------------:::::::::::-----------------::::::::::::::::::---------------------------------------------------------------------:::::::::::::::::::::::::::::::::--===+++++==--:::::---====+++++++++++==++++++++++++++++===---:::::::::::::::::::::::::::::::::::::::::::::::::::::::::.....................:::::::......................................................::--==+===--::......................................:::::::........:::::............................................................................::--======---::::::::::::::::::::::::::::::::::----------------:::::::::::::::::::::::::::::::::::---------------:::::::::::::::::::::::::..............::::::::::::::::::::::----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::::::::::::::::::---==++++++===---::::::::::::--====++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==---::::::::::--==+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===================================================================================+***************************************++++++*******************************************************###########################################################################################################################################################################################################################################################################################################################################******************************************************************************************#####################**+++===========================================================================
***********************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****##############################################################################*****************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#%%%%%##*-:......::::::--------------------------------------------------------------------------------------:::::--------------------------------------------------------------------------------------::::..................:::::------------------------------------------------------------------------------=@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%+..::.:::::::::::::::::::::::--==++++==----::::::::::::::::::::::::::::::::::::::::::::::::::::::::---------------------------------:::::::::....:::::::::::::::::::::......................................::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::+%%%###############+..#%########################%%###################%%%%%####%%%%%#******+++++++++++++++++++++++++++***+++++++++++++++++++++++++********+++++++++++++++++++++++++++++++++++++++#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##################################################%%%%%%%%%%%##%%%%####*++++++++++=====*%%%%#############%%%%%%+=#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#########*:::::::::::::::::........... .************************+=+**************+========------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::-: .::::::::::::::::::........ .. .......................................................::::::::::-------------------------------------------------------------------------=============================--------========================-=====================================-----------::::::::::::::-------------:::::::::::::::::::::::::::::::::::----------------------------------::::::::::::----------------:::::::::::::::::::---------------------------------------------------------------------::::::::::::::::::::::::::::::::---==++++++==---::::---===++++++++++++++++++++++++++++++===---:::::::::::::::::::::::::::::::::::::::::::::::::::::::::.....................:::::::......................................................::--==+===--::......................................:::::::........:::::...........................................................................:::--===+===---::::::::::::::::::::::::::::::::-----------------:::::::::::::::::::::::::::::::---------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::::::::::::::::::---==++++++===---::::::::::::--====+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==---:::::...:::--==+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**++++==============================================================================+*****************************************************************************************************#############################################################################################################################################################################################################################################################################################################################################****************************************************************************************#####################**+++===========================================================================
***********************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****############################################################################*******************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*%%%%%##*-:......::::::--------------------------------------------------------------------------------------::::::-------------------------------------------------------------------------------------::::..................:::::-------------------------------------------------------------------------------#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%=..:::::::::::::::::::::::::--==++++==----::::::::::::::::::::::::::::::::::::::::::::::::::::::::---------------------------------:::::::::::::::::::::::::::::::::......................................::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-+%%%###############= -%%########################%%###################%%%%%###%%@%%#******+++++++++++++++++++++++++++****++++++++++++++++++++++++*********+++++++++++++++++++++++++++++++++++++++#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###########################################*####%%%%%%%%%%%%%###%%%%###*++++++++++====+%%%#%#############%%%%%%##%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##########:::::::::::::::::.......... :************************+==***************========-------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::. .::::::::::::::::::....... .. ........................................................::::::::::--------------------------------------------------------------------------============================--------======================---=====================================-----------::::::::::::::-------------:::::::::::::::::::::::::::::::::::----------------------------------::::::::::::----------------:::::::::::::::::::---------------------------------------------------------------------::::::::::::::::::::::::::::::::--===+++++++==--:::----===++++++++++++++++++++++++++++++===---:::::::::::::::::::::::::::::::::::::::::::::::::::::::::......................:::::.......................................................::--==+===--::......................................:::::::.......::::::.........................................................................::::--===+++===---:::::::::::::::::::::::::::::::-----------------:::::::::::::::::::::::::::--------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::::::::::::::::::---==++++++===---:::::::::::---===+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===--::::.....::::-===++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****+++++=========================================================================+*****************************************************************************************************###############################################################################################################################################################################################################################################################################################################################################**************************************************************************************######################***++===========================================================================
***********************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****###########################################################################********************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*%%%%%##+::......::::::-------------------------------------------------------------------------------------:::::::------------------------------------------------------------------------------------:::::..................:::::-------------------------------------------------------------------------------=@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@%-..::::::::::::::::::::::::--==++++==----:::::::::::::::::::::::::::::::::::::::::::::::::::::::::-::----------------------------::::::::::::::::::::::::::::::::::......................................::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-*%%%###############- =%%########################%%###################%%%%%##%%%%%%#******++++++++++++++++++++++++++****++++++++++++++++++++++++**********++++++++++++++++++++++++++++++++++++++*#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######################################%####*####%%%%%%%%%%%%%###%%%%####++++++++++====#%%%%##############%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##########:::::::::::::::::.......... :************************+==+**************+========------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::. .::::::::::::::::::...... .. .........................................................:::::::::::--------------------------------------------------------------------------============================----------====================--=====================================------------::::::::::::::-------------:::::::::::::::::::::::::::::::::::---------------------------------:::::::::::::---------------::::::::::::::::::::---------------------------------------------------------------------::::::::::::::::::::::::::::::::--==++++++++==---::---====++++++++++++++++++++++++++++++===---:::::::::::::::::::::::::::::::::::::::::::::::::::::::::.......................::.........................................................::--==+===--::........:.............................:::::::.......::::::.......................................................................::::::--===++++===---::::::::::::::::::::::::::::::------------------::::::::::::::::::::::::------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------::::::::::::::::::---==++++++===---:::::::::::--====+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==--::::......::::--==+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****+++++=====================================================================+*****************************************************************************************************################################################################################################################################################################################################################################################################################################################################################**************************************************************************************#######################**++===========================================================================
***********************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****########################################################################**********************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#%%%%##+::......::::::------------------------------------------------------------------------------------::::::::------------------------------------------------------------------------------------:::::..................::::---------------------------------------------------------------------------------#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@#::::::::::::::::::::::::::--===+++==----:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-------------------------:::::::::::::::::::::::::::::::::::.......................................::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-#%%%##############*: *%#########################%%###################%%%%%##%%%%%#******++++++++++++++++++++++++++*****++++++++++++++++++++++***********+++++++++++++++++++++++++++++++++++++++*#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%############################################*####%%%%%%%%%%%%%####%%%####*+++++++++===*%%%%%##############%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##########-::::::::::::::::.......... -*************************==+**************+=======------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::. ..::::::::::::::::::.... . ........................:::::::::::::.....................:::::::::::--------------------------------------------------------------------------============================-----------==========================================================------------::::::::::::::-------------:::::::::::::::::::::::::::::::::::-------------------------------:-:::::::::::::---------------::::::::::::::::::::---------------------------------------------------------------------:::::::::::::::::::::::::::::::--===++++++++===-------===+++++++++++++++++++++++++++++++===---:::::::::::::::::::::::::::::::::::::::::::::::::::::::::..................................................................................::--==++==--::........:.............................:::::::.......:::::::...................................................................:::::::::--==+++++++==---::::::::::::::::::::::::::::--------------------:::::::::::::::::::----------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::::::::::::::::---==++++++===---::::::::::---====++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==--::::.......::::--==++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********++++++++************++++=================================================================+******************************************************************************************************########*###############################################################################################################################################################################################################################################################################################################################################################**************************************************************#######################**+++==========================================================================
**********************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******###########################################################**********************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#%%%##*=:.......::::::------------------------------------------------------------------------------------::::::::------------------------------------------------------------------------------------:::::..................::::---------------------------------------------------------------------------------=@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@%@*:::::::::::::::::::::::::---==++===----::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::------------------------::::::::::::::::::::::::::::::::::........................................::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-#%%%##############+..#%########################%%####################%%%%%%#%@@%#******++++++++++++++++++++++++++*******++++++++++++++++++++***********++++++++++++++++++++++++++++++++++++++++*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#############################################*####%%%%%%%%%%%%%####%%%####*+++++++++==+%%%%%%%%%%%%%%%%####%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##########-::::::::::::::::.......... =*************************===***************+=======------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::: ..::::::::::::::::::::. . . ........................:::::::::::::::....................:::::::::::---------------------------------------------------------------------------============================-----------========================================================-------------::::::::::::::--------------:::::::::::::::::::::::::::::::::::------------------------------:::::::::::::::--------------:::::::::::::::::::::---------------------------------------------------------------------:::::::::::::::::::::::::::::::--==++++++++++==-------===+++++++++++++++++++++++++++++++====--::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.................................................................................::--==++==--::......................................::::::::......:::::::.................................................................::::::::::---==+++++++==---:::::::::::::::::::::::::::----------------------:::::::::::::::--------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::::::::::::::::---==++++++===---::::::::::--====+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==--:::.........:::--==++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********************************++*******++++===========================================================+*******************************************************************************************************##########################################################################################################################################################################################################################################################################################################################################################################************************************************************#######################**+++==========================================================================
**********************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******#####################################################****************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#%%%##*-:.......:::::----------------------------------------------------------------------=====---------:::::::::-----------------------------------------------------------------------------------::::::..................::::--------------------------------------------------------------------------------:-*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@+::::::::::::::::::::::::---=======----:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::----------------------::::::::::::::::::::::::::::::::.........................................::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-#%%%##############= :#%########################%%####################%%%%%%%%@%%#******+++++++++++++++++++++++++*******+++++++++++++++++++*************++++++++++++++++++++++++++++++++++++++++*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##################################################%%%%%%%%%%%%%####%%%####*+++++++++==*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###########-::::::::::::::::.......... .+*************************+==+**************+=======------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::----------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::: ...::::::::::::::::::::::. . .........................:::::::::::::::::..................::::::::::::---------------------------------------------------------------------------============================------------================-======================================-------------::::::::::::::---------------::::::::::::::::::::::::::::::::::------------------------------:::::::::::::::--------------:::::::::::::::::::::---------------------------------------------------------------------::::::::::::::::::::::::::::::--===++++++++++===-----====+++++++++++++++++++++++++++++++====--::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.................................................................................::--==++==--:::.....................................::::::::.....::::::::.............................................................::::::::::::::---==++++++++==---::::::::::::::::::::::::::-----------------------:::::::::::------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::::::::::::::::---==+++++++===--::::::::::--====+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==--:::.........:::--==+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******************************+**********++********+++++====================================================++********************************************************************************************************#############################################################################################################################################################################################################################################################################################################################################################################***************************************++++**************#######################***++==========================================================================
**********************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******####################################################*****************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++##%%##*::......::::::---------------------------------------------------------------------========-------:::::::::-----------------------------------------------------------------------------------:::::...................::::-----------------------------------------------------------------------------------%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%+:::::::::::::::::::::::---======-----::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-----------------:::::::::::::::::::::::::::::::..........................................::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-#%%%##############- =%%########################%%####################%%%%%%%@@%#******++++++++++++++++++++++++++*******++++++++++++++++++*************++++++++++++++++++++++++++++++++++++++++*#@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###############################%#############*#####%%%%%%%%%%%%%#####%%#####+++++++++++%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###########=::::::::::::::::.......... :**************************+==+***************========-----------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-----------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::. ...:::::::::::::::::::::::. . ........................:::::::::::::::::::.................::::::::::::---------------------------------------------------------------------------============================------------===============--======================================-------------::::::::::::::---------------::::::::::::::::::::::::::::::::::------------------------------:::::::::::::::---------::--::::::::::::::::::::::---------------------------------------------------------------------:::::::::::::::::::::::::::::---==++++++++++++===----====+++++++++++++++++++++++++++++++====--::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.................................................................................::--==++==--:::.....................................::::::::.....::::::::...........................................................::::::::::::::::---==++++++++===--::::::::::::::::::::::::::-----------------------::::::::----------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::::::::::::::::---==+++++++===--::::::::::--===+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==--:::..........:::--==++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***********************************++*********************+++++=============================================++**********************************************************************************************************################################################################################################################################################################################################################################################################################################################################################################################***********************************++++++************########################***++==========================================================================
**********************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******####################################################******************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#####+::......::::::--------------------------------------------------------------------==========------::::::::------------------------------------------------------------------------------------:::::..................:::::-----------------------------------------------------------------------------------+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%=:::::::::::::::::::::::---=====-----::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--------::::::::::::::::::::::::::::::...........................................:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::=%%%##############*:.*%#########################%%###################%%%%%%%%@%#******++++++++++++++++++++++++++*********+++++++++++++++*************++++++++++++++++++++++++++++++++++++++++**#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##########################################%###*####%%%%%%%%%%%%%######%%%####+++++++++=#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##%%%###########+::::::::::::::::.......... . -**************************+===***************+=======------------------------------------------:::-::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::------------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::-: ...::::::::::::::::::::::::: . ............................:::::::::::::::::.................::::::::::::---------------::-----------------------------------------------------------============================----------------------=-=--======================================-=------------::::::::::::::----------------::::::::::----:::::::::::::::::::------------------------------::::::::::::::------------::::::::::::::::::::::::::-------------------------------------------------------------------:::::::::::::::::::::::::::::---==+++++++++++++==---=====++++++++++++++++++++++++++++++++===--::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.................................................................................::--==++==--:::.....................................:::::::::....::::::::......................................................:::::::::::::::::::::--===+++++++++==---:::::::::::::::::::::::::------------------------------------------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------::::::::::::::::---===++++++===---::::::::--====+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==--:::..........:::--===++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******************+************************************************+++++===================================+++*****************************************************************************************************************############################################################################################################################################################################################################################################################################################################################################################################**********************************+++++++************########################***++==========================================================================
**********************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********###############################################**********************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#####=::......::::::-------------------------------------------------------------------============-----::::::::------------------------------------------------------------------------------------:::::..................:::::--------------------------------------------------------------------------------:---#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@%-::::::::::::::::::::::---=====-----::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--------::::::::::::::::::::::::::::.............................................:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::+%%%##############*..*%#########################%%###################%%%%%%%@%%#*****++++++++++++++++++++++++++*********+++++++++++++++*************+++++++++++++++++++++++++++++++++++++++++***%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##############################################*####%%%%%%%%%%%%%######%%%####*+++++++++%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######%##%%%###########+::::::::::::::::......... . =**************************+===+**************+======--------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::------------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::. ...::::::::::::::::::::::::-:. . ...........................::::::::::::::::::.................::::::::::::---------------::-----------------------------------------------------------============================-----------------------==--======================================-=------------:::::::::::::------------------:::::--------:::::::::::::::::::---------------------------:--::::::::::::::------------:::::::::::::::::::::::::::------------------------------------------------------------------:::::::::::::::::::::::::::::--==++++++++++++++=========+++++++++++++++++++++++++++++++++===--::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.................................................................................::--==++==--:::.....................................:::::::::....::::::::....................................................::::::::::::::::::::::---===+++++++++==---:::::::::::::::::::::::::-------------------------------------------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------::::::::::::::::---===++++++===---::::::::--====+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==--:::..........::::--==+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********++++++++++++++++++****************************************************************************++++++++==================+++++**********************************************************************************************************************###########################################################################################################################################################################################################################################################################################################################################################################*********************************+++++++*************#########################**++==========================================================================
**********************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********############################################**********************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++####*-::......::::::------------------------------------------------------------------=============-----:::::::-------------------------------------------------------------------------------------:::::..................:::::----------------------------------------------------------------------------------:-=@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#-:::::::::::::::::::::----===------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.................................................:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::*%%%##############+.:#%#########################%%####################%%%%%%@%#******++++++++++++++++++++++++***********++++++++++++++*************++++++++++++++++++++++++++++++++++++++++++*+#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###################################################%%%%%%%%%%%%########%%####*++++++++#@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#########################*::::::::::::::::.......... .. .+**************************+===+***************+=====-=------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-------------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::-:::...::::::::::::::::::::::::::--: . ............................:::::::::::::::::::................::::::::::::---------------::-----------------------------------------------------------============================-----------------------=--=======================================-------------::::::::::::::--------------------------------::::::::::::::::::--------------------------::::::::::::::::::--------::--:::::::::::::::::::::::::::------------------------------------------------------------------::::::::::::::::::::::::::::---==+++++++++++++++========+++++++++++++++++++++++++++++++++===---:::::::::::::::::::::::::::::::::::::::::::::::::::::::::.................................................................................::--==++==--:::.....................................:::::::::.....:::::::.................................................:::::::::::::::::::::::::---===+++++**+++==---::::::::::::::::::::::::-------------------------------------------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------::::::::::::::::---===++++++===---::::::::--===++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==--:::...........:::--==+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++************************+++**********************************************************************************************************************************************************************************************************************************###########################################################################################################################################################################################################################################################################################################################################################################*********************************+++++++*************#########################**+++=========================================================================
**********************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**************###################################**************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++####*-::......::::::-----------------------------------------------------------------===============----::::::--------------------------------------------------------------------------------------:::::..................:::::------------------------------------------------------------------------------------:*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#-::::::::::::::::::::-------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.................................................:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::#%%%##############=.=%%########################%%#####################%%%%%@%#******+++++++++++++++++++++++++*#*********+++++++++++++************++++++++++++++++++++++++++++++++++++++++++++++%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###########################################%#*####%%%%%%%%%%%%#########%%%####+++++++*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##########################*::::::::::::::::........ .. :***************************+====***************+=====-=-------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-------------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::..::::::::::::::::::::::::-:::-:. .. ...............................:::::::::::::::::.................::::::::::::---------------::------------------------------------------------------------============================----------------------=--======================================-=------------::::::::::::::----------------------------------:::::::::::::::::-----------------------::::::::::::::::::::-------:::::::::::::::::::::::::::::::::-----------------------------------------------------------------::::::::::::::::::::::::::::--===++++++++++++++++=======+++++++++++++++++++++++++++++++++===---:::::::::::::::::::::::::::::::::::::::::::::::::::::::::.................................................................................::--==++===--::.....................................:::::::::.....:::::::...............................................:::::::::::::::::::::::::::---===++++****++==---::::::::::::::::::::::::--------------------------------------------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------::::::::::::::::---===+++++++===--:::::::--====++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==--:::...........:::--==+++++++++++++++++++++++++++++++++++++++++++++++++++++**********************************+*************************************************************************************************************************************************************************************************************************************##########################################################################################################################################################################################################################################################################################################################################################################*********************************+++++++************##########################**+++=========================================================================
**********************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******************#########*****######************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*###+:::......::::::----------------------------------------------------------------================----::::::--------------------------------------------------------------------------------------:::::..................:::::--------------------------------------------------------------------------------------#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@*:::::::::::::::::::::-----------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::................................................:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-#%%%##############-.+%%########################%%#####################%%%%%%%#******+++++++++++++++++++++++*************+++++++++++************+++++++++++++++++++++++++++++++++++++++++++++++*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###########################################%#*###%%%%%%%%%%%%###########%%####+++++++%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%############################-::::::::::::::........ :+*+: .-***************************+====+***************=======--------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-------------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-:::::--:::. .. ................................::::::::::::::..................:::::::::::::---------------::------------------------------------------------------------============================------------------------======================================--=------------::::::::::::::----------------------------------:::::::::::::::::-----------------------::::::::::::::::::::-------:::::::::::::::::::::::::::::::::-----------------------------------------------------------------::::::::::::::::::::::::::::--==+++++++++++++++++======++++++++++++++++++++++++++++++++++===---:::::::::::::::::::::::::::::::::::::::::::::::::::::::::.................................................................................::--==++===--::.....................................:::::::::.....::::::..............................................:::::::::::::::::::::::::::::---==+++++****+++==---::::::::::::::::::::::::-------------------------------------------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------::::::::::::::::---===+++++++===--:::::::--====++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==--:::...........:::--==+++++++++++++++++++++++++++++++++++++++++++++++++******************************************************************************************************************************************************************************************************************************************************************************########################################################################################################################################################################################################################################################################################################################################################################*********************************++++++*************##########################**+++=========================================================================
*********************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++###=:::......:::::-----------------------------------------------------------------================----:::::---------------------------------------------------------------------------------------:::::.................:::::-----------------------------------------------------------------------------------:---=@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@%@@@@@*::::::::::::::::::::----------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::...............................................:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-#%%##############*:.*%%########################%%#####################%%%%%%#******+++++++++++++++++++++++**##**********+++++++++************+++++++++++++++++++++++++++++++++++++++++++++++++#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#########################################%#%#*###%%%%%%%%%##%###########%%####*+++++#%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%############################*-::::::::::::::........-****= .=***************************+====+***************+=======-------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-------------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::-:::::::::::::::::::::-::::::::::----: . ....................................::::::::::...................:::::::::::::---------------::------------------------------------------------------------============================------------------------======================================---------------::::::::::::::-----------------------------------::::::::::::::::----------------------:::::::::::::::::::::-------:::::::::::::::::::::::::::::::::-----------------------------------------------------------------::::::::::::::::::::::::::::--==+++++++++++++++++++====++++++++++++++++++++++++++++++++++===---:::::::::::::::::::::::::::::::::::::::::::::::::::::::::.................................................................................::--==+++==--::.....................................::::::::::.....:::::............................................:::::::::::::::::::::::::::::::---==+++++*****++==---::::::::::::::::::::::::--------------------------------------------------------------------------------::::::::::::::::::::::::::::::::::::::::::::-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::::::::::::::---===+++++++===--:::::::--====++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==--:::...........:::--==+++++++++++++++++++++++++++++++++++++++++++++++*********************************************************************************************************************************************************************************************************************************************************************************#######################################################################################################################################################################################################################################################################################################################################################################*********************************++++++************###########################***++=========================================================================
*********************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++##*=::.......:::::----------------------------------------------------------------=================----:::::-----====------------------------------------------------------------------------------::::..................:::::----------------------------------------------------------------------------------:----:*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@%@@@%#::::::::::::::::::::---------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::..............................................:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::=%%%##############+.:#%%########################%#####################%%%%%%#******+++++++++++++++++++++++**###*********++++++++************+++++++++++++++++++++++++++++++++++++++++++++++++++%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#########################################%#######%%%%%%%%###############%%#####++++*@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#############################=::::::::::::::::.....-*****= :=****************************=====****************=======--------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-------------------------------------------------::::::::::::::::::::::::::::::::::::::::::::-:::::::::::::::::....:::::--::-::::-:-:. . .......................................::::......................:::::::::::::---------------::------------------------------------------------------------============================-----------------------======================================----------------:::::::::::::::----------------------------------::::::::::::::::---------------------:::::::::::::::::::::-------:::::::::::::::::::::::::::::::::::----------------------------------------------------------------:::::::::::::::::::::::::::--===+++++++++++++++++++++++++++++++++++++++++++++++++++++++++===---:::::::::::::::::::::::::::::::::::::::::::::::::::::::::.................................................................................::--==+++==--:::.............:::::..................::::::::::.......:............................................::::::::::::::::::::::::::::::::----==+++++******++=---::::::::::::::::::::::::--------------------------------------------------------------------------------::::::::::::::::::::::::::::::::::::::::::::-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::::::::::::::---===++++++++==--::::::--====+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==--:::...........:::--==+++++++++++++++++++++++++++++++++++++++++++++++**********************************************************************************************************************************************************************************************************************************************************************************#######################################################################################################################################################################################################################################################################################################################################################################********************************++++++************###########################***++=========================================================================
********************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****+++++++++++++++++++++++++++++++++++++++++++++++++****+++++++++++++++++++++++++++++++++++++++++++++++++************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#*-::.......:::::----------------------------------------------------------------=================----:::::----======-----------------------------------------------------------------------------::::..................:::::--------------------------------------------------------------------------------:--------%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@*:::::::::::::::::::---------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::..............................................:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::=%%%##############+.=#%########################%%#####################%%%%%##****+*++++++++++++++++++++++**###*#********++++++************++++++++++++++++++++++++++++++++++++++++++++++++++++*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#########################################%#######%%%%%%%%################%%###%*+++%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#############################=::::::::::::::::...:+***++++ .:+****************************=====+***************+=======-------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-------------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::... ..:-::::--:---:-:--:. . ..................................................................:::::::::::::---------------::-------------------------------------------------------------============================----------------------======================================----------------:::::::::::::::----------------------------------::::::::::::::::--------------------:::-::::::::::::::::::-------:::::::::::::::::::::::::::::::::::----------------------------------------------------------------:::::::::::::::::::::::::::--==++++++++++++++++++++++++++++++++++++++++++++++++++++++++++====--:::::::::::::::::::::::::::::::::::::::::::::::::::::::::.................................................................................::--==+++==--:::...........:::::::..................::::::::::..................................................::::::::::::::::::::::::::::::::::----==+++++******++==---::::::::::::::::::::::::------------------------------------------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::::::::::::::---===++++++++==---:::::--====+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==--:::............::--==+++++++++++++++++++++++++++++++++++++++++++++++*******************************************************************************************************************************************************************************************************************************************************#**************************#######################################################################################################################################################################################################################################################################################################################################################################********************************+++++************############################***++=========================================================================
********************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#+-::.......:::::----------------------------------------------------------------==================----:::-----=======----------------------------------------------------------------------------::::..................::::-----------------------------------------------------------------------------------------:=@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@*:::::::::::::::::::-------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.............................................:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::+%%%##############=.+%%########################%######################%%%%%#******++++++++++++++++++++++**#####********+++++***********+++++++++++++++++++++++++++++++++++++++++++++++++++++++#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########################################%###%%#%%%%%%%%################%%####%*+*%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%################################+:::::::---:::::::.-+***++=++ .-*****************************=====+***************+=======--------------------------------------------:-::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::------------:::::::-------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::... .::-:--:---::::----:. . ..................................................................:::::::::::::-----------:---::-------------------------------------------------------------============================---------------------======================================-----------------:::::::::::::::-----------------------------------::::::::::::::::-------------------:::::::::::::::::::::---------::::::::::::::::::::::::::::::::::----------------------------------------------------------------::::::::::::::::::::::::::---==++++++++++++++++++++++++++++++++++++++++++++++++++++++++++====--::::::::::::::::::::::::::::::::::::::::::::::::::::::::::................................................................................::--==+++===--:::.......::::::::::..................::::::::::...............................................:::::::::::::::::::::::::::::::::::::----==+++++*******+==--:::::::::::::::::::::::::------------------------------------------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------::::::::::::::---===++++++++===--::::---===++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==--:::............:::-==+++++++++++++++++++++++++++++++++++++++++++++****************************************************************************************************************************************************************************************************************************************************************************************#################################################################################################################################################################################################################################################################################################################################*################################***********************************+*************#############################***++=========================================================================
*******************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****+++++++++++++++++++++++++++++====+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===+++++++++++++++*******************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#+-::.......:::::---------------------------------------------------------------===================----:::----========----------------------------------------------------------------------------::::.................:::::-------------------------------------------------------------------------------------------*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@*:::::::::::::::::::-----:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.............................................::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-*%%%##############-:*%%########################%######################%%%%##*****++++++++++++++++++++++*#######*******++++***********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##########################################*####%%%%%%##################%%%###%#+*%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%################################*-:::::------:::::=****+++=++ .-*****************************=====+****************=======--------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-----:::::::::::::-------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::... .:-:--::------:::-::. . ...................................................................:::::::::::::---------------::-------------------------------------------------------------============================---------------------======================================-----------------:::::::::::::::-----------------------------------::::::::::::::::-------------------:::::::::::::::::::::---------::::::::::::::::::::::::::::::::::----------------------------------------------------------------::::::::::::::::::::::::::---==++++++++++++++++++++++++++++++++++++++++++++++++++++++++++====--::::::::::::::::::::::::::::::::::::::::::::::::::::::::::................................................................................::--===++===---:::......:::::::::::.................::::::::::.............................................:::::::::::::::::::::::::::::::::::::::----==+++++*******++=---:::::::::::::::::::::::-------------------------------------------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------::::::::::::::---===++++++++===--::::--====++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==--:::............:::-==++++++++++++++++++++++++++++++++++++++++++++******************************************************************************************************************************************************************************************************************************************************************************************##################################################################################################################################################################################################################################################################################################################################################################*******************************************###################################**++=========================================================================
******************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****++++++++++++++++++++++++++++===============================================================================+++++******************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*=-::.......:::::---------------------------------------------------------------===================----:::----========----------------------------------------------------------------------------::::.................:::::------------------------------------------------------------------------------------------:-%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@+:::::::::::::::::::---::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::............................................:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-#%#%#############*:-#%%########################%#####################%%%%%#******+++++++++++++++++++++*########*******++********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#%%%%%%#######################################%##*####%%%%%###################%%%###%%*#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##################################*-::-:---------::+#****++++++ .=*****************************======+***************+======---------------------------------------:-----::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::.... ..::----::::::-::-:-:. . ....................................................................::::::::::::---------------::-------------------------------------------------------------============================--------------------=======================================-----------------:::::::::::::::-----------------------------------::::::::::::::::------------------:::::::::::::::::::::----------:::::::::::::::::::::::::::::::::::--------------------------------------------------------------:::::::::::::::::::::::::::--===++++++++++++++++++++++++++++++++++++++++++++++++++++++++++====--::::::::::::::::::::::::::::::::::::::::::::::::::::::::::................................................................................::--===++====--:::::::::::::::::::::................::::::::::...........................................:::::::::::::::::::::::::::::::::::::::-----===+++++*******++==---::::::::::::::::::::---------------------------------------------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::::::::::::---===++++++++===--:::---====++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==--:::............:::--==++++++++++++++++++++++++++++++++++++++++++********************************************************************************************************************************************************************************************************************************************************************************************#################################################################################################################################################################################################################################################################################################################################################################*******************************************###################################**+++========================================================================
++***************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****+++++++++++++++++++++++++++++++================================================================================++++*****************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*=-::.......:::::---------------------------------------------------------------===================----:::----=========---------------------------------------------------------------------------::::.................:::::--------------------------------------------------------------------------------------------+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@%=:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::............................................:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::=%%%##############*:+%%%#######################%%*####################%%%%##*****++++++++++++++++++++**########****************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#%%%%%%#######################################%######%%%%%%###################%%%###%%##%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##################################*-::-----------=*#*#***++++++ :+*****************************======+****************======---------------------------------------:------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::----------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::.... .::-:--:--::--::-:--: .. ....................................................................::::::::::::-------------------------------------------------------------------------------============================-------------------======================================------------------:::::::::::::::------------------------------------:::::::::::::::-------------------:::::::::::::::::::-----------:::::::::::::::::::::::::::::::::::--------------------------------------------------------------:::::::::::::::::::::::::::--==+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++====--::::::::::::::::::::::::::::::::::::::::::::::::::::::::::................................................................................:::-===++====----:::::::::::::::::::................:::::::::.........................................:::::::::::::::::::::::::::::::::::::::::------===+++++********+==---::::::::::::::::::-----------------------------------------------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::::::::::---===+++++++++==---::---===+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==--:::............:::--==++++++++++++++++++++++++++++++++++++++++++********************************************************************************************************************************************************************************************************************************************************************************************##################################################################################################################################################################################################################################################################################################################################################################*****************************************####################################***++========================================================================
++++************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****+++++++++++++++++++++++++++++++++================================================================================++++***************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=+=-::.......:::::---------------------------------------------------------------===================-----------=========--------------------------------------------------------------------------:::::.................:::::---------------------------------------------------------------------------------------------#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@%=:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--::::::::::---::::::::::::::::::::::::...........................................:::::::::::::::::::::::::::::::::-------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::=%#%##############+:*%%########################%%*###################%%%%%#******+++++++++++++++++++*##########***************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#%%%%%%#########################################*##%#%%%%%%###################%%%###%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####################################*-::-----====+*###****+++++++ :+*****************************=======****************+======---------------------------------------:------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::.... .:-::--::::--::-::--. .. .....................................................................::::::::::::-------------------------------------------------------------------------------============================------------------======================================-------------------:::::::::::::::------------------------------------::::::::::::::---------------------:::::::::::::::--------------::::::::::::::::::::::::::::::::::::-------------------------------------------------------------::::::::::::::::::::::::::---==+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++====--::::::::::::::::::::::::::::::::::::::::::::::::::::::::::................................................................................:::--===+======----:::::::::::::::::.................:::::::.......................................::::::::::::::::::::::::::::::::::::::::::::------===+++++********++=---::::::::::::::---------------------------------------------------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------::::::::::---===+++++++++==-------====+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==--:::............:::--==+++++++++++++++++++++++++++++++++++++++++*********************************************************************************************************************************************************************************************************************************************************************************************##################################################################################################################################################################################################################################################################################################################################################################*****************************************####################################***++========================================================================
++++++********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****++++++++++++++++++++++++******++++++++==============================================================================+++***************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=+=-:::......:::::--------------------------------------------------------------====================-----------=========--------------------------------------------------------------------------:::::.................::::----------------------------------------------------------------------------------------------=@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%-:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::------::::::-----::::::::::::::::::::::::..........................................:::::::::::::::::::::::::::::::-----------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::+%%###############=-#%%########################%%*%##################%%%%##*****++++++++++++++++++**###########************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#%%#########################################*####%%%%%%###################%%%%##%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####################################*-:----====+**##******+++=+++ .-******************************+======+***************+======-----------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::.... .:-:-::--:::-----::-. .. .....................................................................::::::::::::--------------------------------------------------------------------------------===========================-----------------=======================================------------------::::::::::::::::-------------------------------------::::::::::::------------------------::::::::-------------------:::::::::::::::::::::::::::::::::::::------------------------------------------------------------::::::::::::::::::::::::::---==+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++====--::::::::::::::::::::::::::::::::::::::::::::::::::::::::::................................................................................:::--===++=======----:::::::::::::::..................:::::.....................................::::::::::::::::::::::::::::::::::::::::::::::-------===+++++********++=---:::::::::::::---------------------------------------------------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::::::::---===+++++++++===------====++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==--::............:::--==++++++++++++++++++++++++++++++++++++++++**********************************************************************************************************************************************************************************************************************************************************************************************##################################################################################################################################################################################################################################################################################################################################################################****************************************######################################**++========================================================================
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****++++++++++++++++++++++++++*******+++++++++++===========================================================================+++**************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=+=-:::.....::::::--------------------------------------------------------------====================----------==========--------------------------------------------------------------------------:::::................:::::-----------------------------------------------------------------------------------------------*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@%@@%-:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::------------------::::::::::::::::::::::::..........................................::::::::::::::::::::::::::::::--------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::*%%###############-=%%%#######################%%#*%##################%%%%#******+++++++++++++++++**############***********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#%%##############################################%%%%%####################%%%%###%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####################################*=----==++**####****+++++++++ .=******************************+======+****************+=====----------------------------------------:------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::.. .::---:-::---::---:::: .. ....................................................................::::::::::::--------------------------------------------------------------------------------===========================-----------------======================================-------------------::::::::::::::::---------------------------------------::::::::-----------------------------:::---------------------:::::::::::::::::::::::::::::::::::::------------------------------------------------------------::::::::::::::::::::::::::--===+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++====--::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.................................................................................:::--===+++=======---:::::::::::::::........................................................::::::::::::::::::::::::::::::::::::::::::::::::--------==++++++********++==---:::::::::::----------------------------------------------------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------::::::::---===+++++++++===-----=====++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==--:::...........:::--==+++++++++++++++++++++++++++++++++++++++***********************************************************************************************************************************************************************************************************************************************************************************************###################################################################################################################################################################################################################################################################################################################################################################**************************************#######################################**++========================================================================
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****++++++++++++++++++++++++++*******+++++++++++++=========================================================================+++**************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=+=--:::....::::::--------------------------------------------------------------====================----------==========--------------------------------------------------------------------------:::::................:::::------------------------------------------------------------------------------------------------%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@%@@@@%-::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::------------------::::::::::::::::::::::::..........................................:::::::::::::::::::::::::::::------====------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-##%%#############*-*%%%#######################%%#*%#################%%%%##******++++++++++++++++**############************++++++++++++++++++++++++++++++++++++++++++++**++++++++++++++++++++*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#%%%%#%%##########################################%###%%%%%####################%%%%###%%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####################################+---=++***####******++++++++ :+******************************+=======****************+=====-----------------------------------------:-----::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--------------------------::::::::::::::::::::::::::::::::::::::::::::::::::... .:--:--:::----------:: .. .....................................................................:::::::::::--------------------------------------------------------------------------------============================----------------======================================-------------------::::::::::::::::---------------------------------------:::::::------------------------------------------------------:::::::::::::::::::::::::::::::::::::------------------------------------------------------------::::::::::::::::::::::::::--==++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++====--::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.................................................................................:::--===++++++=====---::::::::::::::.......................................................::::::::::::::::::::::::::::::::::::::::::::::::--------===++++++*********++=---::::::::::-----------------------------------------------------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------::::::::---===+++++++++====---======++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==--:::...........:::--==+++++++++++++++++++++++++++++++++++++++************************************************************************************************************************************************************************************************************************************************************************************************##################################################################################################################################################################################################################################################################################################################################################################*************************************########################################**++========================================================================
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******+++++++++++++++++++++++++++*******++++++++++++++++++====================================================================++++*************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=--:::....::::::-------------------------------------------------------------=====================----------==========--------------------------------------------------------------------------:::::................::::-------------------------------------------------------------------------------------------------+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%@@@@@@@@@@@@@@@@@@@@@@@@%-::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---------------------::::::::::::::::::::::.........................................::::::::::::::::::::::::::::::----=========----:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-%#%#############%+-#%%%#######################%%**#################%%%%##*****+++++++++++++++++*#################*******++++++++++++++++++++++++++++++++++++++++++++*+++++++++++++++++++++++#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#%%%#%%#########################################*#%###%%%%%####################%%%%###%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####################################*--=+***#####******+++++++++ -*******************************+=======+****************======----------------------------------------------:-::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---------::--------------::::::::::::::::::::::::::::::::::::::::::::::::... .:---::-----:--------:. .. .....................................................................::::::::::::--------------------------------------------------------------------------------===========================---------------======================================-------------------::::::::::::::::----------------------------------------:-------------------------------------------------------------:::::::::::::::::::::::::::::::::::::---------------:::::::::-----------------------------------::::::::::::::::::::::::::--==++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++====--::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.................................................................................:::---==++++++++====---:::::::::::::...................................................:::::::::::::::::::::::::::::::::::::::::::::::::::::-------===++++++*****##**++==---::::::::::----------------------------------------------------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::::::---===++++++++++============+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==--::::.........:::--==++++++++++++++++++++++++++++++++++++++*************************************************************************************************************************************************************************************************************************************************************************************************#################################################################################################################################################################################################################################################################################################################################################################*************************************#########################################**+++=======================================================================
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****++++++++++++++++++++++++++++++******+++++++++++++++++++++++===============================================================+++++***********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=--:::....:::::--------------------------------------------------------------=====================-----------========---------------------------------------------------------------------------:::::................::::--------------------------------------------------------------------------------------------------#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%@@@@@@@@@@@@@@@@@@@@@@%#-:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---------------------::::::::::::::::::::::.........................................:::::::::::::::::::::::::::::----===++++====----::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::=%%###############==#%%%#######################%%=*%################%%%###***++++++++++++++++++*###############*********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****++%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#%%%%#%%#########################################*#####%%%%%####################%%%%###%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###################################*##==+***#####*******+++++++++ .=*******************************+========****************+=====-----------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--------:::--------------::::::::::::::::::::::::::::::::::::::::::::::... .::------------------:. .. ......................................................................::::::::::::--------------------------------------------------------------------------------===========================---------------======================================-------------------::::::::::::::::------------------------------------------------------------------------------------------------------:::::::::::::::::::::::::::::::::::::----------:::::::::::::::----------------------------------::::::::::::::::::::::::::--==++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++====--::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.................................................................................:::---==+++++++++===---:::::::::::::................................................::::::::::::::::::::::::::::::::::::::::::::::::::::::::-------===++++++*****##***+==-----:::::::-----------------------------------------------------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::::::---===++++++++++============+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==--:::::........:::--==++++++++++++++++++++++++++++++++++*****************************************************************************************************************************************************************************************************************************************************************************************************#################################################################################################################################################################################################################################################################################################################################################################*************************************#########################################**+++=======================================================================
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******+++++++++++++++++++++++++++++++++*++++++++++++++++++++++++++++++++++++++++++==============================================+++++++******++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==--:::...:::::--------------------------------------------------------------=====================-----------========---------------------------------------------------------------------------:::::................::::--------------------------------------------------------------------------------------------------=@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%@@@@@@@@@@@@@%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::----------------------::::::::::::::::::::::.........................................:::::::::::::::::::::::::::::---===+++++++===----:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::+%################=*%%%%#######################%#-*%###############%%%###**+*+++++++++++++++++*################*****+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#%%%%%%%###############################################%%%%%####################%%%%###%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######################################++**#######*******+++++++++ :+*******************************+========+****************=====-----------------------------------------------:-:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--------:::-------------:::::::::::::::::::::::::::::::::::::::::::::... .:----::-------------:. . . .........................................................................::::::::::::--------------------------------------------------------------------------------===========================--------------======================================--------------------::::::::::::::::-----------------------------------------------------------------------------------------------------::::::::::::::::::::::::::::::::::::::-------::::::::::::::::::----------------------------------::::::::::::::::::::::::::--==++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++====--::::::::::::::::::::::::::::::::::::::::::::::::::::::::::..................................................................................:::--==++++++++++===---:::::::::::::............................................:::::::::::::::::::::::::::::::::::::::::::::::::::::::::-:------====+++++******###**++==------:::::-----------------------------------------------------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------::::::---===+++++++++++===========++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==--:::::.......:::--==++++++++++++++++++++++++++++++********************************************************************************************************************************************************************************************************************************************************************************************************###################################################################################################################################################################################################################################################################################################################################################################***********************************##########################################***++=======================================================================
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===============================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==--:::...:::::--------------------------------------------------------------=====================------------=====-----------------------------------------------------------------------------::::.................::::---------------------------------------------------------------------------------------------------*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%@@@@@@@@@@%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@#:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::----------------------::::::::::::::::::::::.........................................:::::::::::::::::::::::::::::---==+++***+++===----::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::*%#%##############=#%%%%######################%%#-################%%%###***+*++++++++++++++++*###############*****+++++++++++++++++++++++++++++++++++++++++++++++++++++++**###%@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##%%%#%%#########################################*######%%%%%#####################%%%###%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####################################%***########*******+++++++++ .-+*******************************+=========****************+====----------------------=--------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-------::::-------------:::::::::::::::::::::::::::::::::::::::::::... ..-::-----------------:. . ..............................................................................::::::::::::---------------------------------------------------------------------------------==========================--------------=====================================---------------------::::::::::::::::-----------------------------------------------------------------------------------------------------:::::::::::::::::::::::::::::::::::::::------::::::::::::::::::----------------------------------::::::::::::::::::::::::::--==++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++====--::::::::::::::::::::::::::::::::::::::::::::::::::::::::::..................................................................................:::--==++++++++++===---:::::::::::::..........................................:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--------===++++++******###***++==-----::::::----------------------------------------------------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------::::::---===++++++++++++===========+++++++++++++++++++++++++++++++++++++++++++++++++******+++++++++++++++++++==--:::::::....:::--==++++++++++++++++++********************************************************************************************************************************************************************************************************************************************************************************************************************###################################################################################################################################################################################################################################################################################################################################################################***********************************###########################################**++=======================================================================
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++============================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==--:::...:::::--------------------------------------------------------------=====================---------------------------------------------------------------------------------------------:::::................:::::----------------------------------------------------------------------------------------------------%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%@@@@@%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@%@@@@@*::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::----------------------::::::::::::::::::::::.........................................::::::::::::::::::::::::::::----==++******+++==----::::::::::::::::::::::::::::::::-----::::::::::::::::::::::#%##############%**%%%%#######################%%*-################%%%###***+++++++++++++++++*##############*****+++++++++++++++++++++++++++++++++++++++++++++++++++**##%%@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#%%%%#%%#########################################*######%%%%%#####################%%%%##%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######################################%##########********++++++++= :=*********************************=========+***************+====----------------------=+------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--------::::------------::::::::::::::::::::::::::::::::::::::::-::. .:--------------------::. . . . ...............................................................................::::::::::::---------------------------------------------------------------------------------===========================-------------=====================================---------------------::::::::::::::::-----------------------------------------------------------------------------------------------------::::::::::::::::::::::::::::::::::::::::---::::::::::::::::::::----------------------------------::::::::::::::::::::::::::--==++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++====--::::::::::::::::::::::::::::::::::::::::::::::::::::::::::..................................................................................::---==++++++++++===---:::::::::::::.......................................::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--------===++++++******####**+++===-----::::----------------------------------------------------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::::---===+++++++++++++==========++++++++++++++++++++++++++++++++++++++++++++++************+++++++++++++++++==--:::::::...:::--==++++++++++++++************************************************************************************************************************************************************************************************************************************************************************************************************************#####################################################################################################################################################################################################################################################################################################################################################################*********************************###########################################**++=======================================================================
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=======================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==--::::..:::::--------------------------------------------------------------=====================---------------------------------------------------------------------------------------------:::::................:::::---------------------------------------------------------------------------------------------------:+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@%@@%@+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-------------------------::::::::::::::::::::::.........................................::::::::::::::::::::::::::::----==++*******++===----::::::::::::::::::::::::::::----------:::::::::::::::::::-#%%#############%+#%%%%#######################%%+-###############%%%###*****+++++++++++++++*##############*****++++++++++++++++++++++++++++++++++++++++++++++++**#%@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#%%%%#%%#########################################*######%%%%%#####################%%%%###%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######################################%%#########*******+++++++++= .:+*********************************==========****************======---------------------+=------------------:----:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--------::::------------:::::::::::::::::::::::::::::::::::::::::.. .::--------------------:. . . . ......................................................................................::::::::::::----------------------------------------------------------------------------------==========================------------=====================================----------------------:::::::::::::::---------------------------------------------------------------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::----------------------------------::::::::::::::::::::::::::--==++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++====--::::::::::::::::::::::::::::::::::::::::::::::::::::::::::..................................................................................::--===+++++++++++===--:::::::::::::............::::....................::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---------===++++++******#####**+++===-----::::---------------------------------------------------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::-------------------------:::::---===+++++++++++++++=========+++++++++++++++++++++++++++++++++++++++++++********************+++++++++++===---:::::...:::--==++++++++++++********************************************************************************************************************************************************************************************************************************************************************************************************##****************#####################################################################################################################################################################################################################################################################################################################################################################*********************************###########################################**+++======================================================================
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==--::::.::::::-------------------------------------------------------------=====================----------------------------------------------------------------------------------------------:::::................::::------------------------------------------------------------------------------------------------------#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@%%=:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-------------------------::::::::::::::::::::::........................................:::::::::::::::::::::::::::::----==++***##***++===----::::::::::::::::::::::::::--------------::::::::::::::::=%#%##############*%%%%%#######################%%==#%#############%%%###*****++++++++++++++*#############****+++++++++++++++++++++++++++++++++++***++++++++++*#%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##%%%%%#%#########################################*######%%%%%########*#############%%%###%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%################################################********+++++++++= .:-+*********************************==========+***************+===-=---------------------=+=-----------------------:-::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--------::::------------:::::::::::::::::::::::::::::::::::::::::. .::--------------::-:--:.. .. . ... .......................................................................................::::::::::::::--------------------------------------------------------------------------------==========================-----------======================================----------------------:::::::::::::::---------------------------------------------------------------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---------------------------------::::::::::::::::::::::::::--==++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++====--::::::::::::::::::::::::::::::::::::::::::::::::::::::::::..................................................................................::--===+++++++++++===--::::::::::::::..........::::::................::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::----------===++++++******######***+++==-----::::--------------------------------------------------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::::------------------------:::::---===+++++++++++++++=========++++++++++++++++++++++++++++++++++++++++++**********************+++**+++++++===--::::...:::--==+++++++++++******************************************************************************************************************************************************************************************************************************************************************************************************#####****************######################################################################################################################################################################################################################################################################################################################################################################********************************###########################################**+++======================================================================
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==--::::.::::::-------------------------------------------------------------=====================----------------------------------------------------------------------------------------------:::::................::::------------------------------------------------------------------------------------------------------=@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@%-:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--------------------------::::::::::::::::::::::........................................:::::::::::::::::::::::::::::----==++**####***++==----:::::::::::::::::::::::::----------------:::::::::::::::+%##%#############*%%%%%#######################%#-+%#############%%%###*****++++++++++++++*#############****++++++++++++++++++++++++++++++++++++***+++++++*#%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%#%#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##%%%%%#%#########################################*#####%%%%%%########*##########%##%%%###%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%################################################********+++++++++= ::-**********************************===========****************===-=----------------------++------------------:-----:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--------::::-----------::::::::::::::::::::::::::::::::::::::::::. .:------------------:--::. .. .. ................................................................................................::::::::::::::-------------------------------------------------------------------------------==========================-----------======================================----------------------:::::::::::::::---------------------------------------------------------------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---------------------------------:::::::::::::::::::::::::---==++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===---::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.................................................................................:::--===+++++++++++===--::::::::::::::.........::::::::.............::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::----------===++++++******#######***+++==-----:::-:------------------------------------------------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::::------------------------:::::----==++++++++++++++++=========++++++++++++++++++++++++++++++++++++++++********************************++++==---:::...:::--==++++++++++****************************************************************************************************************************************************************************************************************************************************************************************************########****************######################################################################################################################################################################################################################################################################################################################################################################*******************************############################################**+++======================================================================
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==--::::.::::::-------------------------------------------------------------=====================----------------------------------------------------------------------------------------------:::::...............:::::-------------------------------------------------------------------------------------------------------#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---------------------------::::::::::::::::::::::........................................:::::::::::::::::::::::::::::----==++**######**++==----:::::::::::::::::::::::-----=======------::::::::::::::*#%################%%%%#######################%%*-+%############%%%%##******+++++++++++++*############*****++++++++++++++++++++++++++++++++++++++*++++++*%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###%%%%%%%#########################################*######%%%%%%########*##########%%##%%###%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%################################################********+++++++++= :::=**********************************+==========+***************+===-=---------------------=+=-----------------::----:-::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--------:::::----------::::::::::::::::::::::::::::::::::::::::--:. .::----------------::--::.. . .... ................................................................................................::::::::::::::::------------------------------------------------:-----------------------------===========================----------=====================================-----------------------:::::::::::::::-------------------------------------------------------------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---------------------------------:::::::::::::::::::::::::---==++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===---:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::................................................................................:::--===+++++++++++===--::::::::::::::.........:::::::::.........:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::------------==++++++++*****#########***++==----::::--------------------------------------------------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::::::-----------------------::::::---===+++++++++++++++=========++++++++++++++++++++++++++++++++++++++++*********************************++++==--::::..:::--==++++++********************************************************************************************************************************************************************************************************************************************************************************************************########**************########################################################################################################################################################################################################################################################################################################################################################################********************************###########################################***++======================================================================
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==--:::..::::::-------------------------------------------------------------=====================----------------------------------------------------------------------------------------------::::................:::::------------------------------------------------------------------------------------------------------:=%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--::----------------------------::::::::::::::::::::::........................................::::::::::::::::::::::::::::::---==++***#####***++==----:::::::::::::::::::::-----==========----::::::::::::::#%%###############%%%%%#######################%%+-*%###########%%%%###******++++++++++++*###########*****+++++++++++++++++++++++++++++++++++++++**++**#%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##%%%%%%%#########################################*######%%%%%%########*#########%%%##%%###%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##%#%%%%%%%%%%%%%%%%%%%%%%###############################################*********+++++++++- .::-+**********************************+===========***************+====-----------------------=+------------------:----:-::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--------:::::---------::::::::::::::::::::::::::::::::::::::::::-:. .::-----------:------:---:. .. .. ..........................................................................................................::::::::::::::::------------------------------------------------------------------------------==========================---------=====================================------------------------:::::::::::::::-------------------------------------------------------------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---------------------------------::::::::::::::::::::::::::--==+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++====--::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::................................................................................:::--==++++++++++++===--::::::::::::::........:::----::::.......:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-------------==++++++++*****##########***++==----:::--------------------------------------------------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::::::-----------------------::::::---===++++++++++++++++========+++++++++++++++++++++++++++++++++++++++***********************************++++==-:::::.:::--==++++++********************************************************************************************************************************************************************************************************************************************************************************************************###########***********########################################################################################################################################################################################################################################################################################################################################################################********************************###########################################***++======================================================================
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==--:::..::::::-------------------------------------------------------------====================-----------------------------------------------------------------------------------------------::::................:::::-------------------------------------------------------------------------------------------------------:*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-----------------------------------::::::::::::::::::::::........................................::::::::::::::::::::::::::::::----==++**######**+++==---::::::::::::::::::::----====+++++====----::::::::::::-#%################%%%%%#######################%%=-*%###########%%%%##*******++++++++++**###########****+++++++++++++++++++++++++++++++++++++*####%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#%#################################################%%%%%%######*#**########%%%%*%%%##%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#=+##%%%%%%%%%%%%%%%%%%%%%%###############################################*********++++++++=- .:::-+**********************************+===========+***************====-=----------------------++-----------------:-----:--:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--------:::::----------:::::::::::::::::::::::::::::::::::::-:::-:::. .:::-------:---------::--:.. . .. .... ..................................................................................................:::::::::::::::::::---------------------------------------------------------------------------==========================---------=====================================------------------------:::::::::::::::-------------------------------------------------------------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---------------------------------::::::::::::::::::::::::::--==+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++====--::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::................................................................................:::--==++++++++++++===--:::::::::::::::......:::------:::::.:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-------------===+++++++*****###########***++=----:::---------------------------------------------------------------------------------------:::::::::::::::::::::::::::::::::::::::::::------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------::::::::---------------------:::::::---===++++++++++++++++========+++++++++++++++++++++++++++++++++++++++************************************+++==--::::.:::--==++++++*****************************************************************************************************************************************************************************************************************************************************************************************************#################*******##########################################################################################################################################################################################################################################################################################################################################################################*********##********************############################################**++======================================================================
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==--::...::::::------------------------------------------------------------====================------------------------------------------------------------------------------------------------::::................::::----------------------------------------------------------------------------------------------------------%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@=::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--------------------------------------::::::::::::::::::::::........................................:::::::::::::::::::::::::::::::---===+***######**++===---::::::::::::::::::-----==+++++++++===----:::::::::::=%#################%%%%%#######################%#--#%##########%%%%##********++*++++++*###########*****++++++++++++++++++++++++++++++++++++*#%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###########################################*#######%%%%%%#####**%**########%%%%##%%###%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#===*%%%%%%%%%%%%%%%%%%%%%%%##############################################**********++++++++=: .::::=***********************************+============***************+==-------------------------=+=-----------------:----:--:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--------:::::----------:::::::::::::::::::::::::::::::::::::::::-:::. . .:::--------------:-----:::. ....... ....................................................................................................:::::::::::::::::::::------------------------------------------------------------------------==========================--------=====================================-------------------------:::::::::::::::-------------------------------------------------------------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---------------------------------::::::::::::::::::::::::::--==++++++++++++++++++++++++++++++++++++++++++++++++++++++++++====---::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::................................................................................:::-===++++++++++++==--:::::::::::::::::....::::------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---------------===++++++******############**++==---:::----------------------------------------------------------------------------------------::::::::::::::::::::::::::::::::::::::::::-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::::::::---------------------:::::::---===++++++++++++++++=========+++++++++++++++++++++++++++++++++++++**************************************++==--::::.:::--=+++++++****************************************************************************************************************************************************************************************************************************************************************************************************######################**############################################################################################################################################################################################################################################################################################################################################################################********####******************############################################**++======================================================================
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==--::...::::::------------------------------------------------------------==================-------------------------------------------------------------------------------------------------:::::................::::----------------------------------------------------------------------------------------------------------+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@%=:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--------------------------------------::::::::::::::::::::::........................................:::::::::::::::::::::::::::::::----==++**#######**++==----:::::::::::::::::----==+++*****+++==-----::::::::::+%###############%%%%%%%######################%%*-=###########%%%%###********+++++++**#########******+++++++++++++++++++++++++++++++++++++#%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###########################################*#######%%%%%%####***#**########%%%%#*%%###%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%+===*%%%%%%%%%%%%%%%%%%%%%%%##############################################*********+++++++++=. .:----+***********************************+============+**************+====------------------------++-----------------:--------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-------::::::---------:::::::::::::::::::::::::::::::::-:::::::-::-:. ..:-------------:------::::.. ......... ..................................................................................................::::::::::::::::::::::-----------------------------------------------------------------------=========================--------====================================-------------------------:::::::::::::::--------------------------------------------------------------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---------------------------------::::::::::::::::::::::::::--==+++++++++++++++++++++++++++++++++++++++++++++++++++++++++=====---::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::...............................................................................:::--===++++++++++++==--::::::::::::::::::..::::--===---:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--------------------===++++++******#############**++=----------------------------------------------------------------------------------------------::::::::::::::::::::::::::::::::::::::::::-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::::::::---------------------:::::::---===+++++++++++++++++========++++++++++++++++++++++++++++++++++++***************************************+++=--::::.:::--=++++++*****************************************************************************************************************************************************************************************************************************************************************************************************################################################################################################################################################################################################################################################################################################################################################################################################################******************############################################**+++=====================================================================
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==--::...::::::------------------------------------------------------------=================--------------------------------------------------------------------------------------------------:::::...............:::::-----------------------------------------------------------------------------------------------------------#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@%-::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--------------------------------------::::::::::::::::::::::........................................::::::::::::::::::::::::::::::::----==++**######***++==----:::::::::::::::----==+++*******+++==----::::::::::*###############%%%%%%%#######################%%+-+##########%%%%%##*********+++++**########********++++++++++++++++++++++++++++++++++++*##%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#################################################%%%%%%%%###***#**########%%%%%*#####%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*====+%%%%%%%%%%%%%%%%%%%%%%%#############################################**********+++++++++=. :=++==+***********************************+=============***************+==-=-----------------------=+=-----------------:--------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-------::::::---------:::::::::::::::::::::::::::::::::-::::::--:--:. . . ..::------------::::-:-:--::. ...........................................................................................................:::::::::::::::::::::::------------::::-----------------------------------------------------=========================--------====================================-------------------------:::::::::::::::--------------------------------------------------------------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---------------------------------::::::::::::::::::::::::::--==+++++++++++++++++++++++++++======++++++++++++++++++++++++=====--:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::...............................................................................:::--===++++++++++++==--:::::::-::::::::::::::::--====--:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::----------------------===++++++******##############*++==----------------------------------------------------------------------------------------------:::::::::::::::::::::::::::::::::::::::::-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::::::::--------------------::::::::---===+++++++++++++++++=========++++++++++++++++++++++++++++++++++****************************************+++=--::::::::-==++++++***************************************************************************************************************************************************************************************************************************************************************************************************####################################################################################################################################################################################################################################################################################################################################################################################################################***************#############################################**+++=====================================================================
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==--:::..::::::------------------------------------------------------------================---------------------------------------------------------------------------------------------------:::::...............:::::-----------------------------------------------------------------------------------------------------------=@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@#-:-:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--------------------------------------::::::::::::::::::::::.......................................:::::::::::::::::::::::::::::::::----==++***######***++==----::::::::::::::----==++***###***++==----:::::::::-################%%%%%%%#######################%%--+%#########%%%%###*********+++**#######********++++++++++++++++++++++++++++++++******##%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##%############################################%%%%%%%%%%##****#*+#######%%%%%%**####%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#======#%%%%%%%%%%%%%%%%%%%%%%#############################################**********+++++++++= -=+=+++************************************+=============+**************+==-=------------------------++=-------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--------::::::---------:::::::::::::::::::::::::::::::::::::::::----:. . ..:::---:-----------:--::-::.. ......................................................................................................::::::::::::::::::::::::---------:::::::----------------------------------------------------========================-------====================================--------------------------:::::::::::::::--------------------------------------------------------------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---------------------------------::::::::::::::::::::::::::---==++++++++++++++++++++++++==========+++++++++++++++++++++=====---::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::..............................................................................:::--===++++++++++++==--::::::----:::::::::::::--=====--:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::----------------------===++++++******##############**+==----------------------------------------------------------------------------------------------::::::::::::::::::::::::::::::::::::::::::----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::::::::--------------------::::::::---===+++++++++++++++++=========++++++++++++++++++++++++++++++++******************************************+++=--::::::::-==++++++*************************************************************************************************************************************************************************************************************************************************************************************************###########################################################################################################################################################################################################################################################################################################################################################################################################################**********#############################################***++=====================================================================
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==--:::..::::::------------------------------------------------------------===============-------:--------------------------------------------------------------------------------------------:::::...............:::::------------------------------------------------------------------------------------------------------------#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@%@@@@#-::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--------::----------------------------::::::::::::::::::::::.......................................::::::::::::::::::::::::::::::::::----==++***######**++==----::::::::::::::---==++***#####***+==----:::::::::-#%##############%%%%%%%#######################%#--+%########%%%%####************#######***********+++++++++++++++++++++++++****######%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##%######################################*###%%%%%%%%%%%%##****#*+#######%%%%%%#*####%%%%%%%%%%%%%%%%%%%%%%%%%%%%#=======*%%%%%%%%%%%%%%%%%%%%%%#############################################**********+++++++++= .-==+++++************************************+=============+***************+==-------------------------=*=-----------------:-------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-------:::::::--------:::::::::::::::::::::::::::::::--::::::::::---:. .. . ..::-----------::--------:-:... ......................................................................................................:::::::::::::::::::::::::------::::::::::--------------------------------------------------=========================------====================================--------------------------:::::::::::::::--------------------------------------------------------------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---------------------------------:::::::::::::::::::::::::::--==+++++++++++++++++++++++=============+++++++++++++++++======---:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::..............................................................................:::--===++++++++++++==---::::------::::::::::::--======--:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-----------------------===++++++******##############**++=-----------------------------------------------------------------------------------------------:::::::::::::::::::::::::::::::::::::::::-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------::::::::-------------------:::::::::---===+++++++++++++++++=========+++++++++++++++++++++++++++++++********************************************++=--:::::::--==+++++************************************************************************************************************************************************************************************************************************************************************************************************#############################################################################################################################################################################################################################################################################################################################################################################################################################**********#############################################***++=====================================================================
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==--:::..:::::-------------------------------------------------------------==============------::::-------------------------------------------------------------------------------------------::::................::::-------------------------------------------------------------------------------------------------------------=%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@*-:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-----------------------------------:::::::::::::::::::::::.......................................:::::::::::::::::::::::::::::::::::----==++**#######**++==----::::::::::::----==+***#######**++==---:::::::::+#%%#############%%%%%%#######################%%*:-*%########%%%#####***********#######*********+++++++++++++++++++++++++*****######%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######################################*##%%%%%%%%%%%%#%#***#%*+######%%%%%%%%**####%%%%%%%%%%%%%%%%%%%%%%%%%%%*=======*%%%%%%%%%%%%%%%%%%%%##############################################***********+++++++++= :===+=++++************************************+==============***************+===-------------------------++=-----------------:---::-:--:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::------:::::::--------:::::::::::::::::::::::::::::::::::::::::::::--:. . ..... ..:-----------:-----::::--::.. ....... ............................................................................................:::::::::::::::::::::::::::::::::::::::::------------------------------------------------=========================-----====================================---------------------------:::::::::::::::--------------------------------------------------------------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---------------------------------:::::::::::::::::::::::::::--==++++++++++++++++++++++===-----======+++++++++++++++=======---::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::..............................................................................:::--==+++++++++++++==---:::--------::::::::::--=======--::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::------------------------===++++++******##############**++==----------------------------------------------------------------------------------------------:::::::::::::::::::::::::::::::::::::::::-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------::::::::------------------::::::::::---===+++++++++++++++++==========++++++++++++++++++++++++++++++*******************************************+++=--:::::::--==++++*+**********************************************************************************************************************************************************************************************************************************************************************************************#################################################################################################################################################################################################################################################################################################################################################################################################################################********#############################################**++=====================================================================
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==--::::.:::::-------------------------------------------------------------==============-----::::::------------------------------------------------------------------------------------------::::................::::--------------------------------------------------------------------------------------------------------------*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@%+-:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---------------------------------:::::::::::::::::::::::........................................:::::::::::::::::::::::::::::::::::----==++***######***++==---::::::::::::---==++**########**++==---:::::::::*%###############%%%%%%########################%=:=#%#######%%%%######********########*********++++++++++++++++++++++++*****#######%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########################################%%%%%##%%%%%%%%#***#%*+######%%%%%%%%**####*#%%%%%%%%%%%%%%%%%%%%%%%%%#=======#%%%%%%%%%%%%%%%%%%%%##############################################***********+++++++++= :=====+++++************************************+==============+**************+=-=--------==---------------=++-----------------:----:--:-:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::..:::::::::::::::::::::::-------:::::::--------::::::::::::::::::::::::::::::::::::::::----:--:.. . . .. ..... . ..::----:-----------:-::--::.. ..... .. ........................................................................................:::::::::::::::::::::::::::::::::::::::::------------------------------------------------========================-----====================================---------------------------:::::::::::::::-------------------------------------------------------------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---------------------------------:::::::::::::::::::::::::::--==++++++++++++++++++++++==-------======++++++++++++++=====----:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::..............................................................................:::--==++++++++++++===----:----=----::::::::::--=======--:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--------------------------==++++++******###############**+==----------------------------------------------------------------------------------------------:::::::::::::::::::::::::::::::::::::::::-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::::::------------------:::::::::::---===+++++++++++++++++==========++++++++++++++++++++++++++++++********************************************++=--:::::::--=++++*************************************************************************************************************************************************************************************************************************************************************************************************#################################################################################################################################################################################################################################################################################################################################################################################################################################*****################################################**++=====================================================================
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==--::::.:::::-------------------------------------------------------------==============----:::::::------------------------------------------------------------------------------------------::::................::::---------------------------------------------------------------------------------------------------------------%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@%=::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--------------------------------:::::::::::::::::::::::.......................................::::::::::::::::::::::::::::::::::::-----==++***######**++==----::::::::::----==++**########**++==---:::::::::#%##############%%%%%%%#######################%%--=#########%@%#######******#######***********++++++++++++++++++++++++****####%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######################################%%%%%%##%%%%%%%%#***#%*+*#####%%%%%%@%#*####++%%%%%%%%%%%%%%%%%%%%%%%%%%*=====*%%%%%%%%%%%%%%%%%%%%%##############################################***********+++++++++- -=====+++++*************************************+==============+***************+===-------=+----------------=+=----------------:----:--::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::. ::::::::::::::::::::::-------:::::::--------::::::::::::::::::::::::::::::::::::::--:--:----::. . . .. ........ . ...::---------:::-----:----::. ..... ... ...........................................................................................:::::::::::::::::::::::::::::::::::::::::----------------------------------------------========================-----===================================----------------------------:::::::::::::::-------------------------------------------------------------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--------------------------------::::::::::::::::::::::::::::---==++++++++++++++++++++==---------=====+++++++++++++=====----::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::..............................................................................::--===++++++++++++====------=====---:::::::::--==++===--:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--------------------------==++++++*******##############**+==----------------------------------------------------------------------------------------------:::::::::::::::::::::::::::::::::::::::::------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::::------------------::::::::::::---===+++++++++++++++++==========+++++++++++++++++++++++++++++*********************************************++=--:::::::-==++++*************************************************************************************************************************************************************************************************************************************************************************************************#################################################################################################################################################################################################################################################################################################################################################################################################################################*****################################################**+++====================================================================
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==--::::.:::::-------------------------------------------------------------=============----:::::::::----------------------------------------------------------------------------------------:::::...............:::::---------------------------------------------------------------------------------------------------------------+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@%-::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::------------------------::::::::::::::::::::::::.......................................::::::::::::::::::::::::::::::::::::::----==++**#######**++==----:::::::::----==+**#########**++==---:::::::::################%%%%%%%#######################%#:-=########%%%#########*###%######************++++++++++++++++++++++****###%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#################################%#%#*#%%%%%###%%%%%%%#****#%*+*#####%%%%%%%%#**###+=+%%%%%%%%%%%%%%%%%%%%%%%%%#====+%%%%%%%%%%%%%%%%%%%%%###############################################***********+++++++=+. -=======++++*************************************+===============***************+===-------=+=----------------++-----------------:-------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: .::::::::::::::::::::::------::::::::--------::::::::::::::::::::::::::::::::::::---::--::---::. . .............. ...::------------:::::::--:::. ....................................................................................................:::::::::::::::::::::::::::::::::::::::------------------------------------------------======================----===================================-----------------------------:::::::::::::::------------------------------------------------------------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--------------------------------:::::::::::::::::::::::::::::--==++++++++++++++++++++==---::::---====++++++++++++=====----:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::..............................................................................::--===++++++++++++====-----======---:::::::::--==+++==--:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--------------------------==++++++*******##############**+==----------------------------------------------------------------------------------------------:::::::::::::::::::::::::::::::::::::::::----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::::::::::::---===+++++++++++++++++==========++++++++++++++++++++++++**************************************************++=--::::::--==+++**************************************************************************************************************************************************************************************************************************************************************************************************###################################################################################################################################################################################################################################################################################################################################################################################################################################**#################################################***++====================================================================
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==--::::.:::::-------------------------------------------------------------=============----:::::::::----------------------------------------------------------------------------------------:::::...............:::::----------------------------------------------------------------------------------------------------------------%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@#:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::----------------------:::::::::::::::::::::::::.......................................::::::::::::::::::::::::::::::::::::::----==++***######***++==----::::::::---==++**#########**++==---:::::::::##%#############%%%%%%%%%#####################%*:-+%%#####%%%%#########%%%%%#####************++++++++++++++++++++++***####%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%################################%%%%#*#%%%%####%%%%%%%#****#%*+*####%%%%%%%%%#**###+==+%%%%%%%%%%%%%%%%%%%%%%%%%*===#%%%%%%%%%%%%%%%%%%%%%##############################################************+++++++++ ======+=++++***************************************===============+***************+==--------++----------------=*=----------------:----::--::::::::::::::::::::::::::::::::::::::::::::::::::::::::::----:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: .:::::::::::::::::::::-------:::::::--------::::::::::::::::::::::::::::::::::-----------:----:. .. ............. ..... ..::----::-----::---::::::::.. ....................................................................................................:::::::::::::::::::::::::::::::::::::-------------------------------------------------=-=-=================----===================================-----------------------------:::::::::::::::------------------------------------------------------------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--------------------------------:::::::::::::::::::::::::::::--===++++++++++++++++++==---::::::---===++++++++++++====---::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.............................................................................::--===+++++++++++++====--=========--::::::::---=++++==--::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-----------------------------==++++++*******##############**++=----------------------------------------------------------------------------------------------:::::::::::::::::::::::::::::::::::::::::--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::::::::::::::---===+++++++++++++++++===========++++++++++++++++++++++++*************************************************++=--::::::--==+++***************************************************************************************************************************************************************************************************************************************************************************************************#####################################################################################################################################################################################################################################################################################################################################################################################################################################################################################***++====================================================================
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==-::::::::::-------------------------------------------------------------=============----:::::::::----------------------------------------------------------------------------------------:::::...............::::-----------------------------------------------------------------------------------------------------------------+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--------------------:::::::::::::::::::::::::::.......................................:::::::::::::::::::::::::::::::::::::::----==++**#######**++===---:::::::----==++**#########**++==---:::::::::##%#############%%%%%%%%%#####################%=:=*%%#####%@%########%%%%%#####*************++++++++++++++++++++++**####%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###############################%%%%%##%%%%#####%%%%%%%#****#%*+*####%%%%%%%%%%#*###+===*%%%%%%%%%%%%%%%%%%%%%%%%#==+#%%%%%%%%%%%%%%%%%%%%%##############################################************+++++++++ ====+===+++++***************************************===============+***************+==--------=*=----------------++=--------------------::----:::::::::::::::::::::::::::::::::::::::::::::::::::::::::-===-::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-:: .:::::::::::::::::::::-------::::::::-------:::::::::::::::::::::::::::::::::---:-------------::.. . ......... .......... .::::--::-----::::-:--:--::.. .. ..................................................................................................:::::::::::::::::::::::::::::::::::--------------------------------------------------==-==================---==================================------------------------------:::::::::::::::-----------------------------------------------------------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--------------------------------:::::::::::::::::::::::::::::---==++++++++++++++++++==--:::::::---====+++++++++++====---:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.............................................................................:::--===+++++++++++++===============--::::::::--==++++==--::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-------------------------------==+++++++******##############**++==---------------------------------------------------------------------------------------------:::::::::::::::::::::::::::::::::::::::::-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------::::::::::::::::---===+++++++++++++++++===========++++++++++++++++++++++++*************************************************++==-::::::--=+++****************************************************************************************************************************************************************************************************************************************************************************************************######################################################################################################################################################################################################################################################################################################################################################################################################################################################################################**++====================================================================
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==-::::::::::-------------------------------------------------------------=============---::::::::::----------------------------------------------------------------------------------------:::::...............::::------------------------------------------------------------------------------------------------------------------#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@%%=:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---:::--------:::::::::::::::::::::::::::.......................................::::::::::::::::::::::::::::::::::::::::----==++**#######**++==----::::::---==++**##########**+==----:::::::::################%%%%%%%%#####################%%--=#%%####%%%#######%%%%######**************++++++++++++++++++++++**###%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##############################%%%%%#*#%%%#######%%%%%%#****#%*+*####%%%%%%%%%%#*###+===+%%%%%%%%%%%%%%%%%%%%%%%%%*=#%%%#%%%%%%%%%%%%%%%%%%##############################################************++++++++= .======+++++++****************************************==============+*****************===--------*+----------------=*=--------------------::-----::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-===-:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: .::::::::::::::::::::::-------:::::::-------::::::::::::::::::::::::::::::::-----:-------::----:.. .............. ... .. ...::---::-:::::::::::::--:::........................................................................................................:::::::::::::::::::::::::::::::---------------------------------------------------=----================--==================================------------------------------::::::::::::::::-----------------------------------------------------------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--------------------------------::::::::::::::::::::::::::::::--===++++++++++++++++==---::::::::--====+++++++++++====--::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.............................................................................:::--===+++++++++++++==========+====--::::::::--==++++==--:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--------------------------------==+++++++******###############**+==---------------------------------------------------------------------------------------------:::::::::::::::::::::::::::::::::::::::::----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::::::::::::::::::---===+++++++++++++++++===========+++++++++++++++++++++++**************************************************++==-:::::--==++******************************************************************************************************************************************************************************************************************************************************************************************************#########***************#############################################################################################################################################################################################################################################################################################################################################################################################################################################################**+++===================================================================
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==-::::::::::--------------------------------------------------------------===========----::::::::::----------------------------------------------------------------------------------------::::................::::------------------------------------------------------------------------------------------------------------------+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@#-:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.......................................::::::::::::::::::::::::::::::::::::::::----===+***######***+===----::::----==++**##########**+==----:::::::::#%##############%%%%%%%%#####################%#:-=#%%%###%%######%%%%#######**************+++++++++++++++++++++++*#%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#############################%%%%%%#*#%%%#######%%%%%%#****##*+*####%%%%%%%%%%#**##+===*%%%%%%%%%%%%%%%%%%%%%%%%%#+%%%%%%%%%%%%%%%%%#%%%%%##################################++*########*************++++++++= .=+====++=+++++****************************************==============+*****************+==--------+*=----------------++-----------------:--:-------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::--====-:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::. .::::::::::::::::::::::-----:::::::::-------::::::::::::::::::::::::::::::---:--:----:---::----:. . ........ ... ......... .....::-::----:--:::-::::::-::.......................................................................................................::::::::::::::::::::::::::::::---------------------------------------------------=------==============--=================================-------------------------------::::::::::::::::----------------------------------------------------------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--------------------------------:::::::::::::::::::::::::::::::--==++++++++++++++++==--:::::::::--====++++++++++=====--::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.............................................................................:::--===+++++++++++++========++++===--::::::::--==++++==--:::::::::::::::::::::::::::::::::::::::::::::::::::::::::----------------------------------==+++++++******###############**+==---------------------------------------------------------------------------------------------:::::::::::::::::::::::::::::::::::::::::-----------------------------------------===============-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------::::::::::::::::::::---===+++++++++++++++++===========++++++++++++++++++++++***************************************************++==--::::--=+++*******************************************************************************************************************************************************************************************************************************************************************************************************####********************#############################################################################################################################################################################################################################################################################################################################################################################################################*##############################################**+++===================================================================
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==--:::::::::--------------------------------------------------------------===========----::::::::::----------------------------------------------------------------------------------------::::...............:::::-------------------------------------------------------------------------------------------------------------------#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@*::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-:::::::::::::::::::::::::.......................................::::::::::::::::::::::::::::::::::::::::::----==++**#######**++==-----:::---===+***#########***+==---:::::::::-################%%%%%%%######################%*:-+#%%###%%%#####%%%#######*****************++++++++++++++++++++**#%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###########%#########%##########%%%%%%%#*%%%%**###%#%%%%%#*****##*+*###%%%%%%%%%%%#**##*===#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#################################=-==########*************++++++++. :===+++++++++++*****************************************+=============+******************==--=-----=*=----------------=+----------------------:----::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-=====--::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.. .::::::::::::::::::::::-------::::::::-----:::::--::::::::::::::::::::::::::-------------------::. .. . ...... ........... .....:::--::::::::::-::-:::-::.......................................................................................................:::::::::::::::::::::::::::-----------==----------------------------------------=-------===============================================-------------------------------::::::::::::::::---------------------------------------------------------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-------------------------------::::::::::::::::::::::::::::::::--===++++++++++++++==---:::::::::--====+++++++++++====--::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.............................................................................:::--===++++++++++++++======++++====--::::::::--==++++==--:::::::::::::::::::::::::::::::::::::::::::::::::::::::::---------------------------------===+++++++******###############**+==--------------------------------------------------------------------------------------------::::::::::::::::::::::::::::::::::::::::::--------------------------------------=====================--------------------------------------------------------------------------------------------------------------------------------------------------------------------------::::::::::::::::::::::---===+++++++++++++++++===========+++++++++++++++++++++++**************************************************++==--:::--==++******************************************************************************************************************************************************************************************************************************************************************************************************************************#########################################################################################################################################################################################################################################################################################################################################################################################*####################################################################**+++===================================================================
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***********************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==--:::::::::--------------------------------------------------------------===========---::::::::::-----------------------------------------------------------------------------------------::::...............:::::-------------------------------------------------------------------------------------------------------------------=@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@%+:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.......................................::::::::::::::::::::::::::::::::::::::::::----===+***######***++==------:---==++**##########**++==---:::::::::-###############%%%%%%%%######################%+:-*%##%##%%####%%%%######******************+++++++++++++++******##%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###########%#########%#########%%%%%%%%*#%%%#**#####%%%%%#****###*+*###%%%%%%%%%%%%**##*+==#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%################################*=-=-=########*************++++++++ .=+==++++++==++++*****************************************+=============+******************+=--------=++----------------=+----------------------:-----:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--======-::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::. .::::::::::::::::::::::-------:::::::::-----:--::::::::::::::::::::::::::::----------------::---:. .. .. ................... ...:::----:::::::--:--::::::.......................................................................................................::::::::::::::::::::::::-----------===--------------------------------------------------============================================--------------------------------::::::::::::::::--------------------------------------------------------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-------------------------------::::::::::::::::::::::::::::::::---==+++++++++++++===--::::::::::--====+++++++++++====--::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.............................................................................:::--===++++++++++++++++===+++++====--::::::::--==++++==--::::::::::::::::::::::::::::::::::::::::::::::::::::::-::---------------------------------===+++++++******###############**+===-------------------------------------------------------------------------------------------::::::::::::::::::::::::::::::::::::::::::------------------------------------=========================-----------------------------------------------------------------------------------------------------------------------------------------------------------------------:::::::::::::::::::::::---===++++++++++++++++++==========++++++++++++++++++++++***************************************************++==--:::--=+++*****************************************************************************************************************************************************************************************************************************************************************************************************************************################################################################################################################################################################################################################################################################################################################################################**#############################################################################################################***++===================================================================
++++++++++++++++++++++++++++++++++++++++++++++++++++++***************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==--:::::::::--------------------------------------------------------------==========----::::::::::-----------------------------------------------------------------------------------------::::...............:::::--------------------------------------------------------------------------------------------------------------------*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@%@%-::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.......................................:::::::::::::::::::::::::::::::::::::::::::----==++***######***++==---------==++**##########**++==---:::::::::-%##############%%%%%%%######################%%-:-###%##%%####%%%%#####******************+++++++++++++++***####%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###########%#################%%%%%%%%%#*#%%##**#####%%%%%#****###*+*###%%%%%%%%%%%%**###*++%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######################%########=-====#######**************++++++++=+++++++++++++++++*****************************************+=============+******************+=-=-------++=----------------=------------------:---::-----:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-=======--::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::...:::::::::::::::::::::-------::::::::--------::-:::::::::::::::::::::::::::----------------::--::. . ............................::::-:-:::-::::--:::::--::.......................................................................................................::::::::::::::::::::------------===-----------------------------------:----------------=========================================---------------------------------::::::::::::::::--------------------------------------------------------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-------------------------------:::::::::::::::::::::::::::::::::---==++++++++++++==---::::::::::--===++++++++++++====--::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.............................................................................:::--===++++++++++++++++++++++++===---::::::::--==++++==--:::::::::::::::::::::::::::::::::::::::::::::::::::::--::---------------------------------===+++++++******###############**++==------------------------------------------------------------------------------------------:::::::::::::::::::::::::::::::::::::::::::----------------------------------=======+++++++++++++++=======--------------------------------------------------------------------------------------------------------------------------------------------------------------------::::::::::::::::::::::::---===++++++++++++++++++==========++++++++++++++++++++++***************************************************+++=---:--==++**********************************************************************************************************************************************************************************************************************************************************************************************************######*************#################################################################################################################################################################################################################################################################################################################################################**##############################################################################################################**++===================================================================
++++++++++++++++++++++++++++++++++++++++++++++++++********************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==--:::::::::---------------------------------------------------------------========-----:::::::::------------------------------------------------------------------------------------------::::...............::::---------------------------------------------------------------------------------------------------------------------=%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@#-:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.......................................::::::::::::::::::::::::::::::::::::::::::::----==++**#######**++==--------===+**###########**++==---:::::::::=%##############%%%%%%%######################%%:-=##%%#%%###%%@%#####*******************++++++++++++++**#####%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#############################%%%%%%%%%%#*#%###**#####%%%%#*****###++*##%%%%%%%%%%%%%#**#%#=*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######################%#######+-===-=######***************+++++++*+++=+++++++++++++******************************************+==============+******************=-=-------+*=-----------------------------------:---::-----:::-::::::::::::::::::::::::::::::::::::::::::::::::::::::::-========-:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.:::::::::::::::::::::::------::::::-:--=------:-:::::::::::::::::::::::::::-------------::::::--::. . ... .................... ...:::---::::-:::---:::::-::.......................................................................................................::::::::::::::::::--------------------------------------------------::-----------------=======================================---------------------------------::::::::::::::::--------------------------------------------------------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::------------------------------::::::::::::::::::::::::::::::::::--===++++++++++===--::::::::::---===++++++++++++====---:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.............................................................................:::--===++++++++++++++++++++++++===---::::::::--==++++==---::::::::::::::::::::::::::::::::::::::::::::::::::::::::---------------------------------===+++++++******###############**++==------------------------------------------------------------------------------------------:::::::::::::::::::::::::::::::::::::::::::--------------------------------=======++++++++++++++++++++======-----------------------------------------------------------------------------------------------------------------------------------------------------------------:::::::::::::::::::::::::----==++++++++++++++++++==========++++++++++++++++++++++****************************************************++=------==++*********************************************************************************************************************************************************************************************************************************************************************************************************########**********###############################################################################################################################################################################################################################################################################################################################################**********##########################################################################################################**+++==================================================================
+++++++++++++++++++++++++++++++++++++++++++++++***********************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==--:::::::::----------------------------------------------------------------=======-----:::::::::------------------------------------------------------------------------------------------::::...............::::----------------------------------------------------------------------------------------------------------------------*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@*:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::......................................:::::::::::::::::::::::::::::::::::::::::::::----==++***######***++==-------==++**##########***+==----:::::::::+%##############%%%%%%%######################%*:-+####%%%##%@%%#####******************++++++++++++++**#####%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##########################*##%%%%%%%%%%%#**###**######%%%%#*****##*++*##%%%%%%%%%%%%%#**#%#+#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######################%#######====-=+######***************++++++*+++=++++++++++++++*******************************************==============+******************+=--------=*+-----------------------------------:---::------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-=========-::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-------::::-::--=------::::::::::::::::::::::::::::----:--------::---:::-:::. . ..... .........................:::::--:::::-:::-::::::::.......................................................................................................:::::::::::::::-----------------------::----------------------------:---------------------=================================----------------------------------::::::::::::::::--------------------------------------------------------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::------------------------------::::::::::::::::::::::::::::::::::---==++++++++++==--:::::::::::---===+++++++++++++===---::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::............................................................................:::--===++++++++++++++++++++++++====--::::::::--==++++==---::::::::::::::::::::::::::::::::::::::::::::::::::::::::---------------------------------===+++++++******###############**++==------------------------------------------------------------------------------------------:::::::::::::::::::::::::::::::::::::::::::-------------------------------=====+++++++++++++++++++++++++=====--------------------------------------------------------------------------------------------------------------------------------------------------------------:::::::::::::::::::::::::::----==++++++++++++++++++=========+++++++++++++++++++++++****************************************************++==----==++**********************************************************************************************************************************************************************************************************************************************************************************************************########********###############################################################################################################################################################################################################################################################################################################################################**************########################################################################################################**+++==================================================================
+++++++++++++++++++++++++++++++++++++++++++++***************************************++********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=--:::::::::------------------------------------------------------------------==-------::::::::::-----------------------------------------------------------------------------------------:::::...............::::----------------------------------------------------------------------------------------------------------------------=%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@%+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::......................................::::::::::::::::::::::::::::::::::::::::::::::----==++**#######***++==------==++**##########**++==---::::::::::*%%#############%%%%%%#######################%+:-*###%%%#%%@%%####******************++++++++++++++***####%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%############################%%%%%%%%%%%#***#****######%%%%#***+*##*++*#%%%%%%%%%%%%%%#**#%%#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###############################+=====+######***************++++++*+=+++++++++++++++********************************************+========+=+===*******************==-------=++--------------------------------------:-:-------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::==========-::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-------::::::::-==------::::::::::::::::::::::::::----:----------:::--::::-::. ................................::::::--::::::::-::::::-:... ...................................................................................................:::::::::::::-----------------------:::::-------------------------:----------------------===============================-----------------------------------::::::::::::::::--------------------------------------------------------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-----------------------------:::::::::::::::::::::::::::::::::::---==++++++++==---:::::::::::---===+++++++++++++===---::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::............................................................................:::--===++++++++++++++++++++++++====--::::::::--==++++==---::::::::::::::::::::::::::::::::::::::::::::::::::::::::---------------------------------===+++++++******###############**++==------------------------------------------------------------------------------------------:::::::::::::::::::::::::::::::::::::::::::------------------------------====++++++++*************++++++++====----------------------------------------------------------------------------------------------------------------------------------------------------------::::::::::::::::::::::::::::::----==++++++++++++++++++=========++++++++++++++++++++++*****************************************************++==----==++*******************************************************************************************************************************************************************************************************************************************************************************************************#################################################################################################################################################################################################################################################################################################################################################################****************#######################################################################################################***++==================================================================
++++++++++++++++++++++++++++++++++++++++++****************************************++++********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=--:::::::::---------------------------------------------------------------------------::::::::::-----------------------------------------------------------------------------------------:::::...............::::-----------------------------------------------------------------------------------------------------------------------*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@%@@=:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::..::::::::::......................................::::::::::::::::::::::::::::::::::::::::::::::-----=++***#######**++===-----==+**###########**++==---::::::::::#%%#############%%%%%%######################%%-:-###%%%%%%%%#####******************+++++++++++++***####%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##############################%%%%%%%%%###*#*******#######%#****+*##*++##%%%%%%%%%%@%%%#**#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###############################+=-=--*#####****************+++++++++++=++++++++++++*********************************************+===+=====+=+=+******************+=-------=++=-------------------------------------:-:-------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-===========-::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::------::::::::-==------::::::::::::::::::::::::--------------:--::--:-:-::::... .................................::-:::::---::::::::::::::......................................................................................................:::::::::::---------------------:::::::::-----------------------:------------------------============================-----------------------------------:::::::::::::::::-------------------------------------------------------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::----------------------------:::::::::::::::::::::::::::::::::::::--===++++++===--::::::::::::---===+++++++++++++====--:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::...........................................................................:::--===+++++++++++++++++++++++++===--::::::::--==++++==---::::::::::::::::::::::::::::::::::::::::::::::::::::::-----------------------------------===+++++++******###############**++==------------------------------------------------------------------------------------------::::::::::::::::::::::::::::::::::::::::::------------------------------====++++++*******************++++++=====-------------------------------------------------------------------------------------------------------------------------------------------------------::::::::::::::::::::::::::::::::---==+++++++++++++++++++========++++++++++++++++++++++*****************************************************++==---==++********************************************************************************************************************************************************************************************************************************************************************************************************#################################################################################################################################################################################################################################################################################################################################################################*******+++*******######################################################################################################***++==================================================================
+++++++++++++++++++++++++++++++++++++++++***************************************+++++++*******++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***++++==-:::::::::---------------------------------------------------------------------------:::::::::------------------------------------------------------------------------------------------:::::..............::::------------------------------------------------------------------------------------------------------------------------=%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@%-:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::...:::::::::.......................................:::::::::::::::::::::::::::::::::::::::::::::::----==++**#######***++==----==++**###########**++==---::::::::::#%%#############%%%%%#######################%%::-#%#%%%%@%%#####*****************+++++++++++++++*#####%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#############################%%%%%%%#####**#*******###*#####**+++*##*++##%%%%%%%%%%@%%%#***%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###############################+-==-=######*****************++++++++=++++++++++++++*********************************************+===+==+=++=+=+******************+=-=-----=++=-------------------------------------:---------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-============::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::------:::::::--==------:::::::::::::::::::::::-------------------:::--::---:......................................:::--:::::-::::::::::::::....................................................................................................:::::::::::--------------------::::::::::-----------------------::------------------------=--========================-----------------------------------:::::::::::::::::------------------------------------------------------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::----------------------------:::::::::::::::::::::::::::::::::::::---===++++===---::::::::::::---===+++++++++++++====--:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::...........................................................................:::-====+++++++++++++++++++++++++===--::::::::--==++++==---::::::::::::::::::::::::::::::::::::::::::::::::::::-------------------------------------===+++++++******###############**++==-----------------------------------------------------------------------------------------:::::::::::::::::::::::::::::::::::::::::::-----------------------------====+++++***********************+++++====------------------------------------------------------------------------------------------------------------------------------------------------------:::::::::::::::::::::::::::::::::---==+++++++++++++++++++========++++++++++++++++++++++*****************************************************++===-===++*******************************************************************************************************************************************************************************************************************************************************************************************************##################################################################################################################################################################################################################################################################################################################################################################*****++++++*******######################################################################################################**++==================================================================
++++++++++++++++++++++++++++++++++++++++**************************************+++++++++*******+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********+++==--::::::::--------------------------------------------------------------------------::::::::::------------------------------------------------------------------------------------------:::::..............::::-------------------------------------------------------------------------------------------------------------------------*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@#-::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::....::::::::.......................................::::::::::::::::::::::::::::::::::::::::::::::::----==++**#######***++===--==++**###########**++==---:::::::::-%%%############%%%%%%#######################%%-:=%#%%%%%%######*****************++++++++++++++++####%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#%##############%############%%%%%%#######**#********##*#####*++++*##*++##%%%%%@%%%%%%%%#***#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%################################+==-=######******************++++++++++++++++++++++***********************************************+===++++++++==*******************+=-------+++------------------------------------:-:-:-------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-============-:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-------:::::::-===------:-::::::::--:::::::-----------------------::::::::-:. ....................................::::::::--::::::::::::::::..................................................................................................:::::::::::-----------------:::::::::::::---------------------:-:------------------------------===================-------------------------------------:::::::::::::::::----------------------------------------------------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---------------------------::::::::::::::::::::::::::::::::::::::---==++++==---:::::::::::::--====+++++++++++++====---::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::..........................................................................:::--====+++++++++++++++++++++++++===---:::::::--==++++==---::::::::::::::::::::::::::::::::::::::::::::::::::-----:---------------------------------===+++++++******###############**++==------------------------------------------------------------------------------------------::::::::::::::::::::::::::::::::::::::::::----------------------------====++++***************************++++=====---------------------------------------------------------------------------------------------------------------------------------------------------:::::::::::::::::::::::::::::::::----==++++++++++++++++++++=======++++++++++++++++++++*******************************************************++======+++*******************************************************************************************************************************************************************************************************************************************************************************************************##################################################################################################################################################################################################################################################################################################################################################################****+++++++++****#######################################################################################################**++==================================================================
++++++++++++++++++++++++++++++++++++++***************************************++++++++++********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********+++==--::::::::--------------------------------------------------------------------------::::::::::------------------------------------------------------------------------------------------:::::..............::::-------------------------------------------------------------------------------------------------------------------------=%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@*:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.....::::::::.......................................::::::::::::::::::::::::::::::::::::::::::::::::----==++***#######**++=======++**###########**+==----:::::::::=%%#############%%%%%%######################%%%--+%%%%%%%#####******************++++++++++++++++*##%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##############%###########%%%%%%#######*****+++****##*####*+++++*##+++*#%%%%%%%%%%%%%%#***#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%################################+--=#######*****************+++++++++++++++++++++++***********************************************+=++++++++++==+******************+==------=++--------------------------------------:-:--------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-=============-:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-------:::::-:-===-==---::::::::::::----::-----------------------:-::::::--:.. ....................................::::::::::::::::::::::::::................................................................................................::::::::::::--------------::::::::::::::::--------------------:::-------------------------------=================--------------------------------------:::::::::::::::::----------------------------------------------------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::------::-----------------:::::::::::::::::::::::::::::::::::::::--===++===--::::::::::::::--====++++++++++++++===---::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::...........................................................:::............:::--====+++++++++++++++++++++++++===---:::::::--==++++==---::::::::::::::::::::::::::::::::::::::::::::::::::---------------------------------------===+++++++******###############**++==------------------------------------------------------------------------------------------::::::::::::::::::::::::::::::::::::::::::---------------------------====++++*****************************++++====-----------------------------------------------------------------:::::-----------------------------------------------------------------------------:::::::::::::::::::::::::::::::::----==++++++++++++++++++++=======++++++++++++++++++++*******************************************************++======++*******************************************************************************************************************************************************************************************************************************************************************************************************###################################################################################################################################################################################################################################################################################################################################################################***++++++++++*****######################################################################################################**+++=================================================================
++++++++++++++++++++++++++++++++++++***************************************++++++++++++********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********+++==---::::::--------------------------------------------------------------------------:::::::::::------------------------------------------------------------------------------------------::::...............::::--------------------------------------------------------------------------------------------------------------------------*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::......:::::::......................................::::::::::::::::::::::::::::::::::::::::::::::::::----==++**########**++=====++***##########**++==---::::::::::*%%#############%%%%%%####################%#%%%*-#%%%%%######*****************++++++++++++++++++#%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##%#####################%%%%%#########*****++++***#**####*+++++*#*++**#%%%%@%%%@%%%%%#***#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%################################+-+########******************+++++++++++++++++++++*************************************************++++++++++++=+******************+=-------=++=-------------------------------------:::--------:::-:::::::::::::::::::::::::::::::::::::::::::::::::::::::::-==============--::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-------:::-::-======------::::::::::::-------------------:::---:---::::::-::... ....................................:::--:::::::::::::::::::::.............................................................................................:::::::::::::::---------:::::::::::::::::::------------------::::-----------------------------------============---------------------------------------:::::::::::::::::----------------------------------------------------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--::::::::::::::::::::::::::::::::::::::::::::::---======---::::::::::::::--====++++++++++++++====--::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.........................................................:::::::.........::::--====+++++++++++++++++++++++++====--:::::::--==++++==---::::::::::::::::::::::::::::::::::::::::::::::::::---------------------------------------===+++++++******###############**++==-------------------------------------------------------======---------------------------::::::::::::::::::::::::::::::::::::::::::::---------------------------===++++*******************************+++++===------------------------------------------------------------::::::::::----------------------------------------------------------------------------::::::::::::::::::::::::::::::::::---==++++++++++++++++++++=======++++++++++++++++++++*******************************************************+++====+++*******************************************************************************************************************************************************************************************************************************************************************************************************##################################################################################################################################################################################################################################################################################################################################################################****+++=====+++****######################################################################################################**+++=================================================================
++++++++++++++++++++++++++++++++++**************************************+++++++++++++++********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**#*********+++==--::::::--------------------------------------------------------------------------::::::::::-------------------------------------------------------------------------------------------::::..............:::::--------------------------------------------------------------------------------------------------------------------------=%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@%@%-:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::......::::::.......................................::::::::::::::::::::::::::::::::::::::::::::::::::----==++***#######***++====++**###########**++==---::::::::::#%%#############%%%%%###################%%%%%%%#=#%%%%#####******************+++++++++++++++++++%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###################%%%%%##########******+++++**#**####++++++##*++***%%%%@%@%@%%%%%##**#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%################################*+#########******************+++++++++++++++++++++*************************************************+++++++++++++=******************++=------=+*=------------------------------------::::----------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-===============--:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--------:::-::=====--------:::-::::::------------------::::---:-----:::--:--:::.......................................::::--::::::::::::::::::::............................................................................................:::::::::::::::::::::::::::::::::::::::::::-----------------:::::----------------------------------==========-----------------------------------------:::::::::::::::::---------------------------------------------------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---====---:::::::::::::::--====++++++++++++++====--:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.......................................................::::::::::.....::::::--===++++++++++++++++++++++++++====--:::::::--==++++==---:::::::::::::::::::::::::::::::::::::::::::::::::----------------------------------------===+++++++******###############**++==---------------------------------------------------==============----------------------:::::::::::::::::::::::::::::::::::::::::::::--------------------------===++++**********************************+++====-----------------------------------------------------:::::::::::::::::---------------------------------------------------------------------------::::::::::::::::::::::::::::::::::---==++++++++++++++++++++=======+++++++++++++++++++********************************************************+++===+++********************************************************************************************************************************************************************************************************************************************************************************************************##################################################################################################################################################################################################################################################################################################################################################################****++======+++****######################################################################################################***++=================================================================
+++++++++++++++++++++++++++++++++*************************************+++++++++++++++++********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***#*********+++==---::::---------------------------------------------------------------------------::::::::::-------------------------------------------------------------------------------------------::::..............:::::---------------------------------------------------------------------------------------------------------------------------*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@#-::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.......:::::......................................:::::::::::::::::::::::::::::::::::::::::::::::::::-----==++**########***+++++++**###########**++==---:::::::::-%%##############%%%%%########################%#**#%%%###*#******************+++++++++++++++++++*%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##################%%%%##########******++++++**#*+###*+++++*##*++*#*#%%%@%@@@%%%%%##**#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##########################################*******************++++++++++++++++++++***************************************************++++++++++++=+******************+===----=+*=------------------------------------:-:::---------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::=================-:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::------::::::::-===-----------:::----::----------------:::::--:-------:::--:::--:::......................................:::::-::::::::::::::::::::.........................................................................................::::::::::::::::::::::::::::::::::::::::::::----------------:::::-------------------------------------=====-------------------------------------------::::::::::::::::----------------------------------------------------------------------------------:::-::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---===----:::::::::::::::---===++++++++++++++====--:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::......................................................::::::::::::::::::::::--===++++++++++++++++++++++++++====---::::::--==++++==---::::::::::::::::::::::::::::::::::::::::::::::::-----------------------------------------===+++++++******###############**++==------------------------------------------------====================-------------------:::::::::::::::::::::::::::::::::::::::::::::-------------------------===++++************************************+++===--------------------------------------------------::::::::::::::::::::---------------------------------------------------------------------------::::::::::::::::::::::::::::::::::---===+++++++++++++++++++=======+++++++++++++++++++*********************************************************+++==+++*******************************************************************************************************************************************************************************************************************************************************************************************************###################################################################################################################################################################################################################################################################################################################################################################***+++=======++*****#####################################################################################################***++=================================================================
++++++++++++++++++++++++++++++++*************************************+++++++++++++++++*********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****#*********++++==----:---------------------------------------------------------------------------:::::::::::-------------------------------------------------------------------------------------------::::..............::::----------------------------------------------------------------------------------------------------------------------------=%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@*::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::........:::.......................................::::::::::::::::::::::::::::::::::::::::::::::::::::----==++***#######***++++++***##########***+==----:::::::::=%%##############%%%%%###################********#%%####**#***************++++++++++++++++++++++#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#################%%%%###########******++++++****+###*+++++*##+++##*#%%%@%%@@%%%%%%#**#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%############################################********************++++++++++++++++++***************************************************++++++++++++=+*******************+=-----=+*+------------------------------------:-:::----------::-:::::::::::::::::::::::::::::::::::::::::::::::::::::::::-=================-:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::------::-:::::-====------------:::--:----------------::::--::-------:--::--:::::-:::::...................................::::--:::::::::::::::::::::......................................................................................:::::::::::::::::::::::::::::::::::::::::::::---------------:::::-------------------------------------------------------------------------------------::::::::::::::::---------------------------------------------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---=----::::::::::::::::---===++++++++++++++====--:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.....................................................:::------::::::::::::::--===++++++++++++++++++++++++++====---::::::--==++++==---::::::::::::::::::::::::::::::::::::::::::::::::-----------------------------------------===+++++++******###############**++==-----------------------------------------------======================------------------:::::::::::::::::::::::::::::::::::::::::::::------------------------====+++*************************************++++===-----------------------------------------------::::::::::::::::::::::---------------------------------------------------------------------------::::::::::::::::::::::::::::::::::---===++++++++++++++++++++======+++++++++++++++++++*********************************************************++++++++*******************************************************************************************************************************************************************************************************************************************************************************************************###################################################################################################################################################################################################################################################################################################################################################################***++========+++****#####################################################################################################***++===============================================================++
+++++++++++++++++++++++++++++++************************************+++++++++++++++++++*********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******#*********++++==--------------------------------------------------------------------------------:::::::::::-------------------------------------------------------------------------------------------::::..............::::-----------------------------------------------------------------------------------------------------------------------------*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@%@@@@=::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.........::........................................:::::::::::::::::::::::::::::::::::::::::::::::::::::----==++**########****+++****##########**++==----:::::::::*%%##############%%%%%################*********##%%####*##****************++++++++++++++++++++++%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#################%%%###########*******++++++*#*+**#*++++++*#*+++#%**%%%%@%@@%%%%%%#***%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%############################################*******************++++++++++++++++++*****************************************************++++++++++++=*******************+=-----=+++------------------------------------:--:::---------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::-==================-:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-::-:::::-===--------------::--------------------::--:::::-----:--::-----::::::----::................................::::::::::::::::::::::::::::....................................................................................::::::::::::::::::::::::::::::::::::::::::::---------------:::::-------------------------------------------------------------------------------------::::::::::::::::---------------------------------------------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::------:::::::::::::::::---===++++++++++++++====---:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::..................................................::::--------:::::::::::::--===++++++++++++++++++++++++++====---::::::--==++++==---::::::::::::::::::::::::::::::::::::::::::::::::-----------------------------------------===+++++++******################*++==---------------------------------------------======+++++++++++++=======----------------:::::::::::::::::::::::::::::::::::::::::::::------------------------===+++***************************************+++====----------------------------------====-------:::::::::::::::::::::::---------------------------------------------------------------------------::::::::::::::::::::::::::::::::::---===++++++++++++++++++++======+++++++++++++++++++*********************************************************+++++++*******************************************************************************************************************************************************************************************************************************************************************************************************####################################################################################################################################################################################################################################################################################################################################################################***++========+++****######################################################################################################**++==============================================================+++
++++++++++++++++++++++++++++++**********************************++++++++++++++++++++++*********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********%*********++++==----:---------------------------------------------------------------------------:::::::::::-------------------------------------------------------------------------------------------::::..............::::-----------------------------------------------------------------------------------------------------------------------------=%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%@@@@@@@@%-:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::...................................................:::::::::::::::::::::::::::::::::::::::::::::::::::::----===+***########*********###########**++==----:::::::::#%###############%%%%%############*************#%####*********************++++++++++++++++++++++%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%################%%%############*++****++++++*#*+**#*++++++**+++*#%#*%%@%@%@%%%%%%%#***%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#############################################*******************=:++++++++++++++++*****************************************************++++++++++++=+******************+==----=+++------------------------------------::-:-:----------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::===================-::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.::::::::::--==----------------------------------------:::::-----:::--:::::::::::-:::--::::..............................:::-:::::::::::::::::::::::::.................................................................................::::::::::::::::::::::::::::::::::::::::::::----------------::::-------------------------------------------------------------------------------------::::::::::::::::---------------------------------------------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-----:::::::::::::::::--====++++++++++++++====---:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.................................................:::::--====--::::::::::::---===+++++++++++++++++++++++++=====---::::::--==++++==---::::::::::::::::::::::::::::::::::::::::::::::::-----------------------------------------===+++++++******################*++==--------------------------------------------=====+++++++++++++++++======---------------:::::::::::::::::::::::::::::::::::::::::::::-----------------------====+++****************************************+++===-----------------------------==========------:::::::::::::::::::::::----------------------------------------------------------------------------:::::::::::::::::::::::::::::::::---===++++++++++++++++++++======+++++++++++++++++++*********************************************************+++++++****************************************************************************************************************************************************************************************************************************************************************************************************##*####################################################################################################################################################################################################################################################################################################################################################################***++========+++****######################################################################################################**+++=============================================================+++
++++++++++++++++++++++++++++++********************************++++++++++++++++++++++++*********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++************#%*********++++==--------------------------------------------------------------------------------::::::::::--------------------------------------------------------------------------------------------::::.............:::::------------------------------------------------------------------------------------------------------------------------------*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@#:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::...................................................::::::::::::::::::::::::::::::::::::::::::::::::::::::----==++**#########*******############**++=-----::::::::=%%##############%%%%%%########****************#%####********************+++++++++++++++++++++++#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#%%%%%%#################%%############**++***++++++****+*##*+++++++++++*%%#*#@%@@%@@%%%@%%#***%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##############################################*****************+::.-*+++++++++++++*******************************************************+++++++++++++******************++==----+*+=------------------------------------:-:::-----------------::::::::::::::::::::::::::::::::::::::::::::::::::::::-====================-::::::-:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: ..::::::::---=-------------------::-------------:::---:::---------::::::::::::::::::::::--:::.............................:::::::::::::::::::::::::::::...............................................................................:::::::::::::::::.::::::::::::::::::::::::::--------------:::::------------------------------------::------------------------------------------------:::::::::::::::-----------------------------------------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::............:::::::::::::::::::::::::--:::::::::::::::::::--====+++++++++++++++===---:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.................................................::::--======--:::::::::::---===+++++++++++++++++++++++++======---:::::--==++++==---:::::::::::::::::::::::::::::::::::::::::::::--------------------------------------------===++++++*******################**+==-------------------------------------------====+++++++++++++++++++++=====--------------::::::::::::::::::::::::::::::::::::::::::::::----------------------===+++*****************************************+++===------------------------===============------:::::::::::::::::::::::------------------------------------------------------------------------------::::::::::::::::::::::::::::::::--===++++++++++++++++++++======++++++++++++++++++**********************************************************++++++*******************************************************************************************************************************************************************************************************************************************************************************************************#####################################################################################################################################################################################################################################################################################################################################################################**+++========+++****######################################################################################################***++============================================================++++
++++++++++++++++++++++++++++++*******************************+++++++++++++++++++++++++*********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*************#%*********++++==---::---------------------------------------------------------------------------::::::::::--------------------------------------------------------------------------------------------:::::............:::::------------------------------------------------------------------------------------------------------------------------------=%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::...................................................:::::::::::::::::::::::::::::::::::::::::::::::::::::::----==+***#########******###########***+==----:::::::::+%%##############%%%%%######******************#%##**********************+++++*++++++*+++++**##%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#################%%###########***+****++++++*#**+*#*++++++++++++#%%%*#@%%%%%@%%%@%%#***%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###############################################***************=:.::-*******++++**********************************************************+++++++++++++*******************+=-=---+**=------------------------------------:::::------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::-=====================-::--:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::. .:::::::--=--------------------------------:--::--::::::------:::::::::::::::::::::::::--::::::..........................:::::::::::::::::::::::::::::::...........................................................................:::::::::...........::::::::::::::::::::::::--------------:::::------------------------------------::-::---------------------------------------------:::::::::::::::-----------------------------------------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::..............................::::::::::::--::::::::::::::::::---====+++++++++++++++====--:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::...............................................::::::--======--:::::::::::---===++++++++++++++++++++++++=======---:::::--==++++==---::::::::::::::::::::::::::::::::::::::::::::---------------------------------------------===++++++*******################**+==------------------------------------------====+++++++++++++++++++++++=====-------------::::::::::::::::::::::::::::::::::::::::::::::---------------------===+++*******************************************+++===--------------------==================------:::::::::::::::::::::::---------------------------------------------------------------------------------:::::::::::::::::::::::::::::--===+++++++++++++++++++++=====++++++++++++++++++**********************************************************++++++*******************************************************************************************************************************************************************************************************************************************************************************************************#####################################################################################################################################################################################################################################################################################################################################################################**+++========+++****######################################################################################################***++============================================================++++
+++++++++++++++++++++++++++++******************************+++++++++++++++++++++++++++********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***************#%#********+++==---:::---------------------------------------------------------------------------::::::::::---------------------------------------------------------------------------------------------::::............:::::-------------------------------------------------------------------------------------------------------------------------------*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@=::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::...................................................::::::::::::::::::::::::::::::::::::::::::::::::::::::::----==++***#########################**++==----:::::::::#%%##############%%%######******************##%##*********************++++++++++*++*+++**#%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%################%###########***++***+++++++*#**+*#*+++++++*++++#%%%**%%%%%%%%%%@%%#***%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###############################################**************+:.::.-**********************************************************************+++++++++++++******************++==---++*=-------------------------------------:-::-------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::-========================--:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::. .::-::::----------------------------------:----:::::::::::-:::::::::::::::::::::::::::::::-:::::::.........................::::::::::::::::::::::::::::::::..............................................................................................::::::::::::::::::::::-------------:::::----------------------------------::::::::--------------------------------------------::::::::::::::------------------------------------------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.....::::::::::::........................................::::::::::::::::::::::::::----====+++++++++++++++====--::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::...............................:::::::::::.::::::::--===++===-:::::::::::---===++++++++++++++++++++++++=======---:::::--===++===---::::::::::::::::::::::::::::::::::::::::::::---------------------------------------------===++++++*******################**+==-----------------------------------------====+++++++++*********++++++++===-------------::::::::::::::::::::::::::::::::::::::::::::::---------------------===+++********************************************+++===---------------=====================-------:::::::::::::::::::::::------------------------------------------------------------------------------------::::::::::::::::::::::::::---==+++++++++++++++++++++=====++++++++++++++++++**********************************************************++++++*****************************************************************************************************************************************************************************************************************************************************************************************************######################################################################################################################################################################################################################################################################################################################################################################***+++=========+++***######################################################################################################***++============================================================++++
+++++++++++++++++++++++++++++**************************++++++++++++++++++++++++++++++*********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******************#%#*******++++==--::::---------------------------==---------------------------------------------:::::::::::---------------------------------------------------------------------------------------------:::::...........::::--------------------------------------------------------------------------------------------------------------------------------=%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@%::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::...................................................:::::::::::::::::::::::::::::::::::::::::::::::::::::::::----==++**#########################**++==-----:::::::=%%%#####%%%%%%%%%######********************#%%#**#******************++++++++++++++*++*#%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###########################***++****+++++++****+*#++++++++#+++*#%%%**%%%%%%@%%%%%%#***#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###############################################**************+:::::=**************#*******************************************************+++++++++++++*******************+=----+**+-------------------------------------:-::--------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::-=========================-:::::::::::::::::::::::::-:::::::::::::::::::::::::::::::::::::::::::::::::::. ..::::::--------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::.........................::::::::::::::::::::::::::::::::.............................................................................................:::::::::::::::::::-------------:::::---------------------------------::::::::::::------------------------------------------:::::::::::::----------------------------------------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::....................................................................::::::::::::::::::::::------====++++++++++++++++===--:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.............................:::::::::::::::::::::--==+++===--::::::::::---===+++++++++++++++++++++++========---:::::--===++===--:::::::::::::::::::::::::::::::::::::::::::::---------------------------------------------===++++++*******################**+==----------------------------------------====+++++++**************+++++++===------------::::::::::::::::::::::::::::::::::::::::::::::---------------------===+++********************************************+++===-------------======================--------::::::::::::::::::::::------------------------------------------------------------------------====----------:::::::::::::::::::::::::---==+++++++++++++++++++++=====++++++++++++++++++**********************************************************+++++****************************************************************************************************************************************************************************************************************************************************************************************************########################################################################################################################################################################################################################################################################################################################################################################***+++=========+++***#######################################################################################################**++============================================================++++
+++++++++++++++++++++++++++++*************************++++++++++++++++++++++++++++++++********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******************#%#*******+++==--:::::-------------------------=====--------------------------------------------:::::::::::---------------------------------------------------------------------------------------------:::::...........::::---------------------------------------------------------------------------------------------------------------------------------#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@*:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::...................................................:::::::::::::::::::::::::::::::::::::::::::::::::::::::::----==++***########################**++==-----:::::::*%%##%%%%%%%%%%%#####**********************#%%###********************+++++++++++++++**%@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##########################****++****+++++++***++**+++++++**+++*#%%%**%%%%%%@%%%%%%#***#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###############################################**************+:.:::+**************#********************************************************++++++++++++*******************++=---+**+-------------------------------------:-::--------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::-==========================-::::::::::::::::::::::--------:::::::::::::::::::::::::::::::::::::::::::::::: .::::::---------:--------------------------::::-:::::::::::::::::::::::::::::::::::::::::::::::::::::::...........................::::::::::::::::::::::::::::::..........................................................................................:::::::::::::::::::-------------::::--------------------------------::::::::::::::::---------------------------------------:::::::::::::-------------------------------------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.......................................................................:::::::::::::::::---------======+++++++++++++++===--:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::............................::::::::::::::::::::::--==++++==--::::::::::--====++++++++++++++++++++++=========---:::::--===++===--::::::::::::::::::::::::::::::::::::::::::::----------------------------------------------===++++*********################**+==---------------------------------------====++++++******************+++++====------------::::::::::::::::::::::::::::::::::::::::::::---------------------===+++**********************************************+++===-----------=======================----------:::::::::::::::::------------------------------------------------------------------------==========-------::::::::::::::::::::::::::--==+++++++++++++++++++++=====++++++++++++++++++**********************************************************+++++***************************************************************************************************************************************************************************************************************************************************************************************#************########################################################################################################################################################################################################################################################################################################################################################################***+++=========+++****######################################################################################################**++============================================================++++
+++++++++++++++++++++++++++++***********************++++++++++++++++++++++++++++++++++********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********************%%%*******+++=--::::::------------------------======--------------------------------------------::::::::::-----------------------------------------------------------------------------------------------:::::.........:::::---------------------------------------------------------------------------------------------------------------------------------+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@%@@%@=::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::...................................................::::::::::::::::::::::::::::::::::::::::::::::::::::::::::----==++**########################**++==--------:::=%%%%%%%%%%%%%#####************************#%%##*********************+++++++++++++*+*#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#########################****+++***+++++++++**++**+++++++#++++#%%%%**%%%%%%%%%%%%%#***#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###############################################**************=::::-+*************##********************************************************+++++++++++++******************++=-=-=*++-------------------------------------::::---------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::-=========================-:::::::::::::::::::::----------::::::::::::::::::::::::::::::::::::::::::::::::. .:-::::-----=---::--------------------:--::::::::::::::::::::::::::::::::::::::::::::::-::::::::::::-:::::................................:::::::::::::::::::::::::.......................................................................................::::::::::::::::::-------------:::::------------------------------:::::::::::::::::::--------------------------------------::::::::::::----------------------------------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::..........................................................................:::::::::::::::---------========++++++++++++++===--::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.........................:::::::::::::::::::::::--==+++++==--::::::::::--====++++++++++++++++++++++==========---::::---======---:::::::::::::::::::::::::::::::::::::::::::-----------------------------------------------===++++*********################**+==---------------------------------------===++++++********************+++++===-------------:::::::::::::::::::::::::::::::::::::::::::---------------------===+++**********************************************+++====--------------================---------------------------------------------------------------------------------------------------===============-----::::::::::::::::::::::::::--==+++++++++++++++++++++====+++++++++++++++++++***********************************************************++***************************************************************************************************************************************************************************************************************************************************************************************###**********##########################################################################################################################################################################################################################################################################################################################################################################***+++=========+++****######################################################################################################**+++===========================================================++++
++++++++++++++++++++++++++++++*******************++++++++++++++++++++++++++++++++++++*********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++************************#%%%#*****+++==--::::::------------------------=======-------------------------------------------::::::::::-----------------------------------------------------------------------------------------------:::::.........:::::----------------------------------------------------------------------------------------------------------------------------------#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@%-::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::....................................................::::::::::::::::::::::::::::::::::::::::::::::::::::::::::----==++***#######################**++===---------:*%%%%%%%%%%#####**************************#%%#*#*******************+++++++++++*++++#%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########################****+++****+++++++++**++++++++++**+++*##%%%**%%%%%%%%%%%%##***#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###############################################**************=:::-+*************##**********************************************************++++++++++++*******************+==--=*++--------------------------------------::::--------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::-============---===========::::::::::::::::::::--------------::::::::::::::::::::::::::::::::::::::::::::::. .:::::-----===--::-----------------------::-::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--::::............................::::::::::::::::::::::::::::....................................................................................::::::::::::::::::------------:::::-----------------------------:::::::::::::::::::::-------------------------------------::::::::::::------------------------------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.............................................................................::::::::::::::--------==============+++++++++====--::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.......................:::::::::::::::::::::::::--==+++++===--:::::::::--====+++++++++++++++++++++===========---::::---======---:::::::::::::::::::::::::::::::::::::::::::-----------------------------------------------===++++*********################**+==--------------------------------------====+++++**********************+++++===-------------::::::::::::::::::::::::::::::::::::::::::--------------------====++************************************************+++====---------------------------------------------------------------------------------------------------------------------------====================------:::::::::::::::::::::::::--==++++++++++++++++++++++===++++++++++++++++++****************************************************************************************************************************************************************************************************************************************************************************************************************************************************########################################################################################################################################################################################################################################################################################################################################################################################***+++=========+++****######################################################################################################**+++==========================================================+++++
++++++++++++++++++++++++++++++******************+++++++++++++++++++++++++++++++++++++*********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*************************#%%%#*****+++=---:::::------------------------========------------------------------------------:::::::::::------------------------------------------------------------------------------------------------::::.........::::-----------------------------------------------------------------------------------------------------------------------------------+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@#-:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::....................................................::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-----==++**######################***+++===---------%%%%%%%%%#####***********************+***#%####*******************+++++++++++++*+*#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######################**+**+++***++++++++++**++++++++++**+++###%%%**#%%%%%%%%%%%##***#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#%###############################################**************:::=+**************##**********************************************************++++++++++++********************+=--=**+--------------------------------------::::---------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::-===========:::-==========::::::::::::::::::::----------------:::::::::::::::::::::::::::::::::::::::::::::. .:::::---=====--::--------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::..........................::::::::::::::::::::::::::::::..................................................................................:::::::::::::::::------------:::::----------------------------::::::::::::::::::::::-------------------------------------::::::::::::----------------------------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::...............................................................................::::::::::::::------===================++++++====--::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::...................::::::::::::::::::::::::::::---==++++++==--:::::::::--====++++++++++++++++++++============---::::---======---::::::::::::::::::::::::::::::::::::::::::------------------------------------------------===++++*********################**+==--------------------------------------===++++*************************++++===-------------::::::::::::::::::::::::::::::::::::::::::--------------------====++************************************************+++====--------------------------------------------------------------------------------------------------======----------------======================-------:::::::::::::::::::::::::--==++++++++++++++++++++++===++++++++++++++++++***************************************************************************************************************************************************************************************************************************************************************************************************************************************************#########################################################################################################################################################################################################################################################################################################################################################################################***+++=========+++****######################################################################################################**+++==========================================================+++++
++++++++++++++++++++++++++++++****************+++++++++++++++++++++++++++++++++++++++*********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****************************%%%%%*****++==--::::::------------------------========------------------------------------------:::::::::::------------------------------------------------------------------------------------------------::::.........::::------------------------------------------------------------------------------------------------------------------------------------%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@*::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::....................................................::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::----===++**####################*****+++===--------#%%%%%#####***********************+++***######********************+++++*++*+++++*#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###############%#######**++++*++***++++++++++++++++++++++*+++*###%%%#*#%%%%%%%%%%%##****%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%################################################*************+::++***************##***********************************************************++++++++++++******************+++--=+*+=-------------------------------------::-:----------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::===========-::--=========-:::::::::::::::::::---------------:::::::::::::::::::::::::::::::::::::::::::::::. .::::----======-::::------------------------------::::::::::::::::::-::::::::::::::::::::::::::::::::::::::::::::::......................:::::::::::::::::::::::::::::::::::.............................................................................:::::::::::::::::------------:::::----------------------------:::::::::::::::::::::::------------------------------------::::::::::::-----------------------------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::...................................................................................:::--::::::::-----=======================+++=====--::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::...............::::::::::::::::::::::::::::::::--==+++++++==--:::::::::--====++++++++++++++++++==============---::::---======---:::::::::::::::::::::::::::::::::::::::::-------------------------------------------------===++++********#################**+==--------------------------------------==+++++**************************++++===--------------:::::::::::::::::::::::::::::::::::::::::-------------------===+++*************************************************++====------------------------------------------------------------------------------------------------============================================--------::::::::::::::::::::::::::--===+++++++++++++++++++++===+++++++++++++++++++*************************************************************************************************************************************************************************************************************************************************************************************************************************************************##########################################################################################################################################################################################################################################################################################################################################################################################***+++=========+++***#######################################################################################################**+++==========================================================+++++
+++++++++++++++++++++++++++++++**************++++++++++++++++++++++++++++++++++++++++*********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******************************%%%%%****+++=---::::::-----------------------=========------------------------------------------::::::::::-------------------------------------------------------------------------------------------------::::........:::::------------------------------------------------------------------------------------------------------------------------------------+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@%+:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::....................................................:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::----==++***################********++++====------#%######***********************+++++***#####*********************+++++++++++++++#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####################**++++++++***++++++++++++++++++++++*+++*##%%%%**#%%%%%%%%%%%##****%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%################################################**************++****************##*************************************************************+++++++++++*******************++=-=+*+=-------------------------------------::-:--------------:--------::::::::::::::::::::::::::::::::::::::::::::::::::::-===========:-::-========-:::::::::::::::::::----------------:::::::::::::::::::::::::::::::::::::::::::::::. .:::---========:..::::-----------------------------::::::::-::::::::::::::::::::::::::::::::::::::::::::::::::::::::::...................:::::::::::::::::::::::::::::::::::::...........................................................................:::::::::::::::::------------:::-----------------------------:::::::::::::::::::::::------------------------------------::::::::::::----------------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::..........................................................................................::----:::::::-----==============================---:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.............:::::::::::::::---::::::::::::::---==+++++++==--:::::::::--====++++++++++++++++================---::::---======---:::::::::::::::::::::::::::::::::::::::::-------------------------------------------------===++++********#################**+==-------------------------------------===++++***************************++++===--------------::::::::::::::::::::::::::::::::::::::::--------------------===+++*************************************************++====-----------------------------------------------------------------------------------------------===========================================----------::::::::::::::::::::::::::--===+++++++++++++++++++++===+++++++++++++++++++*************************************************************************************************************************************************************************************************************************************************************************************************************************************************##########################################################################################################################################################################################################################################################################################################################################################################################***++==========+++***#######################################################################################################***++==========================================================+++++
++++++++++++++++++++++++++++++++***********++++++++++++++++++++++++++++++++++++++++++*********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********************************#%%%%%***+++==--::::::-----------------------==========------------------------------------------::::::::::-------------------------------------------------------------------------------------------------::::........:::::-------------------------------------------------------------------------------------------------------------------------------------%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@%=::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::..............::....................................:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-----==++***###########**************++++====---+######******************+++++++++++***######*********************++++++++*++*+*#@@@@@@@@@@@@@@@@@@@@@%%%%@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#############%#######*+++++++++**++++++++++++++++++++++*++++###%%%%**#%%%%%%%%%%%##****%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%################################################*********************************##*************************************************************+++++++++++*******************+*+==+*+=--------------------------------------:-:--------------:--------::::::::::::::::::::::::::::::::::::::::::::::::::::-===========-::::-=======-::::::::::::::::::------------------:::::::::::::::::::::::::::::::::::::::::::::::. .::---====-====: ....::-------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.................:::::::::::::::::::::::::::::::::::::::........................................................................:::::::::::::::::-----------::-------------------------------:::::::::::::::::::::--------------------------------------::::::::::-------------------------::::::::::-------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---====+==++++++++++++==::...............................................................:::----:::::::------=============================---:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::............:::::::::::::::-----:::::::::::::--===+++++++==--:::::::::--====+++++++++++++++=================---:::::---=====---:::::::::::::::::::::::::::::::::::::::::--------------------------------------------------==+++++*******#################**+==-------------------------------------===++++****************************+++===--------------::::::::::::::::::::::::::::::::::::::::--------------------===+++*************************************************+++===---------------------------------------------------------------------------------------------=======================================---------------::::::::::::::::::::::::::::-===+++++++++++++++++++++===+++++++++++++++++++************************************************************************************************************************************************************************************************************************************************************************************************************************************************###########################################################################################################################################################################################################################################################################################################################################################################################**+++==========+++****######################################################################################################***++==========================================================+++++
+++++++++++++++++++++++++++++++++++****+++++++++++++++++++++++++++++++++++++++++++++**********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********************************#%%%%%#**+++==--::::::----------------------===========------------------------------------------::::::::::-------------------------------------------------------------------------------------------------::::........:::::-------------------------------------------------------------------------------------------------------------------------------------*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@%-::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.............:::::...................................::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::----===++***########*******++++++*****++++===-=####*******************++++++++++++****#####********+***********+++++++++++++++#@@@@%@@@@%%%%@@@@@%%%%%%%%%%%@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#############%#######**++++++++**+++++++++++++++++++++++++++*###%%%%**#%%%%%%%%%%%##****%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%################################################********************************##***************************************************************+++++++++++*******************++==+*+=--------------------------------------:::--------------::--------::::::::::::::::::::::::::::::::::::::::::::::::::::-===========-::::-=======::::::::::::::::::------------------::::::::::::::::::::::::::::::::::::::::::::::::. .::---=========: ...:::--------------------------------:::--:::-::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.................::::::::::::::::::::::::::::::::::::::......................................................................::::::::::::::::---------:::--------------------------------:::::::::::::::::::::--------------------------------------::::::::::-----------------------::::::::::::::::------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---=====+++++++===++++++++++++++++++++++==-:................................ ......................::-------:::::--------===========================---:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::...........:::::::::::::::-------::::::::::::--==+++++++++=--:::::::::--===+++++++++++++++==================---:::::---====----:::::::::::::::::::::::::::::::::::::::::--------------------------------------------------==+++++******##################**+==-------------------------------------===+++*****************************++++==--------------::::::::::::::::::::::::::::::::::::::::--------------------===++**************************************************+++===---------------------------------------------------------------------------------------------==================================-------------------:::::::::::::::::::::::::::::-===++++++++++++++++++++++=+++++++++++++++++++************************************************************************************************************************************************************************************************************************************************************************************************************************************************############################################################################################################################################################################################################################################################################################################################################################################################**+++==========+++****######################################################################################################***++==========================================================+++++
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***********************************#%%%%%#*+++==---:::::----------------------============-----------------------------------------:::::::::::-------------------------------------------------------------------------------------------------::::........:::::-------------------------------------------------------------------------------------------------------------------------------------=%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@*::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::............::::::...................................:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::----===++******#*******++++++++++******+++===*%###******************++++++++++++****#####********+++*********++++++++*++++++#@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####################**++++++++***+++++++++++++++++++++++++++####%%%%**#%%%%%%%%%%%##****%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%################################################********************************##***************************************************************+++++++++++*******************+*+=+*+=--------------------------------------::::--------------:---------:::::::::::::::::::::::::::::::::::::::::::::::::::-===========-:-:::-======-:::::::::::::::::------------------:::::::::::::::::::::::::::::::::::::::::::::::::. .:---====-=====: . .....:----------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::-:::::::::::::::..................::::::::::::::::::::::::::::::::::::...................................................................::::::::::::::::---------::----------------------------------:::::::::::::::::::---------------------------------------::::::::::-----------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::....:::---=====+++++++++==++++++++++++++++++++++++++++++++++++++=-:.............................................::---===---::::-----------=======================---::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::..........::::::::::::::::---=---:::::::::::---==+++++++++==--::::::::--===++++++++++++++====================---::::---====----:::::::::::::::::::::::::::::::::::::::::--------------------------------------------------==+++++******##################**+==-------------------------------------==++++******************************+++===--------------:::::::::::::::::::::::::::::::::::::::-------------------====++**************************************************+++===--------------------------------------------------------------------------------------------=============================-----------------------:::::::::::::::::::::::::::::::-===++++++++++++++++++++++++++++++++++++++++++************************************************************************************************************************************************************************************************************************************************************************************************************************************************############################################################################################################################################################################################################################################################################################################################################################################################**+++===========++****######################################################################################################***++==========================================================+++++
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++************************************%%%%%%#*+++==--::::::---------------------=============-----------------------------------------::::::::::--------------------------------------------------------------------------------------------------::::........::::---------------------------------------------------------------------------------------------------------------------------------------#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::............::::::::..................................::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::----===++***********+++++==+++++*******+++=+##*#******************++++++++++++****#####********+++++++++++++++++++++++++++*%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#############%#######**++++++++**+++++++++++++++++++++++++++*###%%%%%**#%%%%%%%%%%%##****%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###############################################********************************###****************************************************************++++++++++******************++++++++=---------------------------------------:::--------------:----------:::::::::::::::::::::::::::::::::::::::::::::::::::============-:::::-=====-::::::::::::::::::------------------:::::::::::::::::::::::::::::::::::::::::::::::-:. .:----=-=======: .. ...::-------------------------------------::::::::::::::::::::::::::::::::::::::::::::::-::::::::::::::::::...................:::::::::::::::::::::::::::::::::::................................................................::::::::::::::::--------------------------------------------:::::::::::::::::::---------------------------------------::::::::::---------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::...::::--=====================++======++++++++++++++++++++++++++++++++++++++==--:.... ........ .......................::--====----::----------------===================---::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::..........:::::::::::::::---===---::::::::::--==++++++++++==--::::::::--===++++++++++++++====================---::::----===---::::::::::::::::::::::::::::::::::::::::----------------------------------------------------===++++******##################**+==-------------------------------------==+++*******************************+++===--------------:::::::::::::::::::::::::::::::::::::::-------------------===+++**************************************************+++===-------------------------------------------------------------------------------------------=====================----------------------------:::::::::::::::::::::::::::::::::::-===++++++++++++++++++++++++++++++++++++++++++************************************************************************************************************************************************************************************************************************************************************************************************************************************************############################################################################################################################################################################################################################################################################################################################################################################################**+++===========++****#######################################################################################################**++==========================================================+++++
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*************************************#%%%%%%%*++===--:::::---------------------==============-----------------------------------------::::::::::-------------------------------------------------------------------------------------------------:::::........::::---------------------------------------------------------------------------------------------------------------------------------------+%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@%-:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::..........::::::::::.................................::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::----===+++*******++++=======+++********+++*###*****************+++++++++++++****#####*******+++*++*++++++++++++++++++++++%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#############%########*++++++++++++++++++++++++++++++++++++++####%%%%#**#%%%%%%%%%%%##****%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%################################################********************************##*****************************************************************+++++++++++*****************+*++***+=---------------------------------------:::--------------:----------:::::::::::::::::::::::::::::::::::::::::::::::::::-============::-:::-====-::::::::::::::::::------------------::::::::::::::::::::::::::::::::::::::::::::::::::. .:---==-======-: .. ..:--------------------------------------:::::::::::::::::::::::::::::::::::::::-::::::::::::::::::::::::::....................::::::::::::::::::::::::::::::::..............................................................:::::::::::::::::--------------------------------------------:::::::::::::::::----------------------------------------::::::::::--------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::...::::---==============================++++++++++++++++++++++++++++++++++++++++++++++++==--:...... ..................::--======-----------------------================---::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.........:::::::::::::::--=====---::::::::--===++++++++++==--::::::::--===+++++++++++++=====---=============---::::----==----::::::::::::::::::::::::::::::::::::::::----------------------------------------------------===++++*****###################**+==------------------------------------===+++*******************************+++===---------------::::::::::::::::::::::::::::::::::::::-------------------===+++***************************************************++===-------------------------------------------------------------------------------------------===============-----------------------------::::::::::::::::::::::::::::::::::..:::--===++++++++++++++++++++++++++++++++++++++++++**********************************************************************************************************************************************************************************************************************************************************************************************************************************************##############################################################################################################################################################################################################################################################################################################################################################################################**+++===========++****#######################################################################################################**+++=========================================================++++*
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**************************************##%%%@%%%*++==----:::---------------------===============-----------------------------------------::::::::::-------------------------------------------------------------------------------------------------:::::........::::----------------------------------------------------------------------------------------------------------------------------------------#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@#:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::............::::::::::.................................::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---====+++++++++++========+++*********++##***************++++++++++++++++****#####*******+++++++++++++++++++++++++++++*@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#############%######***+++++++++++++++++++++++++++++++++++++*%#%#%%%%#**#%%%%%%%%%%%##****%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%################################################*******************************###******************************************************************++++++++++******************+*++**+=---------------------------------------::::-------------:----------:::::::::::::::::::::::::::::::::::::::::::::::::::-============-::::::--===:::::::::::::::::::-----------------:::::::::::::::::::::::::::::::::::::::::::::::::::. .:---==-==-====. .. . ... ..::-------------------------------------:::::::::::::::::::::::::::::::::-:::::::::::::::::::::::::::::::::::.....::::::........:::::::::::::::::::::::::::::::............................................................::::::::::::::::---------=----------------------------------::::::::::::::::------------------------------------------:::::::::-------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---========================================+++++++++++++++++++++++++++++++++++++++++++++++++++++=-:...... .............::--=======------------------------=============---:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.........::::::::::::::---==+===--::::::::--==+++++++++++==--::::::::--===+++++++++++++====------======++===---:::::---==----::::::::::::::::::::::::::::::::::::::::----------------------------------------------------===++++*****###################**+==------------------------------------===+++*******************************+++===---------------::::::::::::::::::::::::::::::::::::::-------------------===+++***************************************************++===--------------------------------------------------------------------------------------------=========-----------------------------:::::::::::::::::::::::::::::::::::::::..:::--===++++++++++++++++++++++++++++++++++++++++++**********************************************************************************************************************************************************************************************************************************************************************************************************************************************##############################################################################################################################################################################################################################################################################################################################################################################################**+++===========++****#######################################################################################################**+++=========================================================++++*
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******************************************#%%%%%%%*+===----------------------------===============-----------------------------------------::::::::::-------------------------------------------------------------------------------------------------:::::.......:::::----------------------------------------------------------------------------------------------------------------------------------------+%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::..........:::::::::::::................................:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::----===+++++++++======-==+++*********+*#*************++++++++++++++++++****#####********+++++++++++++++++++++++++++++%@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#############%######****++++++++++++++++++++*++++++++++++++++#%#%#%%%%#**#%@%%%%%%%%%##****%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%################################################*******************************###***************************************************#**************+++++++++++*****************+++++**=----------------------------------------:-:-------------:-----------:::::::::::::::::::::::::::::::::::::::::::::::::::-============::::-:::-==-::::::::::::::::::::---------------::::::::::::::::::::::::::::::::::::::::::::::::::::. .:----===-=====. . .. ......:---------------------------------------:::::::--:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::........:::::::::::::::::::::::::::::::.........................................................:::::::::::::::::---:--=------------------------------------.:::::::::::::-------------------------------------------:::::::::-------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::----===--================================================++=++++++++================----:::...............:-====-:.............::--=========---------------------------=======----::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.........::::::::::::::--===++===--:::::::--==+++++++++++==--::::::::--===+++++++++++++===--------=====+====---:::::---------::::::::::::::::::::::::::::::::::::::------------------------------------------------------===++++*****###################**+==------------------------------------===+++*******************************+++===---------------:::::::::::::::::::::::::::::::::::::--------------------===+++***************************************************++===----------------------------------------------------------------------------------------------==-----------------------------:::::::::::::::::::::::::::::::::::::::::::::.:::--===+++++++++++++++++++++++++++++++++++++++++**********************************************************************************************************************************************************************************************************************************************************************************************************************************************##############################################################################################################################################################################################################################################################################################################################################################################################***+++===========+++***#######################################################################################################**+++=========================================================++++*
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********************************************#%%%%%%%#+==----------------------------================-----------------------------------------::::::::::-------------------------------------------------------------------------------------------------::::........::::------------------------------------------------------------------------------------------------------------------------------------------+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@%=:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.........::::::::::::::................................:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---====+++++++===---===+++*****#****##***********+++++++++++++++++++****#####******++++++++++++++++++++++++++++++++@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####%%#####################***++++++++++++++++++++**+++++++++++++++*%%%#%%%%%***#%%%%%%%%%%###****%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###############################################*******************************###****************************************************##**************++++++++++********************+***=----------------------------------------:-:-------------::----------:::::::::::::::::::::::::::::::::::::::::::::::::::-============-::-:::::-=-::::::::::::::::::::---------------:::::::::::::::::::::::::::::::::::::::::::::::::::::. .---==---=====-. . .............::---------------------------------------::::::::-:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--::.........::::::::::::::::::::::::::.........................................................::::::::::::::::-:-:--==------------::----------------------:.:::::::::::--------------------------------------------:::::::::------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::----------------=========================================--------------------------------------------------:::. ......::::.........:---===========-----------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.........::::::::::::::--==++++==--::::::--===+++++++++++==--::::::::--===++++++++++++===----------====++===---:::::---------::::::::::::::::::::::::::::::::::::---------------------------------------------------------==++++*****###################**+==------------------------------------===+++*******************************+++===---------------:::::::::::::::::::::::::::::::::::::-------------------====+++***************************************************++===------------------------------------------------------------------------------------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::.:::--==++++++++++++++++++++++++++++++++++++++++++**********************************************************************************************************************************************************************************************************************************************************************************************************************************************##############################################################################################################################################################################################################################################################################################################################################################################################***+++===========+++***#######################################################################################################**+++========================================================+++++*
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********************************************#%%%%%%%%#+==---------------------------=================-----------------------------------------::::::::::-------------------------------------------------------------------------------------------------::::........::::-------------------------------------------------------------------------------------------------------------------------------------------*%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@%@%::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::........::::::::::::::::................................::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---====+++++===----===+++*****#***##*********++++++++++++++++++++++****####*******+++++++++++++++++++++++++++++++*@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####################%######****++++++++++++++++++++**+++++++++++++++#%%%#%%%%%***#@%%%%%%%%%###****%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###############################################*******************************###***************************************************###***************+++++++++************************=------------------------------------------:-------------::-----------:::::::::::::::::::::::::::::::::::::::::::::::::::=============-::::::::-=-::::::::::::::::::::--------------::::::::::::::::::::::::::::::::::::::::::::::::::::::. :---------=====. . .... ........:------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::..........:::::::::::::::::::::::::::::::::.......................................................:::::::::::::::--::-===-----------::.::--------------------:.::::::::::----------------------------------------------:::::::::-----------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-----------------------------================-------------------------------------------------------------------------:.. . .. ......::--==================----------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::..........:::::::::::::--==++++===-::::::--==+++++++++++++==--:::::::--===+++++++++++====---:::----===+++===----::::---------::::::::::::::::::::::::::::::::::-----------------------------------------------------------===+++*****###################**+==-------------------------------------==+++*******************************+++===---------------:::::::::::::::::::::::::::::::::::::-------------------====+++***************************************************+++==---------------------------------------------------------------------------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::.:.:::--==++++++++++++++++++++++++++++++++++++++++++**********************************************************************************************************************************************************************************************************************************************************************************************************************************************##############################################################################################################################################################################################################################################################################################################################################################################################***+++===========+++***#######################################################################################################**+++========================================================+++++*
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********************************************%%%%%%%%#+=----------------------------=================-----------------------------------------:::::::::--------------------------------------------------------------------------------------------------::::.......:::::--------------------------------------------------------------------------------------------------------------------------------------------#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@%@@%@#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::..........:::::::::::::::::................................:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---===++++===-=---===++**********##********++++++++++++++++++++++****####*******++++++++++++++++++++++++++++++++*@@@@@@@@@@@%%%%%%%%%%%%%%%%@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##########################*****++++++++++++++++++++*+++++++++++++++*%%%%%%%%%%***%@%%%%%%%%%###****%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###############################################*******************************####***************************************************####**************++++++++++***********************=--------------------------------------:---:-------------::-----------:::::::::::::::::::::::::::::::::::::::::::::::::::-=============-:::::-::--:::::::::::::::::::::-------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::. .:----=-----====. . .................:-------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.....................................................::::::::::::::::-:-===----------:-:...:--:------------------:.:::::::::-----------------------------------------------::::::::----------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---------------------------==---------------::....:----------------------------------------------------------------------------:. . . .........:--=====================-------------------------:::::.......:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::............:::::::::::--==++++===--:::::--==+++++++++++++==--:::::::--===+++++++++++===----::::---===++++==----:::::--------::::::::::::::::::::::::::::::::::-----------------------::----------------------------------===+++*****###################**+==-------------------------------------==+++*******************************+++===---------------:::::::::::::::::::::::::::::::::::::-------------------====+++***************************************************+++==-------------------------------------------------------------------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---==+++++++++++++++++++++++++++++++++++++++++***********************************************************************************************************************************************************************************************************************************************************************************************************************************************##############################################################################################################################################################################################################################################################################################################################################################################################***+++===========+++***#######################################################################################################**+++========================================================+++++*
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********************************************#%%%%%%%#+=---------------------------==================----------------------------------------::::::::::--------------------------------------------------------------------------------------------------::::.......:::::--------------------------------------------------------------------------------------------------------------------------------------------=%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@%@@@@@@@+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::..........:::::::::::::::::::..............................:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---========-----====+++********##*******++++++++++++++++++++++++***####*******+++++++++++++++++++++++++++++++++*%@@@@@@@@@@@%%%%%%%%%%%%%%%@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###################%######****++++++++++++++++**+++*+++++++++++++++#%%%%%%%%%#***%%%%%%%%%%%###****%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%################################################*******************************###*****************************************************####**************+++++++++***********************=--------------------------------------:------------------:------------::::::::::::::::::::::::::::::::::::::::::::::::::-==============:::::::::::::::::::::::::::::::-------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::. .---------=-===-. .. ..................:--------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.....................................................:::::::::::::::::-===-----------:.....:--------------------:..:::::::------------------------------------------------::::::::---------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-----------------------------------------:::......::----------------------------------------------------------------------------------:. .. ......::--=======================----------------------:::::..........:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.................:::::--==++++++==---:::--==++++++++++++++==--::::::---===+++++++++++===---::::::---===+++===---:::::--------::::::::::::::::::::::::::::::::------------------------:::----------------------------------===++++****###################**+==-------------------------------------==+++*******************************+++===---------------:::::::::::::::::::::::::::::::::::::-------------------====+++***************************************************+++==----------------------------------------------------------------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--===+++++++++++++++++++++++++++++++++++++++++***********************************************************************************************************************************************************************************************************************************************************************************************************************************************###############################################################################################################################################################################################################################################################################################################################################################################################**+++===========+++***#######################################################################################################**+++========================================================++++**
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++************************************************#%%%%%%%#+=--------------------------===================----------------------------------------::::::::::-------------------------------------------------------------------------------------------------:::::.......::::----------------------------------------------------------------------------------------------------------------------------------------------*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@%@@@@=::::::::::::::::::::::::::::::::::::::::::::::::::::::::::...........:::::::::::::::::::..............................:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---=======----=*%#++++++++++**##******+++++++++++++++++++++++++***####*******+++++++++++++++++++++++++++++++++++#@@@@@@@@@@@%%%%%%%%%%%%%%%@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###################%######*****++++++++++++++++**++*+++++++++++++++*%%%%%%%%%%#***%%%%%%%%%%%###****%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%################################################******************************####*****************************************************####**************+++++++++**********************+=----------------------------------------:----------------:------------:::::::::::::::::::::::::::::::::::::::::::::::::::-=+===========-::::::-:::::::::::::::::::::::-------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::..::---------====-. . ....................:----------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::...................................................::::::::::::::::-=====---------:.......:-------------------:..::::::-------------------------------------------------:::::::::--------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---------------------------------------::::........::-----------------------------------------------------------------------------------------:. ........::--=========================-------------------::::::...............:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::...................:::--==+++++++==--::---==++++++++++++++==--::::::---===+++++++++++===--:::::::---===+++===---:::::--------:::::::::::::::::::::::::::::::-------------------------::::---------------------------------===++++****###################**+==-------------------------------------===++*******************************+++==----------------:::::::::::::::::::::::::::::::::::::------------------=====+++***************************************************+++===---------------------------------------------------------------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.:::::--===+++++++++++++++++++++++++++++++++++++++++***********************************************************************************************************************************************************************************************************************************************************************************************************************************************###############################################################################################################################################################################################################################################################################################################################################################################################**+++===========+++***#######################################################################################################***++========================================================++++**
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++************************************************########*+--------------------------====================----------------------------------------::::::::::-------------------------------------------------------------------------------------------------::::........::::-----------------------------------------------------------------------------------------------------------------------------------------------#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@%@@@@%@%-::::::::::::::::::::::::::::::::::::::::::::::::::::::::...........::::::::::---:::::::..............................::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---===--===-+#%%###**+++++***#******++++++++++++++++++++++++++**####*******++++++++++++++++++++++++++++++++++++*%@@@@@@@@@@%%%%%%%%%%%%%%@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###################%#####******+++++++++++++++**+++*+++++++++++++++#%%%%%%%%%%***#%%%%%%%%%%%###****%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###############################################*******************************####*****************************************************#####**************+++++++++*********************+=----------------------------------------:----------------:------------::::::::::::::::::::::::::::::::::::::::::::::::::::-=============-:::::::-:::::::::::::::::::::-------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::-:..:---------=-===-..........................::----------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::...................................................::::::::::::::-=====---------::.......:--------------------:.:::::--------------------------------------------------:::::::::-------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--------------------------------------:::..........::------------------------------------------------------------------------------------------------:. .....:---==========================-------------::::::::::..................:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::...................:::--==+++++++===-----===++++++++++++++==--::::::---===++++++++++===---:::::::---===+++===----::::--------::::::::::::::::::::::::::::::--------------------------::::---------------------------------===++++****###################**+==-------------------------------------===+++*****************************+++===----------------:::::::::::::::::::::::::::::::::::::---------------=--=====+++***************************************************+++===--------------------------------------------------------------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.::::---===++++++++++++++++++++++++++++++++++++++++************************************************************************************************************************************************************************************************************************************************************************************************************************************************###############################################################################################################################################################################################################################################################################################################################################################################################**+++===========+++***#######################################################################################################***++========================================================++++**
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**************************************************######*++--------------------------====================----------------------------------------:::::::::--------------------------------------------------------------------------------------------------::::........::::-----------------------------------------------------------------------------------------------------------------------------------------------+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@#::::::::::::::::::::::::::::::::::::::::::::::::::::::.............::::::::::---:::::::..............................:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::------+#%**%%#########************++++++++++++++++++++++++++***###*******++++++++++++++++++++++++++++++++++++++#@@@@@@@@@@%%%%%%%%%%%%%%@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#%%%%%##################%#####******++++++++++++++++**+++*++++++++++++++*%%%%%%%%%%%***#%@%%%%%%%%%###****%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###############################################******************************####*******************************************************#####**************++++++++*********************+=----------------------------------------::-:-------------:------------::::::::::::::::::::::::::::::::::::::::::::::::::::::=============-:::::-::::::::::::::::::::::-------------::::::::::::::::::::::::::::::::::::::::::::::::::::-::::-:.::---------=====-. ..........................:---------------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.................................................:::::::::::::-=====-------:-:.........--------------------:.:::::--------------------------------------------------::::::::::-----:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-------------------------------------::::::::::::------------------------------------------------------------------------------------------------------------.....::--============================-----------::::::::::.......................:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::....................::--==++++++++==----===+++++++++++++++===-::::::---===++++++++++===---:::::::---==++++===----::::-------:::::::::::::::::::::::::::::::-------------------------:::::---------------------------------===++++****###################**+==--------------------------------------==+++*****************************+++===----------------:::::::::::::::::::::::::::::::::::::-------------=-========+++***************************************************+++===---------------------------------------------------------------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---===++++++++++++++++++++++++++++++++++++++++************************************************************************************************************************************************************************************************************************************************************************************************************************************************###############################################################################################################################################################################################################################################################################################################################################################################################**+++===========+++***#######################################################################################################***++========================================================++++**
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********************************************************++=-------------------------=====================----------------------------------------::::::::---------------------------------------------------------------------------------------------------::::........::::------------------------------------------------------------------------------------------------------------------------------------------------#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@*::::::::::::::::::::::::::::::::::::::::::::::::::::.............:::::::::---:-:::::::..............................::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-:-+#%%%%%%#######*************++++++++++++++++++++++++++++**###*******+++++++++++++++++++++++++++++++++++++++*#@@@@@@@@@%%%%%%%%%%%%%%@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##%%%%%########################******+++++++++++++++**+++++++++++++++++++##%%%%%%%%%#***%%%%%%%%%%%####****%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%################################################******************************###*********************************************************####***************+++++++*********************+----------------------------------------------------------::-----------:::::::::::::::::::::::::::::::::::::::::::::::::::::::-============-:::::::::::::::::::::::::::::---------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::----------====-..............................:-----------------------------------------------------:------------::--::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.................................................::::::::::::-====---------:-..........:--------------------:::::---------------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--:::-:--------------------------------------------------------------------------------------------------------------------------------------------------------------:.:::-=============================----------::::::::::.............................:::::::::::::::::::::::::::::::::::::::::::::::::::::.....................::--==++++++++=========++++++++++++++++==--:::::---==+++++++++++===--::::::::---==+++++==----::::--------::::::::::::::::::::::::::----------------------------::::::---------------------------------===++++****###################**+==--------------------------------------==+++*****************************+++==-----------------:::::::::::::::::::::::::::::::::::::-----------=---=-======++****************************************************+++===---------------------------------------------------------------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---====+++++++++++++++++++++++++++++++++++++++********************************************************************************************************************************************************************************************************************************************************************************************************************************************####################################################################################################################################################################################################################################################################################################################################################################################################**+++===========++****#######################################################################################################***++=======================================================+++++**
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******************************************************+++=--------------------------=====================----------------------------------------::::::::---------------------------------------------------------------------------------------------------::::.......:::::------------------------------------------------------------------------------------------------------------------------------------------------+%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@%=::::::::::::::::::::::::::::::::::::::::::::::::::..............:::::::::-----:::::::..............................:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::..::::::=#%%%%%%########**************+++++++++++++++++++++++++++**###*******+++++++++++++++++++++++++++*++++++++++++*#@@@@@@@@@%%%%%%%%%%%%%@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###%%%%##################%%####*******+++++++++++++++**+++*++++++++++++++*#%%%%%%%%%%****%@%%%%%%%%%####***#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###############################################*******************************###**********************************************************####**************+++++++*********************+----=---------------------------------------:-------------::-----------::::::::::::::::::::::::::::::::::::::::::::::::::::::::--==--=======::-::::::::::::::::::::::::::---------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-----------===-:...............................::----------------------------------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::..............................................:::::::::::---====-------:-:..........:--------------------:::::--------------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::----:---------------------------------------------------------------------------------------------------------------------------------------------------------------------=============================----------::::::::::................................::::::::::::::::::::::::::::::::::::::::::::::::::.....................::--==+++++++++=======+++++++++++++++++==--:::::--===++++++++++===---::::::::---==+++++==----::::--------::::::::::::::::::::::::::----------------------------::::::----------------------------------==++++****###################**+==--------------------------------------===+++***************************+++===-----------------:::::::::::::::::::::::::::::::::::::---------------========++****************************************************+++===----------------------------------------------------------------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---====+++++++++++++++++++++++++++++++++++++++*******************************************************************************************************************************************************************************************************************************************************************************************************************************************#####################################################################################################################################################################################################################################################################################################################################################################################################**+++==========+++****#######################################################################################################***++=======================================================++++***
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****************************************************+++++==--------------------------======================----------------------------------------:::::::-------===------------------------------------------------------------------------------------------::::.......:::::-------------------------------------------------------------------------------------------------------------------------------------------------#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@%:::::::::::::::::::::::::::::::::::::::........................::::::::-------:::::::..............................::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-::::::::::...:-#%%%%%%####****************++++++++++++++++++++++++++++++**###*******++++++++++++++++++++++++++++++++++++++++*#%@@@@@@@@@%%%%%%%%%%%%%@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##%#%%%##################%#####*******++++++++++++++**++++**+++++++++++++##%%%%%%%%@#***#%@%%@%%%%%%####***#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###############################################******************************####**********************************************************#####**************+++++++********************+----==--------------------------------------:-------------::-----------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--:-=======-::::::::::::::::::::::::::::---------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::------------===-:.................................::----------------------------------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::...............................................:::::::::==-===---------:............--------------------::::---------------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::------------------------------------------------------------------------------------------------------------------------------------------------------=============================---------:::::::::::....................................::::::::::::::::::::::::::::::::::::::::::::::.....................::--==++++++++++=====++++++++++++++++++==--:::::--===++++++++++===---::::::::---==+++++===---::::--------::::::::::::::::::::::::::----------------------------::::::----------------------------------==++++****###################**+==---------------------------------------==+++***************************+++===-----------------:::::::::::::::::::::::::::::::::::::---------------========++****************************************************+++===-----------------------------------------------------------------------------------------------------:::::::::::::::::::::::::::::::-------------------:::::::::::::::::::---====++++++++++++++++++++++++++++++++++++++********************************************************************************************************************************************************************************************************************************************************************************************************************************************#####################################################################################################################################################################################################################################################################################################################################################################################################**+++==========+++****#######################################################################################################***++=======================================================++++***
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****************************************************+++===---------------------------=======================---------------------------------------:::::::-----========---------------------------------------------------------------------------------------::::.......::::--------------------------------------------------------------------------------------------------------------------------------------------------=%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@*:::::::::::::::::::::::::::::::::........................::...::::::::-------:::::::.............................:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.....-*%%%%%%%#****##*************++++++++++++++++++++++++++++++**###*******+++++++++++++++++++++++++++++++++++++**#%%@@@@@@@@@@%%%%%%%%%%%%%@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##%#%%%#######################*******+++++++++++++++**+++**+++++++++++++*##%%%%%%%%%****%%@%%@%%%%%%####***#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###############################################******************************###************************************************************#####*************+++++++********************+----+=--------------------------------------:-------------:::-----:----::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-=======-:-:::::::::::::::::::::::::--------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--------------===-:...................................::-----------------------------------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::..............................................::::::::-=-==-=---------.............:--------------------:::--------------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.::::::------------------------------------------------------------------------------------------------------------------------------------------------------------============================--------:::::::::::.........................................:::::::::::::::::::::::::::::::::::::::::......... ......::--==+++++++++++++++++++++++++++++++++==--:::::--===+++++++++===---:::::::::---==+++++===---:::::-------:::::::::::::::::::::---------------------------------::::::----------------------------------==++++****###################**+==---------------------------------------===+++*************************+++===-----------------::::::::::::::::::::::::::::::::::::::---------------========++****************************************************+++===------------------------------------------------------------------------------------------------------::::::::::-----------------------------------------::::::::::::::::---=====++++++++++++++++++++++++++++++++++++++*******************************************************************************************************************************************************************************************************************************************************************************************************************************************######################################################################################################################################################################################################################################################################################################################################################################################################***++=========++++****#######################################################################################################***++======================================================++++****
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****************************************************+++==---------------------------========================---------------------------------------::::::----===========-------------------------------------------------------------------------------------:::::.......::::---------------------------------------------------------------------------------------------------------------------------------------------------*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@=:::::::::::::::::::::::::::::::..............................:::::::---------::::::.............................::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.....+%%%%%%%#******************++++++++++++++++++++++++++++++++***##********+++++++++++++++++++++++++++++++++++**%%@@%@%%@@@@@%%%%%%%%%%%%%%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##%%%%%%################%######*******++++++++++++++**+++***+++++++++++++*#%%%%%%%%%#***#%%@%%@%@%@%####****%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###############################################*****************************####*************************************************************####**************+++++++*******************+----+=--------------------------------------:--------------::-----:------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-========-::::::::::::::::::::::::::--------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--------------====-:......................................:------------------------------------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::........................................::::::::::-=--===---------:.............:--------------------:::------------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::..::::-------------------------------------------------------------------------------------------------------------------------------------------------------------------==========================--------::::::::::...........................................:::::::::::::::::::::::::::::::::::::::......... ....::--==+++++++++++++++++++++++++++++++++==--:::::--===+++++++++===---:::::::::--===+++++===---:::::-------:::::::::::::::::::::---------------------------------:::::::---------------------------------==++++****###################**+==----------------------------------------===+++***********************+++====-----------------::::::::::::::::::::::::::::::::::::::---------------========+++***************************************************+++===-----------------------------------------------------------------------------------------------------------------------------------------------------------::::::::::::::---=====+++++++++++++++++++++++++++++++++++++********************************************************************************************************************************************************************************************************************************************************************************************************************************************######################################################################################################################################################################################################################################################################################################################################################################################################***++=========+++****########################################################################################################***++======================================================++++****
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******************************************************+++==---------------------------========================---------------------------------------::::::---=====+++=====------------------------------------------------------------------------------------:::::.......::::---------------------------------------------------------------------------------------------------------------------------------------------------=%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@%:::::::::::::::::::::::::::::::.............................::::::::---------::::::.............................::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::...=#%%%%%%#*#####**********+++++++++++++++++++++++++++++++++++**###********+++++++++++++++++++++++++++++++++++*#%@@@%%%%%%%%%%%%%%%%%%%%%%%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##%#%%%%################%#####********+++++++++++++***++***+++++++++++++*##%%%%%%%%%****#@@@%%@%@%@%####****%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###############################################*****************************###**************************************************************#####**************++++++*******************+----+=-----------------------------------------------------::-----:------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-=======-:::-::::::::::::::::::::::--------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--------------====-:........................................::-------------------------------------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::....................................::::::::::::--==-==--------:...............---------------------::---------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::........::::----------------------------------------------------------------------------------------------------------------------------------------------------------------------------=======================--------::::::::::............................................::::::::::..........:::..::::::::.............. ....::--==+++++++++++++++++++++++++++++++++==--:::::--===+++++++++===--::::::::::--===++++++==----::::-------::::::::::::::::::::----------------------------------:::::::---------------------------------==++++****###################*++==-----------------------------------------==++++*********************++++===-----------------:::::::::::::::::::::::::::::::::::::::------------------=====+++***************************************************+++===------------------------------------------------------------------------------------------------------------------------------------------------------------::::::::::::---=======++++++++++++++++++++++++++++++++++++********************************************************************************************************************************************************************************************************************************************************************************************************************************************######################################################################################################################################################################################################################################################################################################################################################################################################***+++========+++****########################################################################################################***++=====================================================+++++****
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*************************+++***************************++===-------------------------=========================---------------------------------------:::::---====+++++++====-----------------------------------------------------------------------------------::::.......:::::----------------------------------------------------------------------------------------------------------------------------------------------------*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@*.::::::::::::::::::::::::::................................::::::::---------::::::.............................:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::. :#%%%%%%#*##*#************++++++++++++++++++++++++++++++++++++**##********++++++++++++++++++++++++++++++++++*#%@%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###%#%%%%###############%######*********++++++++++++**+++***+++++++++++++*##%%%%%%%%#****%@@@@@%@@%%%####****%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%################################################***************************####***************************************************************#####**************+++++*******************+----++-----------------------------------------------------::-----:------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-======-::-::-:::::::::::::::::::--------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--------------====-:...........................................:---------------------------------------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.................................::::::::::---==-==-------::...............:--------------------:::-----------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::--:::::::::::::::::.......:::::------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------=====================---------:::::::::.............................................:::::::...................................... ....::--==+++++++++++++++++++++++++++++++++==--:::::--===++++++++===---::::::::::--===++++++==----::::-::---::::::::::::::::::::-----------------------------------:::::::---------------------------------===+++****##################**++=------------------------------------------===++++*******************++++===------------------::::::::::::::::::::::::::::::::::::::--------------------====+++***************************************************+++===-------------------------------------------------------------------------------------------------------------------------------------------------------------:::::::::::---=======+++++++++++++++++++++++++++++++++++********************************************************************************************************************************************************************************************************************************************************************************************************************************************#######################################################################################################################################################################################################################################################################################################################################################################################################***+++========++****#########################################################################################################**+++=====================================================++++*****
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********************++++++++++***********************++==--------------------------=========================---------------------------------------:::::---===+++++++++===-----------------------------------------------------------------------------------::::.......:::::----------------------------------------------------------------------------------------------------------------------------------------------------=%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@=.:::::::::::::::::::::::..................................:::::::----------::::::.............................:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::. =%%%%%%###**##*##********+++++++++++++++++++++++++++++++++++++**##*********+++++++++++++++++++++++++++++++++*#%@%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###%%%%%%%#%############%%####***********+++++++++++***+++**++++++++++++++*##%%%%%%%%****#@@%%@@%@@%%%####****%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%################################################***************************####****************************************************************####**************++++++******************+---=++------------------------------------:--:-------------::-----:------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-======-::::-:::::::::::::::::::-------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--------------=====-:.............................................:----------------------------------------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::..........................::::::::::---=--==--------:................:-----::-------------:::--------:::::--------------------------::::::::::::::::....:::::::::::::::::::::::::::::::::::::::::::::.:::::::::-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------===================---------::::::::::.............................................:::::....................................... .....:--==+++++++++++++++++++++++++++++++++==--:::::--===++++++++===---::::::::::--===++++++===---::::-::::::::::::::::::::::::------------------------------------:::::::---------------------------------===+++****##################**++=-------------------------------------------===+++++****************++++====-----------------:::::::::::::::::::::::::::::::::::::::--------------------====+++***************************************************+++===--------------------------------------------------------------------------------------------------------------------------------------------------------------:::::::::---========+++++++++++++++++++++++++++++++++++********************************************************************************************************************************************************************************************************************************************************************************************************************************************########################################################################################################################################################################################################################################################################################################################################################################################################**+++=======+++****#########################################################################################################**+++=====================================================++++*****
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++************+++++++++++++++++++++++++********************************+++++++++++++++++++++++++++++++++*******++++++++++++++++++++++++++++++*******************+++==--------------------------=========================---------------------------------------::::---===++++++++++===-----------------------------------------------------------------------------------::::.......:::::-----------------------------------------------------------------------------------------------------------------------------------------------------*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@%:.:.:::::::.::::::::::::.....................:............:::::::----------::::::............................::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-:::::. .*%%@@@%#****************+++++++++++++++++++++++++++++++++++++++*##********++++++++++++++++++++++++++++++++++*#%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##%*#%#%%%%%%%###########%%####*************++++++++++**+++***+++++++++++++*##%%%%%%%%#****%@@@%@@@@%@%%###****#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#################################################*************************#####****************************************************************#####**************+++++******************=---=++------------------------------------------------------:----:--------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-=====:::::::::::::::::::::::::-----::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--------------=====-:.....................::........................::---------------------------------------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::..........................:::::::::-----===-------:..................:-:-:-:--------------::-:::::::::::::::::------------------:::::::::::::::::...................:.:::::::::::::::::::::::::::::-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------================----------:::::::::.............................................::::........................................ ....:::-===++++++++++++++++++++++++++++++++==--::::---===+++++++===---:::::::::::--===++++++===----::::::::::::::::::::::::::::--------------------:----------------::::::---------------------------------===+++****##################**+==--------------------------------------------===++++++***********++++++====----------------:::::::::::::::::::::::::::::::::::::::----------------------====+++***************************************************+++===--------------------------------------------------------------------------------------------------------------------------------------------------------------:::::::::---========++++++++++++++++++++++++++++++++++**********************************************************************************+++*********************************************************************************************************************************************************************************************************************************************************######################################################################################################################################################################################################################################################################################################################################################################################################***+++=======+++****#########################################################################################################**+++====================================================+++++*****
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****************+++==-------------------------==========================---------------------------------------:::----==+++++++++++===----------------------------------------------------------------------------------:::::.......::::------------------------------------------------------------------------------------------------------------------------------------------------------=%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@*:..:::..:::::::::::::::..................................:::::::----------::::::............................:::::::::::::::::::::::::::::::::::::::::::::::::::::::::-:-:::::. :%%%@@@%#**#*************+++++++++++++++++++++++++++++++++++++++*##*********+++++++++++++++++++++++++++++++***#%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#*#%%%%%%%%%###########%%###**************++*++++++**++++**++++++++++++++*###%%%%%%%****#%@@@@@@@@%@%%###****#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####################################################*********************#####******************************************************************#####*************+++++******************=---=+=------------------------------------------------------:----:--------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-====-::::-:::::::::::::::::::-----::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---------------=====-:......................:::........................::----------------------------------------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.....................::::::::-------==-------:..................:-----:------------=-:::::::::::::::::::::----------------:::::::::::::::::................:::::::::::::::::::::::::::::::-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------==============----------:::::::::..............................................::........................................ .....::-===++++++++++++++++++++++++++++++++==--::::---===++++++====---:::::::::::--==+++++++===----::::::::::::::::::::::::::::----------------::::::--------------:::::::---------------------------------===+++****#################**++==---------------------------------------------====+++++++*****++++++++====------------------::::::::::::::::::::::::::::::::::::::----------------------====+++***************************************************+++===---------------------------------------------------------------------------------------------------------------------------------------------------------------:::::::----========++++++++++++++++++++++++++++++++++*********************************************************************************++++*********************************************************************************************************************************************************************************************************************************************************#######################################################################################################################################################################################################################################################################################################################################################################################################**+++=======+++****#########################################################################################################**+++====================================================++++******
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**************++===-------------------------==========================----------------------------------------:----===+++++++++++====---------------------------------------------------------------------------------:::::.......::::-------------------------------------------------------------------------------------------------------------------------------------------------------*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@%@@+....:::..:.:.......::...................................:::::::----------::::::............................:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: +%%@@@@%#**#*#**********++++++++++++++++++++++++++++++++++++++++**#**********++++++++++++++++++++++++++++++***#%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##%%%%%%%%%%%#########%%####***************+++++*+**+++***+++++++++++++++*##%%%%%%%#****%@@@@@@@@@@%%####****#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###########*********************##%#*******************************************************************######*************++++******************=-=-=+=------------------------------------------------------:----:--------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-====-::-::::::::::::::::::::-----::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---------------======-:.......................:::........................:::----------------------------------------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::...................:::::::----------------:...................:-----------------==-::::::::::::::::::::::------------::::::::::::::::::...............::::::::::::::::::::::::..:::--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------============-----------::::::::........................................................................................ .....::-====+++++++++++++++++++++++++++++++==--:::::--===+++++====---::::::::::::--==+++++++===-----:::::::::::::::::::::::::::----------------::::::--------------:::::::----------------------------------==+++****#################**++=-----------------------------------------------=====++++++++++++++++=====-------------------::::::::::::::::::::::::::::::::::::::-----------------------===+++***************************************************+++===---------------------------------------------------------------------------------------------------------------------------------------------------------------:::::::---========+++++++++++++++++++++++++++++++++++********************************************************************************+++++********************************************************************************************************************************************************************************************************************************************************########################################################################################################################################################################################################################################################################################################################################################################################################**+++=======+++****#########################################################################################################**+++===================================================+++++******
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********+++===--------------------------===========================--------------------------------------------==++++++++++++====---------------------------------------------------------------------------------:::::.......::::--------------------------------------------------------------------------------------------------------------------------------------------------------%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@%-.....::.:.............................................::::::::----------::::::............................::::::::::::::::::::::::::::::::::::::::::::::::::::::::-:::::: #@%@@@@%#*##**********++++++++++++++++++++++++++++++++++++++++*+**#**********+++++++++++++++++++++++++++++++**#%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#%#*#%#%%%%%%%%%%#######%%####****************++*++++**+++**+++++++++++++++*##%%%%%%%#****#%@@@@@@@@@@%%##%#****%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#########******************####%#********************************************************************#####**************++++****************+=-=-=+=----------------------------------------------------:-:----:--------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-=+=--::::::::::::::::::::::--::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--------------=====-::........................:::........................:::::--:::::----------------------------------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.................::::::----------------:....................:---------------====-::::::::::::::::::::::--------::::::::::::::::::...............::::::::::::::::::::::..::::--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------==========-----------::::::::........................................................................................ .....::--===+++++++++++++++++++++++++++++++==--:::::--===+++======---::::::::::::--==++++++++==-----:::::::::::::::::::::::::::----------------::::::--------------:::::::----------------------------------==+++****################**++==-------------------------------------------------=====++++++++++++=====---------------------:::::::::::::::::::::::::::::::::::::::----------------------===+++***************************************************+++==----------------------------------------------------------------------------------------------------------------------------------------------------------------::::::----========++++++++++++++++++++++++++++++++++*********************************************************************************++++++*******************************************************************************************************************************************************************************************************************************************************########################################################################################################################################################################################################################################################################################################################################################################################################**+++=======+++***##########################################################################################################**+++===================================================++++*******
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****++++===---------------------------===========================-------------------------------------------===++++++++++++====---------------------------------------------------------------------------------::::.......:::::--------------------------------------------------------------------------------------------------------------------------------------------------------*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@%:..:..:...............................................:::::::-----------::::::............................:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: -%@%@@@@%#*##**********++++++++++++++++++++++++++++++++++++++++++**##*********+++++++++++++++++++++++++++++++**#%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#%#*%%%%%%%%%%%%%#######%####*****************++++++**+++***+++++++++++++++*##%%%%%%%*****%@@@@@@@@@@@%#####****%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###########**************###%#**********************************************************************#####*************++++****************+===-=+-----------------------------------------------------:-:----:--------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::==+=::-:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--------------=====-:..........................:::.......................::::::::::::::::::::::::::-:::::------------------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::..............:::.:----------------::....................:---------------====-:::::::::::::::::::::::-----:::::::::::::::::...............::::::::::::::::::::....:::-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------=---=======------------:::::::....................................................................................... ....::--======++++++++++++++++++++++++++++==--:::::--==========----::::::::::::---==++++++++==-----:::::--::::::::::::::::::::----------------:::::---------------:::::::----------------------------------==++++****##############***++=---------------------------------------------------========++==========---------------------::::::::::::::::::::::::::::::::::::::::----------------------===+++***************************************************+++==-----------------------------------------------------------------------------------------------------------------------------------------------------------------::::----=========+++++++++++++++++++++++++++++++++**********************************************************************************++++++*****************************************************************************************************************************************************************************************************************************************************##########################################################################################################################################################################################################################################################################################################################################################################################################***++=======+++***##########################################################################################################**+++==================================================+++++*******
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++====--------------------------============================-------------------------------------------==+++++++++++++===----------------------------------------------------------------------------------::::.......:::::--------------------------------------------------------------------------------------------------------------------------------------------------------=%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@*...:.................................................:::::::-----------::::::............................::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: +@@@@@@@#####*#*******++++++++++++++++++++++++++++++++++++++++++++*##*********++++++++++++++++++++++++++++++++*#%@%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##%%%%%%%%%%%%%%#####%#####******************++++***+++**+*++++++++++++++*##%%%%%%#****#@@@@@@@@@@@@%####****#%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%####################################*###############******###%##**********************************************************************#####**************++++***************+=-=-++-----------------------------------------------------:------:---------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-=+-:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---------------=====-:..........................::::.......................:::::::::::::::::::::::::::::...:-------------------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::...........::::::-------------=--:::...................:--------------=====-::::::::::::::::::::::::::::::::::::::::::............::::::::::::::::::::::....::::--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------=----======---------------::::................. ..................................................................... ....::--==================+++++++++++++++===--:::::--=========----:::::::::::::---==++++++++===----:::------:::::::::::-----------------------:::::----------------::::::----------------------------------===+++****#############***++==-----------------------------------------------------================--------------------:::::::::::::::::::::::::::::::::::::::::::----------------------===+++***************************************************++===------------------------------------------------------------------------------------------------------------------------------------------------------------------:::----========++++++++++++++++++++++++++++++++++**********************************************************************************++++++*****************************************************************************************************************************************************************************************************************************************************##########################################################################################################################################################################################################################################################################################################################################################################################################***++=======+++***##########################################################################################################**+++=================================================+++++********
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=====---------------------------============================------------------------------------------===+++++++++++++===---------------------------------------------------------------------------------:::::.......:::::---------------------------------------------------------------------------------------------------------------------------------------------------------*%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@%@@@@=.......:...........................................::::::::-----------::::::............................::::::::::::::::::::::::::::::::::::::::::::::::::::::::-::::-#@@@@@@%####**#******++++++++++++++++++++++++++++++++++++++++++++***#*********+++++++++++++++++++++++++++++++++*%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#*#%%%%%%%%%%%%%%%##%######*******************++++**+++**++*+++++++++++++*##%%%%%%%*****%@@@@@@@@@@@%%####****#%%%%%%%%%%%%%@@@@@@@@@@%%%%%%%%%%%%%%%%%%%###%%#################################*********************************######************************************************************************#####**************+++***************+=-==+=-----------------------------------------------------:------:---------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-==-:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--------------======-:...........................:-:........................::::::::::::::::::::::::::-::....:-------------------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::......::::::----------------::::....................:-------------======::::::::::::::::::::::::::::::::::::::::...........:::::::::::::::::::::.....:::--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------====--====--------------::::.............. ........................................................................ .....::-==========================++++++====--:::::--=======----:::::::::::::::---==++++++++===-----:---------::::::::------------------------::::::---------------::::::-----------------------------------==++++*****#########****++==-----------------------------------------------------------=======-----------------------:::::::::::::::::::::::::::::::::::::::::::::---------------------===+++**************************************************+++===------------------------------------------------------------------------------------------------------------------------------------------------------------------------=========++++++++++++++++++++++++++++++++++**********************************************************************************+++++++***************************************************************************************************************************************************************************************************************************************************###########################################################################################################################################################################################################################################################################################################################################################################################################***++=======+++***##########################################################################################################**+++=================================================+++++********
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********************++++***********************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=====-----------------------------============================------------------------------------------===+++++++++++++===---------------------------------------------------------------------------------:::::.......::::----------------------------------------------------------------------------------------------------------------------------------------------------------=%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@%-..................................................::::::::-----------::::::............................:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::=#@@@@@@@%######*******++++++++++++++++++++++++++++++++++++++++++++***#**********+++++++++++++++++++++++++++++++++#%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#*%%%%%%#%%%%%%%%%##%######******************+*++**++++**+*++++++++++++++*##%%%%%%*****#@@@@@@@@@@@@%#####****%%%%%%@@@@@@@@@@@@%%%%%%%%%%########################*****########################********************************######**************************************************************************#####*************+++***************+====+=----------------------------------------------=------:-----::---------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-==:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--------------=======-:............................:-:.......................:::::::::::::::::::::::::::-::.....::-------------------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::----------------::::....................:------------=======:::::::::::::::::::::::::::::::::::::::.......:::::::::::::::::::::::......::---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------==---=========------------::::............::........................................................................ .....::-====================================-:::::::--====----:::::::::::::::::---==++++++++===----------------:::::::------------------------::::::----------------:::::-----------------------------------====+++******####*****+++===-----------------------------------------------------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::--------------------===+++**************************************************+++===------------------------------------------------------------------------------------------------------------------------------------------------------------------------=========+++++++++++++++++++++++++++++++++***********************************************************************************+++++++***************************************************************************************************************************************************************************************************************************************************###########################################################################################################################################################################################################################################################################################################################################################################################################***++=======+++***##########################################################################################################**+++================================================+++++*********
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******************++++++++++++++**************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++====-------------------------------============================-----------------------------------------===+++++++++++++====---------------------------------------------------------------------------------::::........::::-----------------------------------------------------------------------------------------------------------------------------------------------------------*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@%:..:..............................................::::::::-----------::::::............................::::::::::::::::::::::::::::::::::::::::::::::::-::::::-::*@@@@@@@@%#####******+++++++++++++++++++++++++++++++++++++++++++++++**#*********++++++++++++++++++++++++++++++++++*%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*#%%%%%%%%%%%%%%%#%%%######*******************++***+++***+++++++++++++++*###%%%%%#*****%@@@@@@@@@@@@%%###****#%%%%@@@@@@@@@@%%%%%%%############################*****#############################********************************######*************************************************************************####**************+++**************=====+=------------------------------------------------------------:----------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-::-:::::::::::::------------=====+=--:............................::::.......................:::::::::-::::::::::::::::::::......::--------------------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::----------------::::::...................::----------========::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::....::------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------=================---------::::...............::.... ................................................................ .....::-====================================-:::.:::--===---::::::::::::::::::::--==++++++++===---------------:::::::------------------------:::::::----------------:::::------------------------------------====++++************+++===---------::---------------------------------------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::--------------------====++**************************************************+++===-----------------------------------------------------------------------------------------------------------------------------------------------------------------------=========++++++++++++++++++++++++++++++++++***********************************************************************************+++++++*************************************************************************************************************************************************************************************************************************************************#############################################################################################################################################################################################################################################################################################################################################################################################################***+++======+++***##########################################################################################################**+++================================================+++++*********
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********************++++++++++++++++************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++====-------------------------------============================------------------------------------------===+++++++++++++====---------------------------------------------------------------------------------::::........::::-----------------------------------------------------------------------------------------------------------------------------------------------------------=%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@#:.............................................:..:::::::------------::::::............................:::::::::::::::::::::::::::::::::::::::::::::::-:--::-:.-%@@@@@@@%#####*******+++++++++++++++++++++++++++++++++++++++++++++++*************++++++++++++++++++++++++++++++++++*%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#*#%%%%%%%%%%%%%%%%%%#######*****************+++***++++****++++++++++++++*###%%%%#**+**#%@@@@@@@@@@@@%####****#%%%%@%%%%%%%%%%%%%###############################*****#############################************************************#%#************************************************************************#####**************++**************=====+------------------------------------------------------------------------:--::::::::::::::::::::::::::::::::::::::::::::::::::::--::::::::::::::::--:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-::-:::::::::::::::--------------====+=--:.............................::::......................::::::--:::::::::::::::::::::::.......:::--------------------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::----------------::::::....................:----------========:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::....:::--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------====================----::::::............ ..::::................................................................ ......:--==================================--::...::-------:::::.:::::::::::::::--===+++++++===---------------:::::::------------------------:::::::----------------:::::-------------------------------------=====+++++*******++++===----------:::--------------------------------------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::--------------------===++*************************************************+++===------------------------------------------------------------------------------------------------------------------------------------------------------------------------=========++++++++++++++++++++++++++++++++++**********************************************************************************++++=+++*************************************************************************************************************************************************************************************************************************************************#############################################################################################################################################################################################################################################################################################################################################################################################################***+++=====+++****#########################################################################################################***++================================================+++++**********
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********************++++++++++++++++++**********************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===---------------------------------============================-----------------------------------------===+++++++++++++====----------------------------------------------------------------------------------::::........::::------------------------------------------------------------------------------------------------------------------------------------------------------------*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@+.............................................:..:::::::------------::::::...........................::::::::::::::::::::::::::::::::::::::::::::::::::-:-::.-%@@@@@@@%#####*****+++++++++++++++++++++++++++++++++++++++++++++++++*************+++++++++++++++++++++++++++++++++++#@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#*#%%%%%%%%%%%%%%%%%#######******************++***+++******++++++++++++++*###%%%%*++***%@@@@@@@@@@@@%%####****%%%%%%%%%%%%%%%################################******###############################**************#*********************####************************************************************************#####*************++**************======-------------------------------------------------=---:---------------------::::::::::::::::::::::::::::::::::::::::::::::::::::--:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-:::::-::::::::::::--------------=====+=--:..............................:::......................:::::::-::::::::::::::::::::::::.........::--------------------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::----------------:::::::::..................:---------=========-::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::......::--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------===========================--::::................ ..::::............................................................ .....:--==================================--::...:::-----:::.........::::::::::--===+++++++===----------------:::::-------------------------:::::::----------------:::::---------------------------------------======+++++++++++===-----------::::-------------------------------------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::--------------------===++*************************************************+++===-----------------------------------------------------------------------------------------------------------------------------------------------------------------------==========++++++++++++++++++++++++++++++++++**********************************************************************************+++===+++************************************************************************************************************************************************************************************************************************************************##############################################################################################################################################################################################################################################################################################################################################################################################################***+++===++++****#########################################################################################################***++===============================================++++++**********
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++***********************++++++++++++++++++++*************************************************************+++++**++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===---------------------------------============================-----------------------------------------===+++++++++++++====----------------------------------------------------------------------------------::::........:::-------------------------------------------------------------------------------------------------------------------------------------------------------------=%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@%=...............................................:::::::------------::::::...........................:::::::::::::::::::::::::::::::::::::::::::::::::::::. -%@@@@@@@%#####*****+++++++++++++++++++++++++++++++++++++++++++++++++*************++++++++++++++++++++++++++++++++++++%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#*%%%%%%%%%%%%%%%%%######********************+***+++********++++++++++++*####%%%#+++**#@@@@@@@@@@@@@%##%#****#%%%%%%%%%%%%%##################################****#################################**************#***********************#%##***********************************************************************#####*************++************+======--------------------------------------------------------:-:-:--=-----------:::::---:::::::::::::::::::::::::::::::::::::::::::-:--:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--::-::::::::::::::-------------======+=-::...............................::.......................:::::::::::::::::::::::::::::::..:::.......:----------------------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::----------------::::::::::.................::-------==========-::::::::::::::::::::::::::::::::::::::::::::::::::::::::.......::----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------==============================--::.......... .. ....... ....:::........................................................ .....:--==================================--::....::-----::.............:::::::--===+++++++===----------------::::-------------------------::::::::----------------:::::------------------------------------------========+=======-----------::::::------------------------------------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::------------------===++*************************************************+++===-------------------------------------------------------------------------------------------------------------------------------::--------------------------------------=========++++++++++++++++++++++++++++++++++***********************************************************************************+++====++************************************************************************************************************************************************************************************************************************************************##############################################################################################################################################################################################################################################################################################################################################################################################################***++++==++++***##########################################################################################################**+++==============================================++++++***********
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********++++++++++++++++++++++++++++++++++++++++++++++++++++++++****************++++++++++++++++++++++++++++******************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===---:::--------------------------============================------------------------------------------===++++++++++++=====----------------------------------------------------------------------------------::::.......::::--------------------------------------------------------------------------------------------------------------------------------------------------------------#%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@%:..............................................:::::::------------::::::..........................::::::::::::::::::::::::::::::::::::::::::::::::::::. -%@@@@@@@%#####****++++++++++++++++++++++++++++++++++++++++++++++++++**************+++++++++++++++++++++++++++++++++++*@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#*#%%%%%%%%%%%%%%%%%####**************************+++********++++++++++++*####%%#*++++*%@@@@@@@@@@@@%###%#****#%%%#%%%%%%#####################################***##################################***************************************#%#***********************************************************************#####**************+************+======-------------------------------------------::------=--------:--=-----------:::--------::::::::::::::::::::::::::::::::::::::::::-=-::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---:-:::::::::::::::-------------=====++--:.........................................................:::::::--::::::::::::::::::::::..............::----------------------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::------------------:::::::::.................:-------==========--------:::::::::::::::::::::::::::::::::::::::::::...........:------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------============================-=====-::....... ...... . ..... ........................................................... ....:--==================================--::....::----:::................:::::--===++++++===----------------:::--------------------------:::::::::---------------::::---------------------------------------------===========--------------::::::::---------------------------------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::----------------===++*************************************************++====-----------------------------------------------------------------------------------------------------------------------------:::::------------------------------------==========++++++++++++++++++++++++++++++++++***********************************************************************************++=====++***********************************************************************************************************************************************************************************************************************************************###############################################################################################################################################################################################################################################################################################################################################################################################################****++++++++****##########################################################################################################**+++=============================================++++++************
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********++++++++++++++++++++++++++++++++++++++++++++++++++++++****************+++++++++++++++++++++++++++++++*****************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===---:::--------------------------============================-----------------------------------------===+++++++++++++=====---------------------------------------------------------------------------------:::::.......::::--------------------------------------------------------------------------------------------------------------------------------------------------------------=%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@#:.............................................:::::::------------::::::..........................:::::::::::::::::::::::::::::::::::::::::::::::::.. -@@@@@@@%######*****++++++++++++++++++++++++++++++++++++++++++++++++++*************++++++++++++++++++++++++++++++++++++*@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#*%%%%%%%%%%%%%%%%%%###**********************++*++++*********++++++++++++*###%%%*++++*%%@@@@@@@@@@@%%####*****%%%%#################################################################################****************************************#%#***********************************************************************#####*************+************+======------------------------------------------------------------:--=-----------------------:::::::::::::::::::::::::::::::::::::-::-:-=--::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---:::::::::::::::::--------------=====++-::..........................................................:::::::::::::::::::::::::::::::.:.............::-----------------------------------------------------------::::::::::::::::::::::::::::::::::::::::::::--------------------::::::::::...............:------===========--------:::::::::::::::::::::::::::::::::::::..............::------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------=========================---===-=======--:. ... ............ ... .................................................... ....:--==================================--::....::----::...................:::--====+++++===-----------------::--------------------------:::::::::---------------::::---------------------------------------------------==-----------------::::::::----------------------------------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::----------------===++************************************************+++===----------------------------------------------------------------------------------------------------------------------------::::::::-----------------------------------==========++++++++++++++++++++++++++++++++++***********************************************************************************++======++**********************************************************************************************************************************************************************************************************************************************################################################################################################################################################################################################################################################################################################################################################################################################################****++++++*****#########################################################################################################***+++============================================++++++*************
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********++++++++++++++++++++++++++++++++++++++++++++++++++*****************+++++++++++++++++++++++++++++++++++***************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===---:::--------------------------============================-----------------------------------------===+++++++++++++====----------------------------------------------------------------------------------:::::.......::::---------------------------------------------------------------------------------------------------------------------------------------------------------------#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@+:............................................::::::------------:::::::..........................::::::::::::::::::::::::::::::::--::----::::::.. -@@@@@@@%######*****+++++++++++++++++++++++++++++++++++++++++++++++++++*************++++++++++++++++++++++++++++++++++++#@@@%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##%%%%%%%%%%%%%%%%%####**********************++*+++**********+++++++++++*####%%#*++++#%%@@@@@@@@@@%%%####****#%%%##################################################################################*****************************************###***********************************************************************#####*************************+======---------------------------------------------------------------=-----------------------::::::::::::::::::::::::::::::::::::::::::-===-::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---:::::::::::::::::-------------======+=--:..........................................................::::::::::::::::::::::::::::::::.................::----------------------------------------------------------:::::::::::::::::::::::::::::::::::::::::----------------------:::::::::............:::-----============--------::::::::::::::::::::::::::::::::::..............::--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------==============================--===========--:. ............. ....... ................................................... ...:--==================================--::...:::----::....................:::--====+++====-----------------::--------------------------:::::::::----------------:::----------------------------------------------------------------------:::::::::---------------------------------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::---------------===++************************************************+++===---------------------------------------------------------------------------------------------------------------------------:::::::::----------------------------------==========+++++++++++++++++++++++++++++++++++***********************************************************************************++==--==++**********************************************************************************************************************************************************************************************************************************************################################################################################################################################################################################################################################################################################################################################################################################################################*******+******#########################################################################################################***+++============================================++++++**************
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********++++++++++++++++++++++++++++++++++++++++++++++++*****************+++++++++++++++++++++++++++++++++++++***************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===---:::-------------------------=============+===============-----------------------------------------===+++++++++++++====----------------------------------------------------------------------------------::::........::::---------------------------------------------------------------------------------------------------------------------------------------------------------------=%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@%@%=:..........................................:::::::------------:::::::..........................::::::::::::::::::::::::::::::----:-----:::::. =@@@@@@@%#####***+*+++++++++++++++++++++++++++++++++++++++++++++++++++++************+++++++++++++++++++++++++++++++++++++#%@@%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*#%%%%%%%%%%%%%%%%%###***********************+++++***********+++++++++++*####%#*++++*%%@@@@@@@@%%%%%####*****%%%####################***############################################################**********************************+*******%#************************************************************************####*************************+======-=-----------------------------------------:----------:--:-----=----------:------------::::::::::::::::::::::::::::::::::::-:-::---===-::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-=-::::::::::::::::-------------======++=-::...........................................................::--::::::::::::::::::::::::::::...................::--------------------------------------------------------::::::::::::::::::::::::::::::::::::::-----------------------:::::::::::..........:::----=============-------::::::::::-::::::::::::::::::::................::----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------=======================================-=--===--:.. .. ............. ..................................................... ...:--==================================--::...:::---:::.....................::--===========-----------------::--------------------------:::::::::----------------:::----------------------------------------------------------------------::::::::::--------------------------------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::---------------===++***********************************************+++====--------------------===----------------------------------------------------------------------------------------------::::::::::::::::---------------------------------==========+++++++++++++++++++++++++++++++++++**********************************************************************************+++==--==++*********************************************************************************************************************************************************************************************************************************************##################################################################################################################################################################################################################################################################################################################################################################################################################*************#########################################################################################################***+++============================================++++++**************
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********++++++++++++++++++++++++++++++++++++++++++++++****************++++++++++++++++++++++++++++++++++++++++****************************++++++++++++++++++++*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===------------------------------============================------------------------------------------===+++++++++++++===-----------------------------------------------------------------------------------::::........::::----------------------------------------------------------------------------------------------------------------------------------------------------------------#@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@%=:.........................................::::::-------------::::::::.........................:::::::::::::::::::::::::::::--::--:-:--:-:. :+#@@@@@@@%#####****++++++++++++++++++++++++++++++++++++++++++++++++++++++*************+++++++++++++++++++++++++++++++++++++#%@@%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###%%%%%%%%%%%%%%%%%####**********************+++++**************++*++++++#####%*++++*#%@@@@@@%%%%%%%#####****#%%%##############***********##########################################################****************************+++++++++******%#***********************************************************************#####************************=======-=--=--------------------------------------------------:-------==--------:------------:::::::::::::::::::::::::::::::::::::::::::--====-::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-:::==:::::::::::::::::--------------=====++=:-::..........................................................::::::::-:::::::::::::::::::::::......................:------------------------------------------------------------:::::::::::::::::::::::::::::::---::--------------------:::::::::::::::::::::::-==============----------:-------:::::::::::::::::..................::----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------=============================================-======--:.. ... .......... .............................................. ...:--==================================--::...::----::......................:::---========-----::-----------:::::-----------------------::::::::----------------:::------------------------------------------------------------------------::::::::::--------------------------------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::--------------===+++*********************************************++++===-------------------=======-----------------------------------------------------------------------------------------:::::::::::::::::::--------------------------------==========+++++++++++++++++++++++++++++++++++************************************************************************************+==----==++**********************************************************************************************************************************************************************************************************************************************#################################################################################################################################################################################################################################################################################################################################################################################################################***********##########################################################################################################**+++===========================================++++++****************
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***********++++++++++++++++++++++++++++++++++++++++++++****************++++++++++++++++++++++++++++++++++++++++++****************************++++++++++++++++++*****++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===------------------------------============================------------------------------------------===+++++++++++++===-----------------------------------------------------------------------------------::::.......:::::----------------------------------------------------------------------------------------------------------------------------------------------------------------+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@%#=::.......................................::::::-------------::::::::.........................::::::::::::::::::::::::::---:---:--:-:--:. -*#%@@@@@@@%####*****+++++++++++++++++++++++++++++++++++++++++++++++++++++++************++++++++++++++++++++++++++++++++++++++##@@%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####**********************+++****************++++++++*####%*+++++*%%@@@@%%%%%%%%%####****#%%%##############************##########################################################***************************+++++++++++*****#%************************************************************************#####***********************=========-===--------------------------------------------------------===---------------------::::::::::::::::::::::::::::::::::::::::::::--====-:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-:-=-:::::::::::::::::-------------======++-:::::.........::...............................................::::--:::-:::::::::::::::::::::........................::-----------------------------------------------------------------::::::::::::::::::::::---:::--------------------::::::::::::::::::::::--============------------------::::::::::::::....................::------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------===================================================--==---... .......... .................................................. ...:--==================================--:::..::----::.......................::---=======----:::::----------:::::-----------------------:::::::::----------------::------------------------------------------------------------------------::::::::::---------------------------------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::-------------===+++********************************************++++====-------------------=======---------------------------------------------------------------------------------------:::::::::::::::::::::--------------------------------==========+++++++++++++++++++++++++++++++++++***********************************************************************************++==----==++**********************************************************************************************************************************************************************************************************************************************###################################################################################################################################################################################################################################################################################################################################################################################################################********##########################################################################################################***+++==========================================++++++*****************
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++************++++++++++++++++++++++++++++++++++++++++++****************++++++++++++++++++++++++++++++++++++++++++++****************************++++++++++***************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===----------------------------=============================------------------------------------------===+++++++++++++===-----------------------------------------------------------------------------------::::.......::::------------------------------------------------------------------------------------------------------------------------------------------------------------------%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@%+=:..:....................................::::::-------------:::::::::........................:::::::::::::::::::::::::::::--::-::----. =***%@@@@@@@%####****+++++++++++++++++++++++++++++++++++++++++++++++++++++++++***********+++++++++++++++++++++++++++++++++++++++##%@%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######*********************++++*****************+++++++*#####+++++*#%%@%%%%%%%%%%%#####****%%%%##############***********###########################################################*************************++++++++++++++*****##************************************************************************#####*********************+===========+=--------------------------------------------------------=====-------------------:::::::::::::::::::::::::::::::::::::::::::::-===+=-:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-:::==-::::::::::::::::-------------======++=-::::::........:::.............................................:::::::--:::::::::::::::::::::::............................:------------------------------------------------------------------::::::::::::::::---::::------------------------::::::::::::::::----============----------------::::::::::::.....................::----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------==============================================--------=====--:.. ....................................................... ...:--==================================--:::::::----::........................::----====----:::::::---------::::------------------------:::::::::------------------------------------------------------------------------------------------:::::::::::----------------------------------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::------------===+++*******************************************+++++====------------------=========-------------------------------------------------------------------------------------:::::::::::::::::::::::-------------------------------=========++++++++++++++++++++++++++++++++++++***********************************************************************************++==-----=++***************************************************************************************************************************************************************************************************************************************************###############################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################***++++========================================+++++++******************
********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++************+++++++++++++++++++++++++++++++++++++++++*****************+++++++++++++++++++++++++++++++++++++++++++++****************************+++++++*********************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++====---------------------------=============================------------------------------------------==+++++++++++++====-----------------------------------------------------------------------------------::::.......::::------------------------------------------------------------------------------------------------------------------------------------------------------------------*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@%+=:......................................::::::-------------:::::::::::......................:::::::::::::::::::::::---:------:-:--: -**+*%@@@@@@@%%%##****++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********++++++++++++++++++++++++++++++++++++++++##%@@%%%%%%%%%%%%%%%%%%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########*******************++++*******************+++++*#####*+++++#%%%%%%%%%%%%%%#####****#%%%#######*##***###**********###########################################################************************+++++++++++++++++**+*%#************************************************************************#####********************+=========-=+=--------------------------------------------------------=====-------------------:::::::::::::::::::::::::::::::::::::::::-:::--=====-::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-:-=-:::::::::::::::::-------------======++=-:::::::........::...............................................::::::::::::::::::::::::::::::..............................::------------------------------------------------------------------::::::::::::----::-----------------------------::::::::----------=========----------------::::::::::......................::-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------=============================================---==------=---=--:... ................................................. ...:--==================================--::::::-----::........................::------------:::::::---------::::------------------------:::::::::-------------------------------------------------------------------------------------------:::::::::::----------------------------------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::-----------===+++******************************************+++++=====------------------=========-----------------------------------------------------------------------------------::::::::::::::::::::::::::------------------------------=========+++++++++++++++++++++++++++++++++++************************************************************************************++==-----==+****************************************************************************************************************************************************************************************************************************************************#############################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################***++++========================================+++++++*******************
**********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++************++++++++++++++++++++++++++++++++++++++++******************+++++++++++++++++++++++++++++++++++++++++++++*******************************+**************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++====-------------=------------============================------------------------------------------===+++++++++++++===------------------------------------------------------------------------------------::::.......::::------------------------------------------------------------------------------------------------------------------------------------------------------------------=%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@#+=::....................................:::::--------------:::::::::::::::::::.:::::::......:::::::::::::::::::::---------::--:-: -+*++*%@@@@@@@%%%%#***+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********+++++++++++++++++++++++++++++++++++++++++###%@%%%%%%%%%%%%%%%%%%%%%%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#########******************+++*********************+++++*####*+++++*%%%%%%%%%%%%%%###%#****#%%%%#######*#####************###########################################################************************+++++++++++++++++++++**%************************************************************************#####********************+==========++=--------------------------------------------------------======------------------:::::::::::::::::::::::::::::::::::::::::::::--======-::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-=-:-::::::::::::::--------------======++=-::::-::.................................................:::.....::::::::::::::::::::::::-:::::.................................::--------------------------------------------------------------::::::::--:--------------------------------------------------------=======----------------::::::::......................:-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------=============-----=============---=------------------------:.. .............................................. ...:--==================================---:::::-----::........................::-----------::::::::---------:::::----------------------::::::::::-------------------------------------------------------------------------------------------::::::::::::----------------------------------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::----------===+++*****************************************++++======-------------------==========---------------------------------------------------------------------------------::::::::::::::::::::::::::::----------------------------=========++++++++++++++++++++++++++++++++++++************************************************************************************++==-----==++***************************************************************************************************************************************************************************************************************************************************############################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################****++++======================================++++++++********************
************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*************++++++++++++++++++++++++++++++++++++++********************++++++++++++++++++++++++++++++++++++++++++++***********************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=====------------+-----------=============================------------------------------------------===+++++++++++++===------------------------------------------------------------------------------------::::......:::::-------------------------------------------------------------------------------------------------------------------------------------------------------------------*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@%#+=:...................................::::::-------------:::::::::::::::::::::::::::.......::::::::::::::--------------------:. =**+++*#%@@@@@%%%%%#*++*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********++++++++++++++++++++++++++++++++++++++++++#%%@@@@%%%%%%%%%%%%%%%%%%%%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#########****************+++++********************++++++*###*+++++*#%%%%%%%%%%%%#######****%%%%##############***********###########################################################************************++++++++++++++++++++++++##************************************************************************#####*******************+========-=++=----------------------------------------------------:----===-=------------------::::::::::::::::::::::::::::::::::::::::::::::--=+====-::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-:=---:::::::::::::::-------------======+++-::::::-:...............................................::.........::-:::::::::::::::::::::::::::...................................:::----------------------------------------------------------:------------------------------------------------------------------======--------------:::::::......................::-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------===--=---------------====-------------=------------------=---::.. ......................................... ...:--===================================--:::::-----::........................:::----------:::::::::--------:::::::::------------------::::::::::-------------------------------------------------------------------------------------------::::::::::::::--------------------------------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::---------===+++****************************************++++=======-------------------====++====---------------------------------------------------------------------------------::::::::::::::::::::::::::::-------------------::::-----========+++++++++++++++++++++++++++++++++++++************************************************************************************++==------=++***************************************************************************************************************************************************************************************************************************************************############################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################***+++++====================================+++++++++*********************
*************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**************+++++++++++++++++++++++++++++++++++++**********************++++++++++++++++++++++++++++++++++++++++++++**********************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=====-----------+-----------=============================------------------------------------------===+++++++++++++===------------------------------------------------------------------------------------::::......:::::-------------------------------------------------------------------------------------------------------------------------------------------------------------------=%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@%*=:.................................:::::::-------------:::::::....:::::::::::::::.......::::::::::::::----------------:--:. =***++++*%@@@@@%%%%%#*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********+++++++++++++++++++++++++++++++++++++++++++#%@@@@@%%%%%%%%%%%%%%%%%%%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###########***************++++**********************+++++*####*++++*#%%%####%%%#########****#%%%%#########**######********##########################################################**********************+++++++++++++++++++++++==++*%*************************************************************************#####******************===========++=---------------------=------------------------------------==-=------------------::::::::::::::::::::::::::::::::::::::::::::::--======--::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-::-:::-=---:::::::::::::::-------------======++=-:::::::::............................................:............:::::::::::::::::::-::::::::-:.......................................::-------------------------------------------------------------------------------------------------------------------------======-----------:::::::.......................::------------------------------------------------------------------------------------------------------------------------------------------------::::::-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------=----::.......................................... ...:--===================================--::::------::........................:::---------::::::::::--------::::::::::::::-------------:::::::::::------------------------------------------------------------------------------------------::::::::::::::::-------------------------------------------========---------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::---------===+++***************************************++++=====----------------------===++++===--------------------------------------------------------------------------------::::::::::::::::::::::::::::::-----------------:::::----========+++++++++++++++++++++++++++++++++++++*************************************************************************************++==--::--==+**************************************************************************************************************************************************************************************************************************************************############################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################****++++===================================+++++++++***********************
**************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**************+++++++++++++++++++++++++++++++++++*************************+++++++++++++++++++++++++++++++++++++++++++***********************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++====----------=*=----------=============================------------------------------------------===+++++++++++++===------------------------------------------------------------------------------------::::......::::---------------------------------------------------------------------------------------------------------------------------------------------------------------------#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@%*-:................................:::::::-------------:::::::........::::::::::........::::::::::::::--------------:--:. -+**+++++*#@@@@@%%%@%*++++++++++++++++++++++++++++++++++++++++++++++++++++**+++++++++*********+++++++++++++++++++++++++++++++++++++++++++*%@@@@@@%%%%%%%%%%%%%%%%%%%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###########**************++++***********************+++++*###*+++++#####################****%%%%%########*####**##******############################################################*********************+++++++++++++++++++++++===+++##************************************************************************#####******************===========+*=---------------------=---------------------------------:--====------------------::::::::::::::::::::::::::::::::::::::::::::::--=======--::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-=----:::::::::::::::-----------=---===+++=-::::::::...........................................:...............::::::::::::::::::-:::::::::::.........................................::----------------------------------------------------------------------------------------------------------------===========---------::::::........................::------------------------------------::::::::----------------------------------------------------------------------------------------------------:::::::-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------::.................................... ...:-====================================---::-------::........................:::---------::::::::::--------:::::::::::::::------------:::::::::::------------------------------------------------------------------------------------------:::::::::::::::::-----------------------------------------==========--------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::---------===+++**************************************++++===-------------------------===++++===-------------------------------------------------------------------------------:::::::::::::::::::::::::::::::----------------::::::---=========+++++++++++++++++++++++++++++++++++++*************************************************************************************++==--::--==++*************************************************************************************************************************************************************************************************************************************************############################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################***+++++=================================++++++++++************************
***************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**************++++++++++++++++++++++++++++++++++****************************+++++++++++++++++++++++++++++++++++++++++***********************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++====---------+*+---------==============================-----------------------------------------====+++++++++++++===-----------------------------------------------------------------------------------:::::......::::---------------------------------------------------------------------------------------------------------------------------------------------------------------------+%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@#=:..:............................::::::--------------::::::...........................:::::::::::::------:-:--:-:---. =**+++++++*#@@@@@%%%@%*++++++++++++++++++++++++++++++++++++++++++++++++++++++*++++++++***********+++++++++++++++++++++++++++++++++++++++++#%@@@@@@@@%%%%%%%%%%%%%%%%%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##*#########*************+++************************++*++*###*+++++*#################%##****#%%%%##########*#######***###############################################################************************++++++++++++++++++++====++*#*************************************************************************#####****************+==========++*+----------------------=------------------------:---:----:--===------------------:::::::::::::::::::::-::::::::::::::::::::::::-:-=======--::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::------::::::::::::::-------------======+++-:::::::::.......................................::..................:::::::::::::::::::::::::::-::............................................::--------------------------------------------------------------------------------=======---------------===============---------::::::::::....................::---------------------------------:::::::::::::::::-------------------------------------------------------------------------------------------::::::::::--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:.... .. ... ........... .... ...:-====================================------------::........................:::---------:::...::::--------::::::::::::::::-----------:::::::::::-------------------------------------------------------------------------------------------::::::::::::::::::-------------------------------------=============--------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::--------===++++************************************++++===--------------------------===+++++===------------------------------------------------------------------------------::::::::::::::::::::::::::::::::--------------::::::----========++++++++++++++++++++++++++++++++++++++*************************************************************************************++==--:::-==++*************************************************************************************************************************************************************************************************************************************************############################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################***++++++==============================+++++++++++*************************
****************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**************++++++++++++++++++++++++++++++++********************************+++++++++++++++++++++++++++++++++++++++***********************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++====---------+#+---------=============================------------------------------------------====+++++++++++++===-----------------------------------------------------------------------------------:::::......::::----------------------------------------------------------------------------------------------------------------------------------------------------------------------#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@#=:..............................::::::--------------::::::...........................:::::::::::::----------:-:--: .=**++*++++++#@@@@@%%@@#*+++++++++++++++++++++++++++++++++++++++++++++++++++++++**+++++++**********++++++++++++++++++++++++++++++++++++*++**%@@@@@@@@@@%%%%%%%%%%%%%%%%@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##**##########***********+++***************************+++*##*+++++*########%###########****#%%%%%###################**##############################################################************************+++++++++++++++++++++=====++***************************************************************************####****************+==========++*+----------------------=------------------------:---:----::--==------------------:::::::::::::::::::::-::::::::::::::::::::::::-:-=======---:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-------:::::::::::::--------------=====+++=-::::::::............................................................:::::-:::::::::::::::::-:::--:................................................::---------------------------------------------------------------------------=============--======================-----::::::::::......................::--------------------------------::::::::::::::::::::::::------------------------------------------------------------------------------------::::::::::::----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------=--:... .. .. ........ ...:--===================================------------::.........................::---------:::....:::--------::::::::::::::::-----------:::::::::::-------------------------------------------------------------------------------------------::::::::::::::::::------------------------------------=====++++++====-------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::--------===++++***********************************++++===---------------------------===+++++===-----------------------------------------------------------------------------:::::::::::::::::::::::::::::::::--------------:::::----=========++++++++++++++++++++++++++++++++++++++*************************************************************************************++==-::::--=++*************************************************************************************************************************************************************************************************************************************************############################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################***++++++++=========================++++++++++++***************************
****************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****************++++++++++++++++++++++++++++*************************************++++++++++++++++++++++++++++++++++++++**********************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++====--------*#*---------=============================------------------------------------------====+++++++++++++===-----------------------------------------------------------------------------------::::.......::::----------------------------------------------------------------------------------------------------------------------------------------------------------------------+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@%=:.............................::::::--------------::::::...........................:::::::::::::-------:-:-:-. =***+++++++++#@@@@@@%@@#+*+++++++++++++++++++++++++++++++++++++++++++++++++++++++**++++++**********++++++++++++++++++++++++++++++++++++++++#@@@@@@@@@@@@%%%%%%%%%%%%%%%@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#**#############*******++++***************************+*+*##*+++++*####################*****%%%%%###################################################################################*************************++++++++++++++++++++========****************************************************************************####***************+==========++++----------------------==---------------------------:--==-:--==------------------:::::::::::::::::::::-:::::::::::::::::::::::::---======----::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--------:::::::::::::-------------======+++=-:::::::..............................................................:-::-:::::::::::::::::::::::::...................................................::---------------------------------------------------------------------====================================-----::::::::::::::::................::---------------------------------::::::::::::::::::::::::::-------------------------------------------------------------------------------::::::::::::::--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------::... ... ...... ...:--====================================-----------::.........................::---------:::....:::---------::::::::::::::::---------::::::::::::-------------------------------------------------------------------------------------------:::::::::::::::::::----------------------------------====++++++++++===------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::--------===++++***********************************+++===----------------------------===+++++===----------------------------------------------------------------------------:::::::::::::::::::::::::::::::::::-------------:::::----========+++++++++++++++++++++++++++++++++++++++*************************************************************************************++==-::::--==+*************************************************************************************************************************************************************************************************************************************************############################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################****++++++++++++++=============+++++++++++++++*****************************
*****************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****************+++++++++++++++++++++++++++*********++++*****************************++++++++++++++++++++++++++++++++++***********************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++====------=*#*--------==================++==========------------------------------------------====+++++++++++++===-----------------------------------------------------------------------------------::::......:::::----------------------------------------------------------------------------------------------------------------------------------------------------------------------=%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@%@%=:...........................::::::--------------:::::::...........................:::::::::::::-------::::. .=+++++++++++++#@@@@@@@@@*+*++++++++++++++++++++++++++++++++++++++++++++++++++++++++**++++++*********+++++++++++++++++++++++++++++++++++++*+*%@@@@@@@@@@@@@%%%%%%%%%%%%%%@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##**##############*****++++******+*********************+*+*#*++++++#####################****#%%%%%###################*##############################################################*************************+++++++++++++++++++++========+****************************************************************************####**************==========+++++----------------------==---------------------------:--==-::--=--------------:---:::::::::::::::::::::::::::::::::::::::::::::::---=======----::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--------:::::::::::::-------------======+++-::::::................................................................:::::::::::::::::::::::-:::-::................................................. ....::---------------------------------------------------------------===================================-----::::::::::::::::........:::....:::---------------------------------::::::::::::::::::::::::::::::------------------------------------------------------------------------::::::::::::::::::---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------=-----::..... .. ...:--====================================-----------::.........................::---------:::.....:::--==----::::::::::::::::::------::::::::::::::------------------------------------------------------------------------------------------:::::::::::::::::::----------------------------------===+++++++++++====-----------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::--------====+++**********************************+++===-----------------------------===+++++===----------------------------------------------------------------------------:::::::::::::::::::::::::::::::::::------------:::::----=========+++++++++++++++++++++++++++++++++++++++*************************************************************************************++==-:::::--=++************************************************************************************************************************************************************************************************************************************************############################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################*****+++++++++++++++++++++++++++++++++++++++*******************************
*****************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****************++++++++++++++++++++++++++********+++++++++****************************++++++++++++++++++++++++++++++++***********************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===------+###=-------==================+==========-------------------------------------------===++++++++++++++===-----------------------------------------------------------------------------------::::......::::------------------------------------------------------------------------------------------------------------------------------------------------------------------------*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@%%-.:.........................::::::--------------:::::::...........................::::::::::::-------:-: .=++++++++++++++#@@@@@@@@%*++*++++++++++++++++++++++++++++++++++++++++++++++++++++++++**+++++**********++++++++++++++++++++++++++++++++++++++*%@@@@@@@@@@@@@@%%%%%%%%%%%%%%@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###################**++++********+**********************+*##*+++++#%###################****#%%%%%####################*#############################################################**************************+++++++++++++++++++===========+****************************************************************************####*************==========+*+++=---------------------==---------------------------:--===-::-==-----------------:::::::::::::::::::::::::::::::::::::::::::--:-----======--=--::::::::::::::::::::::::::--:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--------::::::::::::::-------------=====++++-:::::.................................................................:::::::::::::::::::::::::::-::..................................................... .....::--------------------------------------------------------==================================-----:::::::::::::::::::::::::::::::::::----------------------------------::::::::::::::::::::::::::::::::-----------------------------------------------------------------:::::::::::::::::::::::-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------::............ ...:--=====================================----------::.........................::---------:::.....:::--==----::::::::::::::::::::::::::::::::::::::------------------------------------------------------------------------------------------::::::::::::::::::::-------------------------------====+++++++++++++===-----------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::--------====++++*********************************+++===-----------------------------===++++++==----------------------------------------------------------------------------::::::::::::::::::::::::::::::::::::----------::::::----=========+++++++++++++++++++++++++++++++++++++++*************************************************************************************++==-:::::--=++***********************************************************************************************************************************************************************************************************************************************##############################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################*****++++++++++++++++++++++++++++++++++++*********************************
******************++++++++++++++++++++++++++++++++++++++++++++++++++++++++******************++++++++++++++++++++++++++******+++++++++++++***************************+++++++++++++++++++++++++++++++************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++====-----+###+-------=============================-------------------------------------------===++++++++++++++===-----------------------------------------------------------------------------------::::......::::------------------------------------------------------------------------------------------------------------------------------------------------------------------------=%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@#-.:.......................:::::::--------------:::::::...........................::::::::::::--------: :==-+++++++*+++++#@@@@@@@@%*+*++++*+++++++++++++++++++++++++++++++++++++++++++++++++++++**+++++*********++++++++++++++++++++++++++++++++++++++*@@@@@@@@@@@@@@@%%%%%%%%%%%%%%@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##################**++++*********+**************************+++++*%%#######%#######%##*****%%%%%##################################################################################**************************+++++++++++++++++==============++***************************************************************************####************+==========+**++=---------------------===-----------------------:--:-====--:--------------------:::::::::::::::::::::::::::::::::::----------:-:---======---=-:::::::::::::::::::::::::----::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--------::::::::::::::-------------======+++=-:::::..................................................................::--::::::::::::::--:::::::::......................................................... ....::-------------------------------------------------=============+++++++=============------::::::::::::::::::::::::::::::::::-----------------------------------::::::::::::::::::::::::::::::::::-----------------------------------------------------------::::::::::::::::::::::::::----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------==---------:::::...............:----=====================================---------::.........................:::--------:::.....:::--==----::::::::::::::::::::::::::::::::::::::--------------------------------------------==---------------------------------------------::::::::::::::::::::-----------------------------====+++++++++++++++==------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::--------====++++*********************************+++==------------------------------===++++++===---------------------------------------------------------------------------::::::::::::::::::::::::::::::::::::---------:::::::---==========+++++++++++++++++++++++++++++++++++++++*************************************************************************************++==--::::--=++*********************************************************************************************************************************************************************************************************####**********************************##############################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################*******++++++++++++++++++++++++++++++++***********************************
##****************++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******************++++++++++++++++++++++++++*++++++++++++++++++****************************++++++++++++++++++++++++++++++************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===-----*###+------==============================-------------------------------------------===++++++++++++++===-----------------------------------------------------------------------------------::::......::::-------------------------------------------------------------------------------------------------------------------------------------------------------------------------#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@%@@%*:........................::::::---------------::::::............................::::::::::::-------: -++--+++++*+++++++#@@@@@@@@@*+*+*++*+++++++++++++++++++++++++++++++++++++++++++++++++++++++*++++*********++++++++++++++++++++++++++++++++++++++*%@@@@@@@@@@@@@@%%%%%%%%%%%%%%%@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#################***+++*************************************+++++*%%###############%##*****%%%%%%#################################################################################***************************++++++++++++++==================++***************************************************************************####***********+=========+*+*++=----------------------===---------------------------=====-::-------------------::::::::::::::::::::::::::::::::----------::::::----======---=-::::::::::::::::::::::::----::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---------::::::::::::::------------======++++=-:::::..................................................................::-:::::::::::::-:::::::::::::............................................................. ...::---------------------------------------=========++++++++++++++=========---------::::::::::::::::::::::::::::::---------------------------------------::::::::::::::::::::::::::::::::::---------------------------------------------------------::::::::::::::::::::::::------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------=-----------------=--=--------=============================-------::.........................:::--------:::.....:::--===---::::::::::::::::::::::::::::::::::::::-------------------------------------------====--------------------------------------------::::::::::::::::::::----------------------------====++++++++++++++++==------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::--------====++++*********************************++===------------------------------===++++++===--------------------------------------------------------------------------::::::::::::::::::::::::::::::::::::::-------:::::::----==========+++++++++++++++++++++++++++++++++++++++*************************************************************************************++==--::::--==+*******************************************************************************************************************************************************************************************************########********************************##############################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################***********++++++++++++++++++++++++***************************************
###***************++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******************+++++++++++++++++++++++++++++++++++++++++++++*****************************+++++++++++++++++++++++++++++************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===-----*###*------==========+===================-------------------------------------------===++++++++++++++===-----------------------------------------------------------------------------------::::.....:::::-------------------------------------------------------------------------------------------------------------------------------------------------------------------------+%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@%*:.......................::::::---------------::::::............................::::::::::::--------=+++++++++++++++++*%@@@@@@@%*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*++++*********+++++++++++++++++++++++++++++++++++++*%@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%################**+++**************************************+*+++*%%%#%#####%#########*****#%%%%%#################################################################################*****************************++++++++++++===================++*#**************************************************************************####**********==========+*+**+=----------------------===------------------------:--=====--:-------------------:::::::::::::::::::::::::::::-------------:::::-----======---==-:::::::::::::::::::::::----::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---------::::::::::::::-------------======++++-::::::..................................................................:::::::::::::::::::::::::::--:.............................................................. ..:--------------------------------=====++++++++++++++++++++=====-----------:::::::::::::::-----------------------------------------------------::::::::::::::::::::::::::::::::::::-----------------------------------------------------:::::::::::::::::::::::::::---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------===----=------=---===================================-----:.........................:::---------::.....:::--===---::::::::::::::::::::::::::::::::::::::-------------------------------------------====--------------------------------------------::::::::::::::::::::---------------------------====+++++++****++++++==------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::--------====++++**+*****************************+++===-----------------------------====++++++===--------------------------------------------------------------------------::::::::::::::::::::::::::::::::::::::------::::::::----==========+++++++++++++++++++++++++++++++++++++++*************************************************************************************++==--::::--==+******************************************************************************************************************************************************************************************************##########*******************************###############################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################*************++++++++++++++++********************************************
######**##********+++++++++++++++++++++++++++++++++++++++++++++++++++++++********************++++++++++++++++++++++++++++++++++++++++++++++*******************************++++++++++++++++++++++++++************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===----*###*------=============================--------------------------------------------===++++++++++++++===-----------------------------------------------------------------------------------::::.....::::---------------------------------------------------------------------------------------------------------------------------------------------------------------------------%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@%+:......................::::::---------------:::::..............................::::::::::::-:---:=+++++++++++++++++*%@@@@@@@%*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********+++++++++++++++++++++++++++++++++++++#@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##############***+****##***********************************++*+*#%%%%#####%#########*****#%%%%%%################################################################################*****************************+++++++++++======================++#***************************************************************************####*********==========++**++=----------------------===----------------------:-:--======-::-------------------::::::::::::::::::::::::::::----------------:-:----=======---==-::::::::::::::::::::::---:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---------:::::::::::::::-------------======+++=-:::::::.................................................................:::::::::-::::::::::::::::::::............................................................. ..::-------------------====+++++++++++++++++++++=======------------------------------------------------------------------------------::::::::::::::::::::::::::::::::::::::--::----------------------------------------------::::::::::::::::::::::::::::-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------=----=======================================---::.....................::----------:::....::---===---:::::::::::::::::::::::::::::::::::::::------------------------------------------====--------------------------------------------::::::::::::::::::::--------------------------====++++++++*****+++++===-----------:::::::::::::::::::::::::::::::::::::::::::::::::::::--:--------====++++********************************+++===-----------------------------===++++++++==--------------------------------------------------------------------------::::::::::::::::::::::::::::::::::::::::---:::::::::---===========+++++++++++++++++++++++++++++++++++++++*************************************************************************************+++=--:::::-==++****************************************************************************************************************************************************************************************************#############****************************#################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################************************************************************************
######*************++++++++++++++++++++++++++++++++++++++++++++++++++++++********************++++++++++++++++++++++++++++++++++++++++++++++********************************+++++++++++++++++++++++++************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===---=*###*------=============================--------------------------------------------===++++++++++++++===-----------------------------------------------------------------------------------:::::....::::---------------------------------------------------------------------------------------------------------------------------------------------------------------------------*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@#=:..:.................:::::::--------------::::::..............................::::::::::::--:--:+++++++++++++++++*%@@@@@@@@*+*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********+++++++++++++++++++++++++++++++++++++*%@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#############********#####*************************####*********#%%%#%%###%%#####%%#*****#%%%%%%%################################################################################*****************************+++++++++++======================++*#**************************************************************************#####*******+=========+****++=-----------------------==----------------------:----======--:-------------------:::::::::------:::::::::::::------------------:-----======---==-:::::::::::::::::::::::--:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---------::::::::::::::::------------======++++=::::::::.................................................................::::::::::::::::::::::::::::-::............................................................ .::------===++++++++++++++++++++++===========------------------------------------------------------------------------------::::::::::::::::::::::::::::::::::::::::----------------------------------------------::::::::::::::::::::::::::::------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------===================================================-=---------::.........:::---------::.....::---===---:::::::::::::::::::::::::::::::::::::::------------------------------------------=====-------------------------------------------::::::::::::::::::::-------------------------====++++++*********++++===-----------:::::::::::::::::::::::::::::::::::::::::::::::::::::--:--------===+++++********************************+++==------------------------------===++++++++===-------------------------------------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::----===========+++++++++++++++++++++++++++++++++++++++**************************************************************************************++=--:::::-==++***************************************************************************************************************************************************************************************************###############***************************##################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################***********************************************************************
#######************+++++++++++++++++++++++++++++++++++++++++++++++++++++*********************+++++++++++++++++++++++++++++++++++++++++++++++********************************+++++++++++++++++++++++++***********************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===--+#####=----==============================--------------------------------------------===+++++++++++++====-----------------------------------------------------------------------------------:::::....::::---------------------------------------------------------------------------------------------------------------------------------------------------------------------------=%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@*=:....:..............::::::---------------::::::..............................:::::::::::-:-:---++++++*+++++++++*%@@@@@@@@*+*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***#*****+++++++++++++++++++++++++++++++++++++*@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##########********#########******************##########********#%%%##%%##%%########*****#%%%%%%%###############################################################################*******************************++++++++++========================++#***************************************************************************####*******+=========+*****++-----------------------===--------------------------======--::-------------------:::::------------:::::::::-------------------::----=======--===-::::::::::::::::::::::--::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---------::::::::::::::::------------======++++-:::::::::................................................................::-::::::::::::::::::::::::-:-:........................................................... .:-=+++++++++++++++++++++=============--------------------------------------------------------------------------------::::::::::::::::::::::::::::::::::::::::::::---------------------------------------::::::::::::::::::::::::::::----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------==============================================================================------------------:::....::---===---:::::::::::::::::::::::::::::::::::::::------------------------------------------=====-------------------------------------------::::::::::::::::::::------------------------====++++++**********++++===-----------:::::::::::::::::::::::::::::::::::::::::::::::::::::--:--------===+++++********************************+++==------------------------------===+++**+++===-------------------------------------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::----===========+++++++++++++++++++++++++++++++++++++++**************************************************************************************++=--:::::--=++**************************************************************************************************************************************************************************************************##################*************************####################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################*********************************************************************
########***********+++++++++++++++++++++++++++++++++++++++++++++++++++++*********************+++++++++++++++++++++++++++++++++++++++++++++++**********************************+++++++++++++++++++++++***********************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===--+#####+----=============================---------------------------------------------===+++++++++++++====-----------------------------------------------------------------------------------:::::...:::::----------------------------------------------------------------------------------------------------------------------------------------------------------------------------#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@%+-:.................:::::::---------------::::::...............................::::::::::-:-:--=*++++++++++++++*%@@@@@@@@*+*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****#*****+++++++++++++++++++++++++++++++++++++%@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######*********##############***************##########********#%@%%#%%##%%########*****#%%%%%%%###############################################################################********************************+++++++++=========================++##***************************************************************************####******==========******++-----------------------===---------------=----------=======--:--------------------------------------::::::------------------:-::----=======--====-:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---------::::::::::::::::-------=----======++++=-:::::::::................................................................::::::::::::::::::::::::-------......................................................... .-==++++++++++++++++++++================---------------------------------------------------------------------------------::::::::::::::::::::::::::::::::::::::::::---------------------------------------::::::::::::::::::::::::::::--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------===--=========================================================================+++++++++++++++++++++====-:::::--====---:::::::::::::::::::::::::::::::::::::::------------------------------------------=====--------------------------------------------:::::::::::::::::::------------------------===+++++++*********+++++===-----------:::::::::::::::::::::::::::::::::::::::::::::::::::::--:--------===+++++********************************++===------------------------------===+++**+++===----------------------------------------===------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::---===========++++++++++++++++++++++++++++++++++++++++**************************************************************************************++=--:::::--=++**************************************************************************************************************************************************************************************************###################************************####################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################*********************************************************************
########***********+++++++++++++++++++++++++++++++++++++++++++++++++++++*********************+++++++++++++++++++++++++++++++++++++++++++++++**********************************+++++++++++++++++++++++***********************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++====*#####+----=============================---------------------------------------------===+++++++++++++===------------------------------------------------------------------------------------:::::...:::::----------------------------------------------------------------------------------------------------------------------------------------------------------------------------+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@#+-.................::::::---------------:::::::................................:::::::::::-::-+++*+++++++++*+*%@@@@@@@@#+*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**##*****+++++++++++++++++++++++++++++++++++++%@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####**********##%##################*********###########********%%@@%##%%%%%%#######*****#%%%%%%%%##############################################################################********************************++++++++=+=========================++*#***************************************************************************#####*****=========+******++=----------------------===---------------=----------========-::---------------------------------------:::-------------------:-::-----=======-=====-::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::----------::::::::::::::::------=-----======++++=::::-::::::...............................................................::::::::::::::::::-------------:.................................::.................... .-++++++++++++++++++++====================----------------------------------------------------------------------------------:::::::::::::::::::::::::::::::::::::::::------------------------------------::::::::::::::::::::::::::::::-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------===========================================++++++++++++++++++++++++++++++++++++++++++++++++++++++++*++++=-::--====---:::::::::::::::::::::::::::::::::::::::------------------------------------------=====--------------------------------------------:::::::::::::::::::------------------------==++++++***********+++++==-------------::::::::::::::::::::::::::::::::::::::::::::::::::::----------====++++********************************+++===------------------------------===+++***++===---------------------------------------=====----------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::----==========+++++++++++++++++++++++++++++++++++++++++**************************************************************************************++=--:::::--=++*************************************************************************************************************************************************************************************************####################************************####################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################*********************************************************************
##########*********+++++++++++++++++++++++++++++++++++++++++++++++++++++*********************++++++++++++++++++++++++++++++++++++++++++++++++*********************#####********++++++++++++++++++++++**********************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++====*#####+----=====================+======----------------------------------------------===+++++++++++++===------------------------------------------------------------------------------------:::::..:::::------------------------------------------------------------------------------------------------------------------------------------------------------------------------------%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@#=:...............:::::::---------------::::::.................................::::::::::::::-*+++++++++++++*#@@@@@@@@@#*+++*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**##****+++++++++++++++++++++++++++++++++++++*%@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##***********##%%%%%%######################*#############*******%%%@%%#%%%%%%###%###*****#%%%%%%%%#############################################################################**********************************++++++++============================++##***************************************************************************#####***+=========+*******+=----------------------===---------------=---------=========--:---------------------------------------------------------------:::----=======-======-:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::----------::::::::::::::::------------======+++++-:::::::::::.............................................................:..::-::::::::::-----------------:.............................:::::.................... .:=++++++++++++++++++=======================------------------------------------------------------------------------------------::::::::::::::::::::::::::::::::::::::::::------------------------------::::::::::::::::::::::::::::::::--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------====--==============================++++++++++++++++++++++++++++++++++++++++++++++++++**+++++++++++++++++++++++++++++******+=---====---:::::::::::::::::::::::::::::::::::::::------------------------------------------======-------------------------------------------::::::::::::::::::------------------------===+++++************+++++==-------------::::::::::::::::::::::::::::::::::::::::::::::::::::----------===+++++********************************+++===------------------------------===+++***++===---------------------------------------======---------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::---===========+++++++++++++++++++++++++++++++++++++++++***************************************************************************************+==-:::::--==+*************************************************************************************************************************************************************************************************#####################***********************####################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################*********************************************************************
##########*********+++++++++++++++++++++++++++++++++++++++++++++++++++++*********************+++++++++++++++++++++++++++++++++++++++++++++++++*******************########*******++++++++++++++++++++***********************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===*#####*-----===========================----------------------------------------------===+++++++++++++===-------------------------------------------------------------------------------------::::.::::::------------------------------------------------------------------------------------------------------------------------------------------------------------------------------*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@%+=:.:............::::::----------------::::::..................................::::::::::::-=*++++++++++++*#@@@@@@@@@@@%*+*++*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**#*****+++++++++++++++++++++++++++++++++++++*%@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##********###%%%%%%%%%%%#################################******#%%@@@%##%%%%%#######*****#%%%%%%#%%###########################################################################************************************+++++++=============================++*%****************************************************************************####***+=========********+=----------------------===---------------=---------=========--::----------------------------------------------------::::::::-::::-----======-======--:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::----------::::::::::::::::------------======++++=-::::::::::::..........................................................:....:::::::------------------------..........................::::::::................... :-=++++++++++++++++=====-------===============-------------------------------------------------------------------------------------::::::::::::::::::::::::::::::::::::::::-------------------------:::::::::::::::::::::::::::::::::::::--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------=======================+++++++++++++++++++++++++**++++++++********++++++++*****+*************+*******+****++++++**++++++++++++++++**+******+=-====---:::::::::::::::::::::::::::::::::::::::-----------------------------------------=======-------------------------------------------::::::::::::::::::------------------------===++++*************+++++==-------------::::::::::::::::::::::::::::::::::::::::::::::::::::---------====+++++*******************************+++===-----------------------::------===+++***++===---------------------------------------======---------------------------::::::::::::::::::::::::::::::::::::::::::::::::::----==========++++++++++++++++++++++++++++++++++++++++++***************************************************************************************+==--:::::-==++***********************************************************************************************************************************************************************************************######################***********************####################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################*********************************************************************
#########***********++++++++++++++++++++++++++++++++++++++++++++++++++++*********************+++++++++++++++++++++++++++++++++++++++++++++++++******************##########*******+++++++++********+************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===*#####*-----==========================-----------------------------------------------===+++++++++++++===-------------------------------------------------------------------------------------:::::::::::------------------------------------------------------------------------------------------------------------------------------------------------------------------------------=%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@%@@@@%+=:.............::::::---------------:::::::..................................::::::::::::-+*+++*++*+++++#%@@@@@@@@@@@@%*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**##*****++++++++++++++++++++++++++++++++++++++%@@@@@@@@@@@@@@%%%%%%%%%%%%%%%@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##*#######%%%%%%%%%%%%%%%###############################******#%%%@@@%##%%%%######******#%%%%%%%%%###########################################################################*************************************+++++++=============================+++##****************************************************************************###***=========+*********=----------------------===-------------------------==========-::----------------------------------------------------:::::::::::::-----======-=======--::-:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::----------::::::::::::::::----------=-======+++++-::::::::::::::...:...........................................................:-----------------------------.......................::--::::::................... .:=+++++++++++++++++==------------=============----------------------------------------------------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------============++++++++++++++++++++++++++++++++++++++++++++++++***+++++++++++**************************************************+++*+++++++++++++++++++************+=====---:::::::::::::::::::::::::::::::::::::::-----------------------------------------=======-------------------------------------------::::::::::::::::::-----------------------===++++***************++++==-------------::::::::::::::::::::::::::::::::::::::::::::::::::::---------===+++++********************************+++===----------------------:::------===++****++===---------------------------------------======---------------------------::::::::::::::::::::::::::::::::::::::::::::::::::----==========++++++++++++++++++++++++++++++++++++++++++***************************************************************************************+==--:::::-==++***********************************************************************************************************************************************************************************************######################***********************####################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################*##******************************************************************
##########**********++++++++++++++++++++++++++++++++++++++++++++++++++++**********************+++++++++++++++++++++++++++++++++++++++++++++++++++****************##########*******++++++***********************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==*#####*-----=========++===============----------------------------------------------===++++++++++++++===-------------------------------------------------------------------------------------::::::::::--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@#==:..:........::::::----------------::::::....................................:::::::::::-**++*+++*+++**%@@@@@@@@@@@@@@%*++*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**##***++++++++++++++++++++++++++++++++++++++++*@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###%#####%%%%%%%%%%%%%%%%%%%##############################****#%%@@@@@%#%%%%######*****#%%%%%%%%%%%################################%%%%%%####################################**************************************++++++===============================++*%*****************************************************************************##***=========+*********=-----------------------==-------------------------==========--:----------------------------------------------------:::::::::::::-----=======-=======-::::-:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-----------::::::::::::::::------===-========+++++-:::::::::::::::..............................................................:-----------------------------:...................:------::::..................... .-=++++++++++++++++==------------------=========-----------------------------------------------------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------===========+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**++++**+***********************************************************************++*****************+====---:::::::::::::::::::::::::::::::::::::::-----------------------------------------=======-------------------------------------------::::::::::::::::::-----------------------===++++**************++++===-------------::::::::::::::::::::::::::::::::::::::::::::::::::::---------===++++*********************************++====-----------------------:::------==+++***+++==---------------------------:::::::-----=======--------------------------:::::::::::::::::::::::::::::::::::::::::::::::::----==========+++++++++++++++++++++++++++++++++++++++++++***************************************************************************************++=--:::::--=++***********************************************************************************************************************************************************************************************#######################***********************####################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################********************************************************************
##########**********++++++++++++++++++++++++++++++++++++++++++++++++++++*********##************+++++++++++++++++++++++++++++++++++++++++++++++++++***********#**############******+++++************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*++++++++######*-----==========================----------------------------------------------===++++++++++++++===-------------------------------------------------------------------------------------::::::::::--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@%*=-:..:.......::::::----------------::::::.....................................::::::::::=*++++++++++**%@%@@@@@@@@@@@@@@%+*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**##***++++++++++++++++++++++++++++++++++++++++*@@@@@@@@@@@@@%%%%%%%%%%%%%%%%@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###%%%%%%%%%%%%%%%%%%%%%%%%%%%##############################**#%%%@@@@%%#%%%#######****#%%%%%%%%%%%###########################%%%#############################################**************************************+++++================================++*##****************************************************************************#***+=========**********+-----------------------==-------------------------==========---:----------------:----------------------------------:::::::::::::-----=======--=======-::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::----------::::::::::::::::-------==-=========++++=-:::::::::::::::..............................................................:-----------------------------:.................:--------::.................... .-=+++++++++++++++==-----------------------=====--------------------------------------------------------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------======++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****++************************************************************************************************+===--:::::::::::::::::::::::::::::::::::::::-----------------------------------------=======-------------------------------------------::::::::::::::::::-----------------------===++++**************++++===-------------::::::::::::::::::::::::::::::::::::::::::::::::::::--------====++++********************************+++====-----------------------::::-----==+++***+++==------------------------::::::::::-----=======--------------------------:::::::::::::::::::::::::::::::::::::::::::::::::----==========+++++++++++++++++++++++++++++++++++++++++++***************************************************************************************++=--:::::--=++**********************************************************************************************************************************************************************************************########################***********************####################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################********************************************************************
##########**********++++++++++++++++++++++++++++++++++++++++++++++++++++*********##*********************++++++++++++++++++++++++++++++++++++++++++++*********#**############*******++**************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**+++++++######*------========================-----------------------------------------------===+++++++++++++===--------------------------------------------------------------------------------------:::::::::---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------=%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@%+=-.........::::::-----------------::::::......................................:::::::::+*+++***++*+*%@%@@@@@@@@@@@@@@@@+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**#***++++++++++++++++++++++++++++++++++++++++**@@@@@@@@@@@@%%%%%%%%%%%%%%%%%@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#############################%%%%%%%%%##%##########**#%%%%%%%%%%%%##########################################################################***************************************+++++================================+++##********************************************************************************+========+********+*+-----------------------==------------------------============--::---------------:----------------------------------:::::::::::::------=======-=======-::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::----------:::::::::::::::::------============+++++-:::::::::::::::::.............................................................:----------------------------=:..............:---------::....................... .-++++++++++++++++==-:::-::--------------------===---------------------------------------------------------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------===========+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********************************************************************************************************+=---::::::::::::::::::::::::::::::::::::::::----------------------------------------========-------------------------------------------:::::::::::::::::-----------------------===++++**************++++===--------------:::::::::::::::::::::::::::::::::::::::::::::::::::--------===+++++*******************************+++====------------------------::::-----==+++***+++==---------------------:::::::::::::-----=======--------------------------:::::::::::::::::::::::::::::::::::::::::::::::::---===========+++++++++++++++++++++++++++++++++++++++++++***************************************************************************************++=--:::::--=++**********************************************************************************************************************************************************************************************#########################**********************#####################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################*******************************************************************
##########**********+++++++++++++++++++++++++++++++++++++++++++++++++++***********************************+++++++++++++++++++++++++++++++++++++++++++***********#############**********************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****+++++++#%%%##*=-----========================----------==-----------------------------------===+++++++++++++===---------------------------------------------------------------------------------------:::::::----------------------------------------:::::::::::::::::::------------------------------------------------------------------------------------------------------------------------#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@%@#==:.....:..::::::----------------:::::::.......................................:::::::-*+**++++++**#@%%@@@@@@%%%%@@@@@@*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*##*+*++++++++++++++++++++++++++++++++++++++++**%@@@@@@@@@@%%%%%%%%%%%%%%%%%@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%%@@%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###########################%%%%%%###############*##%%%%%%%%%%%%#######################################################################*##***************************************+++++=================================+++*%#*******************************************************************************=========+********+*+-----------------------==------------------------============--::----------------:---------------------------------:::::::::::::------=======--=======-::-::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-----------::::::::::::::::-------============++++=-:::::::::::::::::.............................................................:--------------------------===-...........:----------:....................... .-+++++++++++++++==--:::---------------------------------------------------------------------------------------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------==============++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********************************************************************************************************+---::::::::::::::::::::::::::::::::::::::::---------------------------------------=====+===-------------------------------------------:::::::::::::::::-----------------------==++++***************++++===--------------:::::::::::::::::::::::::::::::::::::::::::::::::::--------===+++++******************************+++====-------------------------:::::----==+++***+++==--------------------::::::::::::::-----=======--------------------------::::::::::::::::::::::::::::::::::::::::::::::::----==========++++++++++++++++++++++++++++++++++++++++++++***************************************************************************************++=--:::::--=++*****************************************************************************************************************************************************************************#####************#########################**********************######################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################******************************************************************
##########**********++++++++++++++++++++++++++++++++++++++++++++++++++*************************************+++++++++++++++++++++++++++++++++**++++++++***********############**********************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******+++++*#%%%##*=------========================-----========---------------------------------===+++++++++++++===----------------------------------------------------------------------------------------:::::-----------------------------------:::::::::::::::::::::::::::::--------------------------------------------------------------------------------------------------------------------+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@*+=:.:.....:::::-----------------:::::::.......................................:::::::=*+*+*++**++#@%@@%%%%%%%%%%@@@@@@*+*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**##*+*++++++++++++++++++++++++++++++++++++++++***@@@@@@@@@@%%%%%%%%%%%%%%%%%@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%%@@@%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###############%%#####################%%%%%%%%%%%%%%########################################################################*##**************************************+++++=================================+++*##******************************************************************************+========+**********++=----------------------=-------------------------============--::----------------:-------------------------:::::::::::::::::::::------========-========-::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-----------::::::::::::::::-------=============++++=-::::::::::::::::::.......................................::...................::----------------------===+===........:----------:........................ .-+++++++++++++++=---:::---::-:::---------------------------------------------------------------------------------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------=================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****+++++++++++++++++++++++++********************************************************************************************************+---:::::::::::::::::::::::::::::::::::::::---------------------------------------===+++===-------------------------------------------::::::::::::::::::---------------------===++++***************++++===--------------:::::::::::::::::::::::::::::::::::::::::::::::::::-------===+++++*****************************+++++===-------------------------::::::----==+++****++==-------------------:::::::::::::::-----=======--------------------------::::::::::::::::::::::::::::::::::::::::::::::::---===========++++++++++++++++++++++++++++++++++++++++++++***************************************************************************************++=--:::::--=++*****************************************************************************************************************************************************************************######**********############################*******************#######################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################******************************************************************
##########**********++++++++++++++++++++++++++++++++++++++++++++++++++*************************************+++++++++++++++++++++++++++++++++**+++++++++***********###########***********************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********+++*#%%%###=-------=====================================--------------------------------===+++++++++++++===------------------------------------------------------------------------------------------:--------------------------------:::::::::::::::::::::::::::::::::::::------------------------------------------------------------------------------------------------------------------%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@%@@@@@%+=-.:....::::::-----------------::::::..........................................:::::+**+++***++*%@%%%%%%%%%%%%@@@@@@%++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**##*+*+++++++++++++++++++++++++++++++++++++++++**%@@@@@@@@@%%%%%%%%%%%%%%%%%@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###############%%#####################%%%%%%%%%%%%%%############################################################################**************************************+++++=================================++++##******************************************************************************+========+**********++=----------------------=-------------------------=============--:-----------------:------------------------:::::::::::::::::::::-------================--::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-----------::::::::::::::::------=============+++++-:::::::::::::::::::....................................::.......................:------------:::::::--==++=++=:....:----------::.......................... .-=+++++++++++++==--:::::------::-------------------------------------------------------------------------------------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------=======================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++************++++++++++++++++++++++**************************************************************************************************#**#****=-::::::::::::::::::::::::::::::::::::::::--------------------------------------===+++++==-------------------------------------------::::::::::::::::::---------------------===++++***************++++===--------------:::::::::::::::::::::::::::::::::::::::-::::::::-::-------===+++++****************************+++++====-------------------------:::::::---==+++****++==-----------------::::::::::::::::::----=======--------------------------:::::::::::::::::::::::::::::::::::::::::::::::----===========++++++++++++++++++++++++++++++++++++++++++++***************************************************************************************++=--:::::--==++****************************************************************************************************************************************************************************######**********############################*******************########################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################*****************************************************************
##########**********+++++++++++++++++++++++++++++++++++++++++++++++++**************************************+++++++++++++++++++++++++++++++****++++++++++***********##########***********************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***********++*%%%%%##+--------====================================--------------------------------===+++++++++++++===----------------------------------------------------------------------------------------------------------------------:::::::::::::::::::::::::::::::::::::::::::-----------------------------------------------------------------------------------------------------------------*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@#+=:.....::::::----------------:::::::...........................................:::-***+*****+*%@%%%%%%%%%%%%@@@@@@@#+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***##**+*++++++++++++++++++++++++++++++++++++++++**%@@@@@@@@@%%%%%%%%%%%%%%%%%@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###############%####%###############%%%%%%%%%%%%%%%########################################################################*###*#********+++*************************++++++=================================++++*##*****************************************************************************=========************+=------------------------------------------------=============---:---------------:-------------------------:::::::::::::::::::::-------=================--:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::------------::::::::::::::::------=============++++=-::::::::::::::::::::........................::..................................:--------:::::::::::---=+++++=:.:----------::............................:-++++++++++++++=--:::::-::-::::-----------------------------------------------------------------------------------------------------------------------------:::::::::::::::::::.:::::::::::::::::::::::::::::::::::::::::::::::::::::::-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------===========================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****************++++++++++++++++++++++++++++++++++******************************************************************************************#***+-:::::::::::::::::::::::::::::::::::::::--------------------------------------==++++++==-------------------------------------------::::::::::::::::::---------------------===++++***************++++===--------------::::::::::::::::::::::::::::::::::::::--------------------===+++++**+***********************+++++=====---------------------------::::::---==+++****++==-----:::-------::::::::::::::::::::----=======--------------------------:::::::::::::::::::::::::::::::::::::::::::::::---===========+++++++++++++++++++++++++++++++++++++++++++++***************************************************************************************++=--:::::--==++***************************************************************************************************************************************************************************########*********############################*******************########################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################*****************************************************************
##########***#******++++++++++++++++++++++++++++++++++++++++++++++++**********************+++*************++++++++++++++++++++++++++++++++****+++++++++++***********##########**********************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**************#%%%%%##+----------==================================--------------------------------===+++++++++++++===--------------------------------------------------------------------------------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::-----------------------------------------------------------------------------------------------------------------=@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@*+=:....::::::----------------::::::.............................................::=*++******##@%%%@%%%%%%%%%@@@@@@@*++*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**##***+*++++++++++++++++++++++++++++++++++++++++*%@@@@@@@@@@%%%%%%%%%%%%%%%%%@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####################################%%%%%%%%%%%%%%%%#########################################################################*###*********+++*************************+++++===================================+++*##*****************************************************************************========+*************=-----------------------------------------------==============---:---------------:-------------------------::::::::::::::::::-:::------==================-::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-----------::::::::::::::::------=============+++++-:::::::::::::::::::::............................................................:--::::::::::::::::::-==++++++=---------::............................-=++++++++++++==-::::::::::::::---:::--------------------------------------------------------------------------------------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------============================+++++++++++++++++++++++++++++++++++++++++++++++++++++*********************+++++++++++++++++++++++++++++++++++++++*************************************************************************########*#######**=-::::::::::::::::::::::::::::::::::::::-------------------------------------===++++++===------------------------------------------::::::::::::::::::---------------------===++++***************++++===--------------::::::::::::::::::::::::::::::::::::::--------------------==+++++**++*********************++++++=====----------------------------:::::::--==+++****++==----:::::::::::::::::::::::::::::::----=======--------------------------::::::::::::::::::::::::::::::::::::::::::::::----===========+++++++++++++++++++++++++++++++++++++++++++++***************************************************************************************++=--:::::--==++***************************************************************************************************************************************************************************########*********############################*******************####*###################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################*****************************************************************
########*#***********+++++++++++++++++++++++++++++++++++++++++++++**********************+++++++++********++++++++++++++++++++++++++++++++*****++++++++++++***********########***********************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**************#%%%%%##+------------================================--------------------------------===+++++++++++++====------------------------------------------------------------------------------------------------------------------::::::::::::::::::::::::::::::::::::::::::::--------------------------------------------------------------------------------------------------------------------#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@%++=:...::::::----------------::::::.....................................:..:....::++****####%%@%%%%%%%%%%%%%%%@@@@%++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**##*+*+*+*++++++++++++++++++++++++++++++++*++++*%@@@@@@@@@@@%%%%%%%%%%%%%%%%@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%@@@%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%############%%%%##################%%%%%%%%%%%%%%%%###########################################################################*###******++++++************************+++++===================================++++###***************************************************************************+========**************+-----------------------------------------------==============--------------------:---------------------:::::::::::::::::::--::-:-------==================-:-::::-:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::----------:::::::::::::::::-----==============+++++-::::::::::::::::::::-:........................:::................................:::::::::-:::::::::::-=+++++++=-------:...........................-=++++++++++++==-::::::::::::::::::--:----------------------------------------------------------------------------------------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------================================+++++++++++++++++++++++++++++++++++++++++++++++++**************************+++++++++++++++++++++++++++++++++++++++++++++**+++************************************************************###################**=::::::::::::::::::::::::::::::::::::::------------------------------------===+++++++===-------------------------------------------:::::::::::::::::---------------------==++++*****************+++===--------------:::::::::::::::::::::::::::::::::::-----------------------==+++++*******+**+***+*++++++++++++++=====-----------------------------:::::::---==++****++==---::::::::::::::::::::::::::::::::----=======--------------------------::::::::::::::::::::::::::::::::::::::::::::::---===========++++++++++++++++++++++++++++++++++++++++++++++***************************************************************************************++=--::::::--=++***************************************************************************************************************************************************************************########********##############################*******************############################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################************************************************************
########*#***********++++++++++++++++++++++++++++++++++++++++++++*********************++++++++++++*****+++++++++++++++++++++++++++++++++******++++++++++++************#*#####***********************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**************#%%%%%%#+--------------==============================--------------------------------===++++++++++++++===-----------------------------------------------------------------------------------------------------------------::::::::::::::::::::::::::::::::::::::::::-----------------------------------------------------------------------------------------------------------------------*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@#==-....:::::----------------::::::..............................................-+**#######%%@%%%%%%%%%%%%%%%@@@@#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**##*+*+*+*++++++++++++++++++++++++++++++++++++#%@@@@@@@@@@@%%%%%%%%%%%%%%%%%@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%@@@%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########%%%@@%%###############%%%%%%%%%%%%%%%%%%#######*###################################################################**###******+++++************************+++++===================================++++###***************************************************************************+=======+**************+-----------------------------------------------==============------------------------------------------:::::::::::::::::::--::---------==================--:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::----------:::::::::::::::::------=============+++++=::::::::::::::::::::::::........................::................................::::::::::::::::::::-==+++++++=----:....................... ..:=++++++++++++=--:::::::::::::::::::::--:----------------------------------------------------------------------------------------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------================================+++++++++++++++++++++++++++++++++++++++++++++********************************++++++*++++++++++++++++++++++++++++++++++**********************************************************#############################*#*=:::::::::::::::::::::::::::::::::::::------------------------------------==+++***+++==-------------------------------------------:::::::::::::::::---------------------==++++**************+*++++===--------------:::::::::::::::::::::::::::::::::::-----------------------==+++++****+++***+**++++++++++++++++=====------------------------------:::::::---==++****++==---::::::::::::::::::::::::::::::::----=======--------------------------:::::::::::::::::::::::::::::::::::::::::::::----===========++++++++++++++++++++++++++++++++++++++++++++++***************************************************************************************++=--::::::--=++***************************************************************************************************************************************************************************#########*******##############################******************#############################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################************************************************************
########*#***********++++++++++++++++++++++++++++++++++++++++++**********************++++++++++++++**+++++++++++++++++++++++++++++++++++******+++++++++++++*************#####***********************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**************#%%%%%%#*------------------=-----===================--------------------------------====++++++++++++++====--------------------------------------------------------------------------------------------------------------::::::::::::::::::::::---------------------------------------------------------------------------------------------------------------------------------------------=%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@%++=:.:.:::::---------------:::::::.....................................:.......:=*########%%%%%%%%%%%%%%%%%%%%@@@*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**##*+*+++*+++++++++++++++++++++++++++++++*++*#@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%@@@@%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######%%@@%%%%%%%%%#########%%%%%%%%%%%%%%%%%%############################################################################****##****++++++***********************+++++=====================================+++*##***************************************************************************========+#*************+=----------------------------------------------==============------------------------------------------:::::::::::::::::----::---------===================-::::-::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-=---------:::::::::::::::::------=============+++++-:::::::::::::::::::::::::.......................:::...............................::::::::::::::::::::-=++++++++=-:....................... ..-=+++++++++++=--::::::::::::::::::::::::------------------------------------------------------:-----------------------------------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------===================================+++++++++++++++++++++++++++++++++++++++++***********************************************************************************************************************************###################################*#*=::::::::::::::::::::::::::::::::::::-----------------------------------===+++***+++==--------------------------------------------::::::::::::::::--------------------===++++**************++++++===--------------:::::::::::::::::::::::::::::::::::-----------------------==+++++*************++++++++++++++======-------------------------------:::::::---==++****++==---::::::::::::::::::::::::::::::::----=======--------------------------:::::::::::::::::::::::::::::::::::::::::::::----===========++++++++++++++++++++++++++++++++++++++++++++++***************************************************************************************++=--::::::--=++***************************************************************************************************************************************************************************##########******###############################****************###############################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################***********************************************************
########*************+++++++++++++++++++++++++++++++++++++++***********************++++++++++++++++++++++++++++++++++++++++++++++++++++*******++++++++++++++************#**##***********************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***************#%%%%%%#*-------------------------==================-------------------------------====++++++++++++++++===-----------------------------------------------------------------------------------------------------------------:::::::::::------------------------------------------------------------------------------------------------------------------------------------------------------#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@#=+=::.::::::--------------::::::.............................................:+##########%%%%%%%%%%%%%%%%%%%@@@%+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**##*+*++**+++++++++++++++++++++++++++++++++**@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%@@@@%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######%%%%%%%%%%%%%%%%%####%%%%%%%%%%%%%%%%%%%%############################################################################*****##***+++++++**********************+++++=====================================+++*##**************************************************************************+========*#**********+**+=----------------------------------------------==============------------------------------------------:::::::::::::::-------:---------====================-::-::-::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-=---------::::::::::::::::::-----=============+++++=-:::::::::::::::::::::::::.......................::................................:::::::::::::::::::-=+++++++++=:.................... .:=+++++++++++=-::::::-:::::::::::::::::::::-----------------------------------------------------------------------------------------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------=====================================++++++++++++++++++++++++++++++++++++++++************************************************************************************************************************************########################################*=-::::::::::::::::::::::::::::::::::-----------------------------------===++****+++==--------------------------------------------::::::::::::::::--------------------===++++**************++++++===--------------:::::::::::::::::::::::::::::::::::-----------------------==+++++++**********+++++++=====++======--------------------------------:::::::---==++****++==---::::::::::::::::::::::::::::::::-----=====---------------------------::::::::::::::::::::::::::::::::::::::::::::----===========++++++++++++++++++++++++++++++++++++++++++++++****************************************************************************************++==-::::::--=++***************************************************************************************************************************************************************************###############################################****************################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################**********************************************************
########*************+++++++++++++++++++++++++++++++++++++************************+++++++++++++++++++++++++++++++++++++++++++++++++++++*******+++++++++++++++***************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****************#%%%%%%#*=------------------------=======++========-------------------------------====+++++++++++++++++===----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@%%+++-.:::::::-------------:::::::.....................................:.....:=##########%%%%%%%%%%%%%%%%%%%%%@@@*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**##**+*+***+++++++++++++++++++++++++++++++++*%@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%%%%%@@@@@%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#############################################################################******##*++++++++**********************+++++=====================================+++*###*************************************************************************========+##************++=----------------------------------------------==============------------------------------------------:::::::::::::::------------------===================-::-::-:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::==------=-:::::::::::::::::::----==============+++++=:::::::::::::::::::::::::::......................::.................................:::::::::::::::::-==+++++++++-.................. .:=+++++++++++=-::::::::::::-:::::::::::::::::----------------------------------------------------------------------------------------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------======================================+++++++++++++++++++++++++++++++++++++***************************************************************************************************************************************##########################################*=::::::::::::::::::::::::::::::::::-----------------------------------===++****+++==--------------------------------------------::::::::::::::::--------------------==++++****************+++++==---------------:::::::::::::::::::::::::::::::::::-----------------------==+++++++++++******++++++==============--------------------------------:::::::---==++****+++=---::::::::::::::::::::::::::::::::-----====---------------------------:::::::::::::::::::::::::::::::::::::::::::::----==========+++++++++++++++++++++++++++++++++++++++++++++++****************************************************************************************++==--:::::--=++***************************************************************************************************************************************************************************###############################################****************################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################**********************************************************
########**************++++++++++++++++++++++++++++++++++*************************+++++++++++++++++++++++++++++++++++++++++++++++++++++********+++++++++++++++***************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****************#%%%%%%#*=----::::----------------======+++=======-------------------------------====+++++++++++++++++++===---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------=%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@#=+=:..:::::------------::::::::........................................:-+############%%%%%%%%%%%%%%%%%%%%@@@%+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**##***++***+++++++++++++++++++++++++++++++*+#@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%@@@@@%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####%%%%#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#############################################################################********##++++++++*********************++++++=====================================++++###*********************************************************************#*#*========*#**************+=----------------------------------------------==============------------------------------------------:::::::::::::-----------:--------====================-:::-::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-=------=--::::::::::::::::::-----=============+++++=-::::::::::::::::::::::::--:::...................::..................................::::::::::::::::-=++++++++==-:................:-=++++++++++==:::::::::::::-:::::::::::::::::::--------------------------------------------------------------------------------------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------========================================+++++++++++++++++++++++++++++++**+********************************************************************************************************************************************###########################################*=:::::::::::::::::::::::::::::::::-----------------------------------===++*****++==--------------------------------------------::::::::::::::::-------------------===++++****************++++===---------------::::::::::::::::::::::::::::::::::::----------------------===+++++++++++*****+++++===============--------------------------------:::::::---==++****+++=---:::::::::::::::::::::::::::::::::-----===--------------------------:::::::::::::::::::::::::::::::::::::::::::::----===========+++++++++++++++++++++++++++++++++++++++++++++++************************************************************************++**************++==--:::::--=++***************************************************************************************************************************************************************************################################################****************################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################*********************************************************
########**************+++++++++++++++++++++++++++++++***************************++++++++++++++++++++++++++++++++++++++++++++++++++++++********+++++++++++++++***************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****************#%%%%%%#*=---:::::::-------------=======++========------------------------------====++++++++++++++++++++===----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@%+=+=:.:::::::----------::::::::.....................................:=*##############%%@%%%%@@%%%%%%%%%%%@@@@#++*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**##***+****++++++++++++++++++++++++++++++++*%@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%@@@@@%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##############################################################################*********#*+++++++*********************++++++=====================================++++###************************************************************************+=======+****************+=---------------------------------------------===============------------------------------------------::::::::::---------:--:-:--------=====================-::-::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-=------=--:::::::::::::::::::----==============+++++=::::::::::::::::::::::-------::::...............::..................::::::::::::::::::::::::::::::::-=+====----::-:............:-=+++++++++++=-:::::::::::::::::::::::::::::::::::-------------------------------------------------------------------------------------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------======================================++++++++++++++++++++++++++++++***************************************************************************************************************************************************############################################*=:::::::::::::::::::::::::::::::::----------------------------------===++*****++==--------------------------------------------::::::::::::::::-------------------===++++***************+++++===---------------::::::::::::::::::::::::::::::::::::----------------------===+++++++++++****++++++===============---------------------------------::::::---==++****+++=---::::::::::::::::::::::::::::::::::------------::----------------::::::::::::::::::::::::::::::::::::::::::::::::----===========+++++++++++++++++++++++++++++++++++++++++++++++***********************************************************************++++*************++==--:::::--==+***************************************************************************************************************************************************************************################################################******************##############################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################*********************************************************
########**************+++++++++++++++++++++++++++++***************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++*********+++++++++++++++***************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****************%%%%%%%#*=---::::::::------------=====+++========------------------------------====+++++++++++++++++++++===----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@#==+-:.:::::::--------:::::::::::::............................::-+*################%%@@%%%%%%%%%%%%%%%%%@@@%++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**##***+**+*++++++++++++++++++++++++++++++++#@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%@@@@@%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###############################################################################**********##++++++*********************+++++======================================++++###**********************************************************************#*========+*****************=---------------------------------------------===============------:-----------------------------------:::::::::----------:--:::--------=====================-:::-:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-=------==-:::::::::::::::::::-----=============++++++-:::::::::::::::::::-----------:::::::.........::...............:::--:::-:::::::::::::::::::::::::::-==---:::::-::-:.........-=+++++++++++=-:..:::::::-::::::::::::::::::::::::::----------------------------------::::----------------------------------------------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------======================================++++++++++++++++++++++++++*********************************************##########**************************************************************************************************############################################*=::::::::::::::::::::::::::::::::-----------------------------------==++*****++==--------------------------------------------::::::::::::::::-------------------==+++++***************+++++===---------------::::::::::::::::::::::::::::::::::::----------------------====++++++++++*****++++===========+=====--------------------------------:::::----==++****+++=---::::::::::::::::::::::::::::::::::----------::::::---------:::::::::::::::::::::::::::::::::::::::::::::::::::::----===========+++++++++++++++++++++++++++++++++++++++++++++++***********************************************************************++++*************++==--:::::--==++*************************************************************************************************************************************************************************#################################################*******************#############################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################*********************************************************
#############***********+++++++++++++++++++**********************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++**********+++++++++++++++***************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****************%%%%%%%#*=--:::::::::------------===============------------------------------====++++++++++++++++++++++===-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@%%+=+=::.::::::::--::::::::::::::-----::::::---:.............:-+**###################%@@@%%%%%%%%%%%%%%%%@@@@**+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*###********++++++++++++++++++++++++++++++++%@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%@@@@@%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%################################################################################************#*++++********************++++++=======================================+++*###*********************************************************************#*========******************=---------------------------------------------===============------:------------------------------------::::--------------:-::-:---------=====================-::::-::::-::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-==------=-::::::::::::::::::::----==============+++++=::::::::::::::::----------------:..:::::::::::................::::...::::::::::::::::::::::::::::::---::::::::::::-::....:=+++++++++++=-:..::::::::::::::::::::-::::::::::::::::-----------------------------------------------------------------------------------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------======================================++++++++++++++++++++++++++*******************************************####################**********************************************************************************************############################################*=:::::::::::::::::::::::::::::::-----------------------------------==++*****++==--------------------------------------------::::::::::::::::------------------===+++++****************++++===---------------::::::::::::::::::::::::::::::::::::::--------------------========+++++++**++++++=====-====+++====--------------------------------::::-----==++****+++=---:::::::::::::::::::::::::::::::::::--------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---===========++++++++++++++++++++++++++++++++++++++++++++++++***********************************************************************++++**************+==--:::::--==++****************************************************************************************************************************************************************************##############################################******************#############################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################**********************************************************
#############***********+++++++++++++++++************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++**********+++++++++++++++***************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****************%%%%%%%#*=--:::::::::------------===============------------------------------====+++++++++++++++++++++++===----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#=++-:::::::::::::::::::::::-=======---====-:....:......:-+**#####*###############%%@@%%%%%%%%%%%%%%%%@@@%**++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*###**+*+***+++++++++++++++++++++++++++++++*%@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%%%%%%%%%%@@@@@%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%################################################################################********++++**++++********************++++++=======================================+++*###*********************************************************************#+=======+******************+---------------------------------------------===============--------------------------------------------::-----------------::-:---------======================-:-:-::::-::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-====----=-::::::::::::::::::::----===============+++++-::::::::::::--------------------:........:..............................:::::::::::::::::::::::::::::::::::::::::::::-=+++++++++++=-:...:::::--::::::::::::::::::::::::::::::::----------------------------------------------------------------------------------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------==---==================================++++++++++++++++++++++**********************************************##########################*********************************************************************************************###########################################*=:::::::::::::::::::::::::::::::----------------------------------==++*****++===-------------------------------------------::::::::::::::::------------------===++++*****************++++===---------------::::::::::::::::::::::::::::::::::::::--------------------=========++++++**++++++=====-===++++====---------------------------------:::----===++****+++=---::::::::::::::::::::::::::::::::::::------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---==========+++++++++++++++++++++++++++++++++++++++++++++++++***********************************************************************+++++*************+==--:::::--==++****************************************************************************************************************************************************************************##############################################******************#############################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################**********************************************************
#############**************++++++++++++*************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++************++++++++++++++*******#**********#********************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****************%%%%%%%#*=--::::::::-------------==============------------------------------====++++++++++++++++++++++++===-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::--------------------------------------------------------------------------------=@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%==++-.::::::::::::::::::-========----==-::....:..:..:-+***********#############%%@@@@%%%%%%%%%%%%%%%@@@%#+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**###**+*+***+++++++++++++++++++++++++++++++*%@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%@@@@@%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%################################################################################******++++++++++++*******************+++++++=====================================-=+++*###**********************************************************************========+******************+=--------------------------------------------===============----------------------------------------------------------------:-:---------======================-::::::-::-::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::=====---==:::::::::::::::::::::----==============++++++-:::::::::------------------------:........................................::::::::::::::::::::::::::::::::-:::::--=+++++++++++=-:....:::-:::-:::::::::::::::::::::::::::::::::----------------------------------------------------------------------------------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------===--=========-===========================+++++++++++++++*************************************************#######################################****************************************************************************************###########################################*=::::::::::::::::::::::::::::::----------------------------------==++*****++===-------------------------------------------::::::::::::::::-----------------===+++++*****************++++===---------------::::::::::::::::::::::::::::::::::::::---------------------=========+++++**++++++====--===+++++====---------------------------------------==+++****+++==---:::::::::::::::::--:::::::::::::::::----:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---==========+++++++++++++++++++++++++++++++++++++++++++++++++**********************************************************************++++++*************+==--:::::--==++*****************************************************************************************************************************************************************************#############################################*******************#############################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################*********************************************************
#############****************++++++++**************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++*************+++++++++++++*******##*#****#########***************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****************%%%%%%%%*---::::::::-------------==============------------------------------===+++++++++++++++++++++++++===----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------::::::-------------------------------------------------------------------------------%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@*-=+=:.:.:::::::::::::-======--::::.::::...:......:=**************#######*****%%@@@@%%%%%%%%%%%%%%%%@@%#*++**+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**###**+*+*++++++++++++++++++++++++++++++++++%@@@@@@@@@@@@@@@@@@%%%%%%%%%%%@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%%%%%%%%%%%@@@@@%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#############################################################################*******+++++=====++******************++++++++=====================================-=+++*###*********************************************************************+=======+*******************+=-------------------------------------------===============--------=--------------------------------------------------------:-:----------======================-::-:::::-::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::=======-==-:::::::::::::::::::::----==============+++++=::::::----------------------------:.........................................:::::::::::::::::::::::::::::::::--=++++++++++++=-....::::--::-:::::::::::::::::::::::::::::::::-------------------------:--------------------------------------------------------------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::------------------------------------------------------------------------------------------------------------==========================---------------------------------=====--=======--=============================+++++++++++++++***********************************************####################################################*********************************************************************************###########################################*=:::::::::::::::::::::::::::::----------------------------------==++*****+++==--------------------------------------------::::::::::::::::----------------===++++******************++++===---------------::::::::::::::::::::::::::::::::::::::-----------------------=======++++++*++++++====--===+++++====---------------------------------------==+++*****++==---:::::::::::::::--------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::----=========++++++++++++++++++++++++++++++++++++++++++++++++++**********************************************************************++++++*************++=--::::::--=++*****************************************************************************************************************************************************************************##*###########################################******************#############################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################*********************************************************
#############*******************++++**************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++***************+++++++++++******####*##################***********************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****************%%%%%%%%*---:::::::--------------=============-------------------------------===+++++++++++++++++++++++++===----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::::::::----------------------------------------------------------------------------*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%-=++-..:::::::::::--=+===-::..................:-+***************************%%@@@@@%%%%%%%%%%%%%%%%%%%#*+++*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*####****+**+++++++++++++++++++++++++++++++++#@@@@@@@@@@@@@@@@@@@@@@%%%%%%@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%@@@@%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%############################################################################******++++++++====++****************+++++++++=====================================-=+++*###*********************************************************************+=======+*******************+=-------------------------------------------===============---------=-------------------------------------------------------:-:----------=======================-::--::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::=======-==-::::::::::::::::::::::---===============+++++-:::-----------------------------:--:.........................................::::::::::::::::::::::::::::--=+++++++++++==-:....:::-:-:::--::-::::::::-:::::::::::::::::::::-------------------------:--------------------------------------------------------------------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--------------------------------------------------------------------------------------------------==========================================----------------================-====================================++++++++++++**************************************************#########################################################################****************************************************************###########################################*=::::::::::::::::::::::::::::----------------------------------==++*****+++==--------------------------------------------::::::::::::::::----------------===++++******************++++==----------------::::::::::::::::::::::::::::::::::::::--------------------------=====+++++*++++++====--===++++++===---------------------------------------==+++*****++==-----::::::::::::----------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::----=========++++++++++++++++++++++++++++++++++++++++++++++++++**********************************************************************+++++++************++=--::::::--=++******************************************************************************************************************************************************************************#**###########################################******************##############################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################*******************************************************
#############************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****************+++++++********#######################***********************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******************%%%%%%%%*=---:::-----------------=============------------------------------===++++++++++++++++++++++++++===-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------::::::----------------------------------------------------------------------------=@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@+-++=:..:.:::::::====--::.................:.:+*#***************************#@@@@@@%%%%%%%%%%%%%%%%%%%%#*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*###*****+*++++++++++++++++++++++++++++++++++*%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%@@@@%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%############################################################################*******+++++++=====+****************+++++++++=====================================-=++++###*******************************************************************#*=======+********************+==------------------------------------------==============----------=---------------------------------------------------------:----------=======================-::----::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-======-==--:::::::::::::::::::::---===============+++++=:::---------------------------::::::::.........................................:::::::::::::::::::::::--=++++++++++++==-....::::::::---:::::::::::::::::::::::::::::::::::---------------------------------------------------------------------------------------------------------------------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::-----------------------------------------------------------------------------------------------============================================================================================================+++++++++++++++++************************************************#**#########################################################################################**************************************************###########################################*=-::::::::::::::::::::::::::----------------------------------==++*****+++==--------------------------------------------::::::::::::::::----------------==++++******************+++++==----------------:::::::::::::::::::::::::::::::::::::::--------------------------====+++++**+++++====--===++++++===--------------------------------------===+++*****++==------::::::::::-----------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---=========++++++++++++++++++++++++++++++++++++++++++++++++++**********************************************************************+++++++************++=--::::::--=++*********************************************************************************************************************************************************************************###########################################*******************#############################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################*******************************************************
#############*******************************************##**************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******************************########################***********************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******************%%%%%%%%*=-----------------------============-------------------------------===++++++++++++++++++++++++++===--------------------------------------------------------------------------------------------------------------------------------==--------------------------------------------------------------------------------------------------------------------------------------------------#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@%-=++=:.....:.::-===-:.....................:*###**************************#%@@@@@@%%%%%%%%%%%%%%%%%@%%%***+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*###**++*+*+++++++++++++++++++++++++++++++++++#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%@@@@@%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###########################################################################********++++++++++=-=+***************+++++++++=======================================++++###********************************************************************+=======+********************+==------------------------------------------==============----------==--------------------------------------------------------:----------========================-::-:-::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-==========-::::::::::::::::::::::---===============+++++-::-----------------------:::::::::---::....................................::...::::::::::::::-:::--=+++++++++++===--:::::--:::--:::::--::---::::::::::::::::::::::--:::--------------------------------------------------------------------------------------------------------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::::::------------------------------------------------------------------------------------------===================================================================================================+++++++++++++++++++++++++++++++**********************************************##############################################################################################################************************************###########################################+++-::::::::::::::::::::::::----------------------------------==++*****+++==---------------------------------------------:::::::::::::::----------------==++++******************+++++==----------------::::::::::::::::::--------:::::::::::::--------------------------====+++++**+++++====--===+++++++===-----------------------------------=====++******+++==-----------::::------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---========+++++++++++++++++++++++++++++++++++++++++++++++++++**********************************************************************+++==+++***********++=--::::::--=++**********************************************************************************************************************************************************************************##########################################*******************##############################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################******************************************************
##############***************************************#####*************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******************************########################***********************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******************%%%%%%%%#=------------------------==========--------------------------------===++++++++++++++++++++++++++===-------------------------------------------------------------------------------------------------------------------------------===----------------------------------------------------------------------------==--------------------------------------------------------------------*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@+:=++:..:.....:====-:....................-*#####*************************%@@@@@@%%%%%%%%%%%%%%%%@%%@%%%#**++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*###**++*+*++++++++++++++++++++++++++++++++++++#@@@@@@@@@@@@@@@@@@@@@%%%@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%@@@@@%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#########################################################################********+++++++++++--+**************+++++++++========================================++++###********************************************************************=======+*********************+==-----------------------------------------===============---------:==--------------------------------------------------------:----------=========================-:-:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-=========-:::::::::::::::::::::::--===============+++++=::--------------------:::::::::--------::.........................................:::::::::::::--=+++++++++++===---::-----::--::-:-:--::---:---:::::::::::::::::::----------------------------------------------------------------------------------------------------------------------------------------------------::::::::::::::::::::::::::::::::::::::::::::::-------------------------------------------------------------------------------------------==============================================================================================++++++++++++++++++++++++++++++++++***+++++****************************************#################################################################################################################################******************############################################==*=-::::::::::::::::::::::----------------------------------==++*****+++==---------------------------------------------:::::::::::::::----------------==++++******************++++===----------------::::::::::::::::-----------::::::::::::--------------------------====++++***+++++====--===+++++++===------------------------------=========+++*******++===--------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---========+++++++++++++++++++++++++++++++++++++++++++++++++++**********************************************************************++===+++***********++=--::::::--=+++*********************************************************************************************************************************************************************************##########################################*******************##############################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################******************************************************
#########************************************************#************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********************************#########################*********************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******************%%%%%%%#*=------------------------=========--------------------------------===+++++++++++++++++++++++++++===------------------------------------------------------------------------------------------------------------------------------====-------------------------------------------------------------------------=======------------------------------------------------------------------=%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@%-==+=.........-====:..................:=*#######***********************%@@@@@@@%%%%%%%%%%%%%%%%%%@@@@@@%#**++*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*###***++++++++++++++++++++++++++++++++++++++*++%@@@@@@%%%%%%%%%%%%%%%%%%@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%@@@@%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###############################################################################********+++++++++++=-=**************+++++++++========================================++++###*****************************************************************#**=======+*********************+==-----------------------------------------===============---------:-+--------------------------------------------------------:-----------========================-::-::-:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-==========-::::::::::::::::::::::--================+++++-:::--------------:::::::::::------:-:::-::.................................:........:::::::--=+++++++++++==----:---:::::::::::::::-----------::-------::---------------------------------------------------------------------------------------------------------------------------------------------------------------:::::::::::::::::::::::::::::::::::::::::::----------------------------------------------------------------------------------------=============================================================================================++++++++++++++++++++++++++++++++++*+*+******+****++******************************##**############################################################################################################################################**********############################################=-**=:::::::::::::::::::::---------------------------------===++******++===--------------------------------------------:::::::::::::::---------------===++++******************++++===----------------:::::::::::::::----======----:::::::::---------------------------====+++++***++++===---===+++++++===---------------------------============+++*******+++===------------------===-----:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---=======++++++++++++++++++++++++++++++++++++++++++++++++++++*********************************************************************+++====++***********++=--::::::--=++*****************************************************************************************************************************************************************************************###################################*********************##############################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################****************************************************
#########************************************************##**********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********************************##########################*******************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******************%%%%%%%##=-------------------------======----------------------------------===+++++++++++++++++++++++++++===-----------------------------------------------------------------------------------------------------------------------------=====------------------------------------------------------------------------=========------------------------------------------------------------------#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@*:+=+-...:....:::::..................:+##########*********************#@@@@@@@%%%%%%%%%%%%%%%%%%@@@@@@@@%##**+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*####**+++++++++++++++++++++++++++++++++++++++++#%@@@%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%@@@%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###################################################################################********+++++++++++=-=+*************+++++++++========================================++++###*****************************************************************#*+======+**********************+==-----------------------------------------===============---------:-==-------------------------------------------------------------------=========================--:--::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-==========-:::::::::::::::::::::::--================++++=-:::----------::::::::::::-----:::-::::::::...........................................:::-=+++++++++++===----::--::::::::::::::::::---------::::-----::::-----------------------------------------------------------------------------------------------------------------------------------------------------------------::::::::::::::::::::::::::::::::::::::-----------------------------------------------------------------------------------------==========================================================================================+++++++++++++++++++++++++++++++++++++*+++++++++++*++*************+--==++********#**##***###############################################################################################################################################*******##############################################=-+#+-:::::::::::::::::::---------------------------------===++******++===--------------------------------------------::::::::::::::::--------------===++++******************++++===-----------------:::::::::::::---=========----:::::::::--------------------------====+++++**++++====---===+++*++++==-------------------------=============++++*******+++====-----------------=====---:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---=======++++++++++++++++++++++++++++++++++++++++++++++++++++*********************************************************************++=====+++**********++=--::::::--=++*****************************************************************************************************************************************************************************************###################################*********************##############################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################****************************************************
#########************************************************##*********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******************************#############################*****************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********************%%%%%%%%#=--------------------------====-----------------------------------===++++++++++++++++++++++++++===-----------------------------------------------------------------------------------------------------------------------------======-----------------------------------------------------------------------===========-----------------------------------------------------------------+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@%--++=:..............:............:..+###########***************#****#%@@@@@@@%%%%%%%%%%%%%%%%%%@@@@@@@@@%###**+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*####*+++++++++++++++++++++++++++++++++++++++++#%@@@@%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%@@@%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###################################################################################*********+++++++++++=--=************++++++++++========================================++++###****************************************************************##*=======+**********************+==-----------------------------------------===============---------:-==-------------------------------------------------------------------=========================---:-:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::===========-:::::::::::::::::::::::--===============+++++=::.::------::::::::::::-----:::-:::::::::::::........................................:-=++++++++++==--------------::::::--::::::::---::::::::::----:::::--::::::::-----------------------------------------------------------------------------------------------------------------------------------------------------------::::::::::::::::::::::::::::::::----------------------------------------------------------------------------------------========================================================================================++++++++++++++++++++++++++++++++++++++++***+*+*+=:.........::=+*+-:-****=:.:.::-=+****##**##*################################################################################################################################################******##############################################*=:=#*-:::::::::::::::::::--------------------------------===++******+++==--------------------------------------------::::::::::::::::--------------===++++******************++++===-----------------::::::::::::---===++++++===---:::::::::-------------------------====++++***++++===----===+++**+++==-----------------------==============+++++********+++=====--------------======----::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---======+++++++++++++++++++++++++++++++++++++++++++++++++++++*********************************************************************++======++**********++==-::::::--==++****************************************************************************************************************************************************************************************###################################********************#################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################**************************************************
#########**********************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******************************###################################***********************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********************%%%%%%%%#=----------------------------------------------------------------====++++++++++++++++++++++++++===-----------------------------------------------------------------------------------------------------------------------------======---------------------------------------------------------------------==============----------------------------------------------------------------=%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@#-=++-.......:..................:..:*###########*********#########**%@@@@@@@@%%%%%%%%%%%%%%%%%%@@@@@@@@@@%####**+++++++++++++++++++++++++++++++++++++++++++++++++++++++++*####*++++++++++++++++++++++++++++++++++++++++*%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%@@@%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###################################################################################**********++++++++++=--=***********+++++++++++========================================++++*##******************************************************************+======+************************==----------------------------------------================-----------=====---:------------------------------------------------------------==========================--::-:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-===========-:::::::::::::::::::::::---===============+++++-:...:-::-:::::::::::-----:::::::-::::::::::::........................::...........:==+++++++++==-------------::--:::::------:::------::::::::----::::::::::::::-----------------------------------------------------------------------------------------------------------------------------------------------------------------:::::::::::::::::::::::::----------------------------------------------------------------------------------------=====================================================================================++++++++++++++++++++++++++++++++++++++++*******++*++=-:...................:+****-..:....::-+*##*#####################################################################################################################################################***################################################*-:-*#=::::::::::::::::::--------------------------------===++*******++===-------------------------------------------::::::::::::::::--------------===++++******************++++===-----------------::::::::::::--==+++++++++==---:::::::::-------------------------====++++***++++===----===++***+++==---------------------============++++++++*********+++=======------------=======----:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---=====++++++++++++++++++++++++++++++++++++++++++++++++++++++*********************************************************************++==--==++**********++==-::::::--==++****************************************************************************************************************************************************************************************####################################*******************###################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################************************************************
##########********************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****************************#######################################**********************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********************%%%%%%%%#+=---------------------------------------------------------------====++++++++++++++++++++++++++===-----------------------------------------------------------------------------------------------------------------------------======---------------------------------------------------------------------===============----------------------------------------------------------------#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@+-=+=:....:....................:.:=############*******###########*#@@@@@@@@@%%%%%%%%%%%%%%%%%%%@@@@@@@@@@%####*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++*####*++++++++++++++++++++++++++++++++++++++++%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%@@@%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##%%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###################################################################################**********++++++++++==--+**********+++++++++++======================================-=++++*##****************************************************************#*+======+************************==----------------------------------------================----------:-===-----------------------------------------------------------------===========================--:-:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-============-:::::::::::::::::::::::--===============+++++=-: .::::::::::::--==--::::::::::::::::::::::::...............::..:............:-=+++++++++==----::::----:----:::::::----------------::::::::----::::::::-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------:::::::::::::::::::--------------------------------------------------------------------------------------==============================================================================++++++++++++++******++++++++++++++++++++++++++************=.........................:+****=:.::::.:::::-=+***#####################################################################################################################################################################################################+-:-*#+:::::::::::::::::--------------------------------===++*******+++====-----------------------------------------::::::::::::::::--------------===++++******************++++===-----------------:::::::::::--==++++****+++==---::::::::-------------------------====++++***++++===----===++***+++===------------------=========++++++++++++**********++++========----------=======----:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---=====++++++++++++++++++++++++++++++++++++++++++++++++++++++*********************************************************************++==--==++**********++==-::::::--==++****************************************************************************************************************************************************************************************####################################******************####################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################************************************************
##########*******************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********************#################################################********************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******************#%%%%%%%%#+=-------===--=--------------------------------------------------===+++++++++++++++++++++++++++===-----------------------------------------------------------------------------------------------------------------------------=====---------------------------------------------------------------------================----------------------------------------------------------------+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%====-..........................:=#############******###########*#%@@@@@@@@@%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@#####*++++++++++++++++++++++++++++++++++++++++++++++++++++++++*####*+++++++++++++++++++++++++++++++++++++++*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%@@@@%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#%%%%%%%%%%%%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####################################################################################**********++++++++++=====*******++++++++++++++======================================-=++++*##****************************************************************#+======+*************************+=----------------------------------------=================---------:-==------------------------------------------------------------------===========================-::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-============-::::::::::::::::::::::::-================+++++-:.. .::::::::-===--::::::::::::::::::::::::::::...........................:-=++++++++==---------------:-----------------------------::::::-----:::----:------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------==================================================================++++++++++++++*****************++*+++++++++++++++++++++++***************=:=++++=-:..................=***#*-:.:::::::::::::-=+*###################################################################################################################################################################################################+-::+#*-:::::::::::::::--------------------------------===++*******++++=====---------------------------------------::::::::::::::::--------------===++++******************++++==------------------:::::::::::--==++*******+++==--::::::::-------------------------====+++++*+++++==-----===++****++===----------------=========++++++++++++++***********++++========---------========----::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---=====++++++++++++++++++++++++++++++++++++++++++++++++++++++*********************************************************************+==----==+***********+==--:::::--==++****************************************************************************************************************************************************************************************####################################******************######################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################**********************************************
##########******************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******************####################################################*******************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********************#%%%%%%%%#+====-=============----------------------------------------------===+++++++++++++++++++++++++++===-----------------------------------------------------------------------------------------------------------------------------=====--------------------------------------------------------------------========+++======----------------------------------------------------------------=%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#====:........................:=##############*****#############%@@@@@@@@@@@%%%%%%%%%%%%%%%%%@@@@@@@@@@@@%####*++*+++++++++++++++++++++++++++++++++++++++++++++++++++++*####*+*++++++++++++++++++++++++++++++++++++*%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%@@@@%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####################################################################################**********++++++++++=====+*****++++++++++++++=======================================-=+++++##*****************************************************************+======+*************************+=----------------------------------------=================-----------==-------------------------------------------------------------------===========================--::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::==============::::::::::::::::::::::::--================++++=- .::::--==---:::::::::::::::::::::::::::::::::.......::....:........-=++++++++==--:-------------------:::--------------:::::::::::::::----:::---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------============================================================++++++++++++********************************+++++++++++++++++++*****************************=.................-*#***=::::::::::::::::::--=+*##############################################################################################################################################################################################*+-::=#*-::::::::::::::--------------------------------==+++********+++++=====--------------------------------------:::::::::::::::--------------===++++*****************++++===------------------::::::::::---=+++********++==---:::::::-------------------------===+++++**+++++==-----===++****+++===------------========++++++++++++++++**************++++========--------========-----:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---=====+++++++++++++++++++++++++++++++++++++++++++++++++++++*********************************************************************++==----==++**********+==--::::::-==++****************************************************************************************************************************************************************************************####################################******************########################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################********************************************
##########******************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******************####################################################******************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********************#%%%%%%%%#+====================--------------------------------------------===+++++++++++++++++++++++++++===------------------------------------------------------------------------------------------------------------------------------=====-----=====---------------------------------------------------------=======++++======-----------------------------------------------------------------#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%*===-........................=###############****##############%@@@@@@@@@@%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@%####*++*+++++++++++++++++++++++++++++++++++++++++++++++++++++*####*+*+++++++++++++++++++++++++++++++++++**@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%@@@@%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####################################################################################**********++++++++++=====+*****++++++++++++++=======================================-=+++++##***************************************************************#*======+**************************+=---------------------------------------==================-----------==-------------------------------------------------------------------===========================---:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::==============:::::::::::::::::::::::::-================+++++-. ::-==--::::::::::::::::::::::::::::::::::::::.................:=++++++++==----------------------:----------------:::::::::::::::::::--::::--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------======================================================++++++++++****************************************++++++++++++++++**********************************:.................:+#**#+:.::::::::::::::::::::=+*############################################################################################################################################################################################*+*=:=##-:::::::::::::--------------------------------==+++**********+++++====-------------------------------------:::::::::::::::--------------===++++*****************++++===------------------::::::::::--==++**********++=---:::::::-------------------------===+++++**+++++==-----===++*****++====================++++++++++++++*******************++++++=======-------=========-----::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---====++++++++++++++++++++++++++++++++++++++++++++++++++++++*********************************************************************++==----==++**********+==--::::::-==++****************************************************************************************************************************************************************************************####################################******************########################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################********************************************
#############**********************+++++++++++++***************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****************########################################################***************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********************#%%%%%%%%#+======================------------------------------------------===+++++++++++++++++++++++++++===-------------------------------------------------------------------------------------------------------------------------------================------------------------------------------------------=======+++========-----------------------------------------------------------------+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%+===:......................=################****#############%@%@%@@@@@@%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@%###**+*++++++++++++++++++++++++++++++++++++++++++++++++++++++*####**+++++++++++++++++++++++++++++++++++++#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####################################################################################**********++++++++++======*****++++++++++++++=======================================-=+++++##****************************************************************+======***************************+=---------------------------------------===================----------==-------------------------------------------------------------------============================---:--::-::::::::::::::::-::::::::::::::::::::::::::::::::::::::::::-==============-:::::::::::::::::::::::::-================++++=. :---::-::::::::::::::::::::::::::::::::::::::::::.........:-=+++++++==---------------------------------------::::::::::::::::::::::::::--------:----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------==================================================++++++++++**********************************************+++++++++++++++************************************=................:.:=#**#*-:::::::::::::::::::::-==+*##########################################################################################################################################################################################*+#*=-##-:::::::::::::-------------------------------==+++***********+++++===-------------------------------------:::::::::::::::--------------==++++******************++++==-------------------::::::::::--==++**********++==--:::::-:-------------------------===+++++**+++++==-----===++*****+++===============+++++++++++++************************+++++++=======------=========-----::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---====++++++++++++++++++++++++++++++++++++++++++++++++++++++*********************************************************************++==-----=++**********++=--::::::-==++*****************************************************************************************************************************#********************************************************#######################################*****************###########################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################*****************************************
#############***************++++++++++++++++++++**************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****************#########################################################**************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********************#%%%%%%%%#+========================----------------------------------------===++++++++++++++++++++++++++====-------------------------------------------------------------------------------------------------------------------------------=================-----------------------------------------------------======+++++=======-----------------------------------------------------------------=%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#===-.............:..:.:.:+#%###############***##############@@@%@@@@@@@%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@%###*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++*####*++++++++++++++++++++++++++++++++++++++#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%@@@@@%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####################################################################################**********++++++++++======*****++++++++++++++=======================================-=+++++##**************************************************************#*======+***************************+=---------------------------------------=================-==---------==-------------------------------------------------------------------=============================-:-:---::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-==============-:::::::::::::::::::::::::--===============+++++- .::::::::::::::::::::::::::::::::::::::::::::::::......-=+++++++===-----------------------------------------::::::::::::::::::::::::::-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------=================================================++++++++******************************************************+++++++*****************************************=..............::.:.:=*#***-::::::::::::::::::::--==+++*########################################################################################################################################################################################+=##+=##=:::::::::::-:------------------------------==+++**************+++===------------------------------------:::::::::::::::-------------===++++******************++++==-------------------::::::::::--==++**********++==---::::-:-------------------------===+++++**++++===-----===++*****++++++==+++++++++++++++++*******************************+++++++=======------========------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---====++++++++++++++++++++++++++++++++++++++++++++++++++++++*********************************************************************++==-----=++**********++=--::::::--=++**********************************************************************************************************************************************************************************###########################################*****************###########################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################*****************************************
#############**************++++++++++++++++++++***************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***************############################################################*************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********************#%%%%%%%%#+=========================---------------------------------------===++++++++++++++++++++++++++===--------------------------------------------------------------------------------------------------------------------------------==================----------------------------------------------------======+++++======-------------------------------------------------------------------#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%*===:.............:....:+##################***#############%@%%%%@@@@@%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@%###*+*++*++++++++++++++++++++++++++++++++++++++++++++++++++++*####+++++++++++++++++++++++++++++++++++*++*#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%@@@@@%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####################################################################################*********+++++++++++======+****+++++++++++++========================================-=+++++##***************************************************************+=====+****************************+==-------------------------------------==================-==---------==-------------------------------------------------------------------=============================-:-:----:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::===============-::::::::::::::::::::::::::--===============++++= .::::::::::::::::::::::::::::::::::::::::--::::::..:-+++++=====-------------------------------------------:::::::::::::::::::::::::::--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------==============================================+++++++++*******************************************************++*+++++********************************************-.............:.::::.:=*###*-::::::::::::::::::---==+++==+**#####################################################################################################################################################################################=-*%*=##=::::::::::-:------------------------------===++***************+++===-----------------------------------:::::::::::::::-------------===++++******************++++==--------------------:::::::::--==++**********++==---::::-:-------------------------===+++++**++++===-----==+++*******++++++++++++++++++*************************************++++++++======-----========------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---=====+++++++++++++++++++++++++++++++++++++++++++++++++++++*********************************************************************++=------==++*********++=--::::::--=++**********************************************************************************************************************************************************************************###########################################*****************############################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################****************************************
##############**********+++++++++++++++++++++++**************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++************##################################################################**********************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********************#%%%%%%%%#+==========================--------------------------------------===++++++++++++++++++++++++++===--------------------------------------------------------------------------------------------------------------------------------===================--------------------------------------------------======++++++======-------------------------------------------------------------------+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%+==-.................:+##################****############%@%%%%%%@@@%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@%##**+*++*++++++++++++++++++++++++++++++++++++++++++++++++++++*####++++++++++++++++++++++++++++++++++++++*#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%@@@@%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####################################################################################**********+++++++++++=======***++++++++++++++========================================-=+++++##***************************************************************======*****************************+==-------------------------------------==================-===--------==-------------------------------------------------------------------============================+=----:------::::::::::::::::::::::::::::::::::::::::::::::::::::::-================::::::::::::::::::::::::::--===============+++++-. .::::::::::::::::::::::::::::::::::::::-:::-:---==++++==-----------------------------------------------:::::::::::::::::::::::::::::-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------==============================================++++++**********************************************************++***************************************************-...........::::.::::::-#####=::::::::::::::::::--==++++==--=+*##################################################################################################################################################################################*=-+##+##=::::::::::-------------------------------===++****************+++===----------------------------------:::::::::::::::-------------===++++*****************++++==---------------------:::::::::--==++**********++==---::::::-------------------------===+++++**++++==-----===+++**************************************************************+++++++++=======--=========------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---=====+++++++++++++++++++++++++++++++++++++++++++++++++++++*********************************************************************++=---:--==++*********++=--::::::--=++*********************************************************************************************************************************************************************************#############################################****************############################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################****************************************
##############**********++++++++++++++++++++++**************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***********########################################################################*****************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********************#%%%%%%%%#*============================-----------------------------------====+++++++++++++++++++++++++====--------------------------------------------------------------------------------------------------------------------------------=========++=========-------------------------------------------------======++++++=====--------------------------------------------------------------------=%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@%%#+==:.:.............:*###################***############%@%%%%%%%@@@%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@%##**+++++++++++++++++++++++++++++++++++++++++++++++++++++++++#####+++++++++++++++++++++++++++++++++++++*+*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%@@@@@%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####################################################################################**********+++++++++++=======***+++++++++++++=========================================-=+++++##************************************************************#*+=====+*****************************+==-------------------------------------==================--==--------==-------------------------------------------------------------------==============================-:-:-:-------::::::::::::::::::::::::::::::::::::::::::::::::::::-================-::::::::::::::::::::::::::--===============++++=-.. ..:::::::::::::::::::::::::::----::-:::-----==+++===-------------------------------------------------:::::::::::::::::::::::::::--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------=============================================++++**********************************************************+==--====+++**********************************************+:...:.....:::.:.:::::::=####*=:::::::::::::::::--==++++==--:::-=*################################################################################################################################################################################*--=##*##=:::::::::-------------------------------===++*****************++===-----------------------------------::::::::::::::-------------===++++*****************++++==---------------------:::::::::--==++***********++=---::::::-------------------------===+++++*++++===-----===+++**************************************************************++++++++++=================------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--=====+++++++++++++++++++++++++++++++++++++++++++++++++++++*********************************************************************++=--:::--=++*********++=--::::::--=++******************************************************************************************************************************########****************************************################################################****************#############################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################***************************************
##############**********+++++++++++++++++++++***************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********##########################################################################****************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********************#%%%%%%%%#*==============================---------------------------------====+++++++++++++++++++++++++===---------------------------------------------------------------------------------------------------------------------------------========++++++======------------------------------------------------=======+++++======---------------------------------------------------------------------#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#%*==-..............:*####################***###########%%%%%%%%%%@@%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@%#*+*++*++++++++++++++++++++++++++++++++++++++++++++++++++++++#####+++++++++++++++++++++++++++++++++*++**+*%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###################################################################################**********++++++++++++=======+**++++++++++++============================================+++++##************************************************************#*+====+******************************+==------------------------------------==================---==--------=---------------------------------------------------------------------==========================+===-::-::---------:::::::::::::::::::::::::::::::::::::::::::::::::=================-:::::::::::::::::::::::::::-================++++=:::. .....:::::::::::::::::::::::::-------::::--==+++===-----------------------------------------------:::::::::::::::::::::::::::::::-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------==========================================+++++***********************************************************+=-:::::::::::::---=+****************************************#*-:......:::::::::::::::=####*-::::::::::::::::--==++++==--::::::-+*##############################################################################################################################################################################*-:=##*##=:::::::::------------------------------===++*****************+++==-----------------------------------::::::::::::::------------===++++*****************+++++==---------------------:::::::::--==++***********++=---::::::-------------------------===++++++++++===-----==+++******************************************######****************++++++++++================-------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---=====++++++++++++++++++++++++++++++++++++++++++++++++++++*********************************************************************++=--:::--=++*********++==-::::::--=++******************************************************************************************************************************########******##******************************##################################################****************#############################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################***************************************
##############**********+++++++++++++++++++++**************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********###########################################################################*#*************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********************#%%%%%%%%#*=====================================--------------------------===+++++++++++++++++++++++++====--------------------------------------------------------------------------------------------------------------------------------=======++++++++=======-----------------------------------------------=======+++++=====----------------------------------------------------------------------+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#%*==:............:*###%################****##########%@%%%%%%%%%@%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@%#*+*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++#####++++++++++++++++++++++++++++++++++++*+*+#%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##################################################################################**********+++++++++++=======+=+**++++++++++=============================================+++++##*************************************************************+=====+******************************====--------------=--------------------==================---===-------=---------------------------------------------------------------------==============================-::--:------------:::::::::::::::::::::::::::::::::::::::::::::-==================:::::::::::::::::::::::::::---==============++++=-::::.........::::::::::::::--------------------======-------------------------------------------------:::::::::::::::::::::::::::::::::------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------========================================++++************************************************************+=-::::::::::::::::::::::-+*************************************#**-:::::::::::.::::::::::=#####-:::::::::::::::--==++++==--::::::::-=*#############################################################################################################################################################################+---#####=::::::::------------------------------===++******************++===----------------------------------::::::::::::::------------===++++*****************+++++==---------------------:::::::::--==++***********++=---::::::-------------------------===++++++++++===----===+++**************************###########################***********+++++++++++===============-------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---======+++++++++++++++++++++++++++++++++++++++++++++++++++*********************************************************************++=--:::--==++********++==--:::::--=++*****************************************************************************************************************************##############*********************************###################################################****************#############################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################**************************************
##############***********++++++++++++++++++++**************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********###############################################################################************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********************#%%%%%%%%#*===========================================--------------------===+++++++++++++++++++++++++====--------------------------------------------------------------------------------------------------------------------------------=======++++++++========----------------------------------------------=======++++======-----------------------------------------------------------------------%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%#+=-...........-*#####################****#########%@%%%%%%%%%@%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@%**+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#####++++++++++++++++++++++++++++++++++++++*++%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%%%%%%%%%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####################################################################***********+++++++++++=======+=+**+++++++++=============================================++++++##*************************************************************+====+*******************************====--------------=--------------------==================---===---------:-------------------------------------------------------------------===============================-::--:-----------:::--::::::::::::::::::::::::::::::::::::::::-==================-:-:::::::::::::::::::::::::---==============++++-:::::::.......::::::::::--------------------======----------------------------------------------------:::::::::::::::::::::::::::::::::-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------======================================+++**************************+++********************************+=-::::::::::::::::::::::::::::=+*************################*******#*=::::::::::::::::::::::=####*-::::::::::::::--==++++==--:::::::::::=*###########################################################################################################################################################################*=::=#####=:::::::------------------------------===++******************++===----------------------------------::::::::::::::------------===++++*****************++++===---------------------:::::::::--==++***********++==--::::::-------------------------====+++++++++==----===++++**************#########################################**********+++++++++++==============-------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---======++++++++++++++++++++++++++++++++++++++++++++++++++*********************************************************************++=--::::-==++********++==--:::::--==++***************************************************************************************************************************###############*********************************##########################*########################****************#############################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################**************************************
###############**********+++++++++++++++++++**************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********###############################################################################***********************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********************#%%%%%%%%#*=====================================================---------====++++++++++++++++++++++++====---------------------------------------------------------------------------------------------------------------------------------=====+++++++++++++=====---------------------------------------------=======+++++======-----------------------------------------------------------------------*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%#*=:....:.....*####%#################****#########@%%%%%%%%%%@@%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@%#*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#####+++++++++++++++++++++++++++++++++++++++++*%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%%%%%%%%%%%%%%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##################################################################***********++++++++++++=====+===+++++++++===============================================++++++##***********************************************************#*+====********************************=====---------------------------------===================---====----------------------------------------------------------------------------===============================-::-:-----:------::::::::::::-::::::::::::::::::::::::::::::-:===================-::::::::::::::::::::::::::::--=-============+++++-:::::::::.....::------------------------======------------------------------------------------::::::::::::::::::::::::::::::::::::::----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------=====================================++++*************************************************************+=-:::::::::::::::::::::::::::::::::-+***#**#**####################****###*=::::::::::::::::::::::+####*-:::::::::::::--==++++==---:::::::::::-+###########################################################################################################################################################################*-::=#####=::::::-------------------------------==++******************+++==----------------------------------:::::::::::::::-----------==++++*******************+++===---------------------:::::::::--==++***********++==--:::::--------------------------====++++++++===--=====+++*************#############################################********++++++++++++==============------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::----=====++++++++++++++++++++++++++++++++++++++++++++++++++*********************************************************************+==--::::--=++********++==--:::::--==++****************************************************************************************************************************#################*******#***************#****######################################################****************############################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################**************************************
###############**********++++++++++++++++++***************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********###############################################################################***********************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********************#%%%%%%%%#*==================================================================+++++++++++++++++++++++====---------------------------------------------------------------------------------------------------------------------------------======+++++++++++++=====---------------------------------------------=======+++++=====------------------------------------------------------------------------+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%#*=::.......:*#####################*****########%%%%%%%%%%%%@@%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@%*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#####++++++++++++++++++++++++++++++++++++++++++#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%%%%%%%%%%%%%%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#################################################################***********+++++++++++======+===+++++++++===============================================++++++##***********************************************************#*==+=+********************************=====---------------------------------===================---====----------------------------------------------------------------------------================================-:-----::::::---::::::::::::::::::::::::::::::::::::::::::::-===================-::::::::::::::::::::::::::::---=-============++++-::::::::::::...::---------------------=====--------------------------------------------------:::::::::::::::::::::::::::::::::::::::--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------================================+===++++*************************************************************+=-::::::::::::::::::::::::::::::::::::::-+*#############################*#**#*+::::::::::::::::::::::*####*::::::::::::---==++++==---:::::::::::::=###########################################################################################################################################################################+-:-+#####-:-::::------------------------------==++*******************++==----------------------------------:::::::::::::::-----------==++++*******************+++===---------------------:::::::::--==++***********++==--:::::--------------------------====++++++++=========+++*************##############################################********+++++++++++++=============------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-----====+++++++++++++++++++++++++++++++++++++++++++++++++*********************************************************************+==--::::--=++********++==--:::::--==++******************************************************************************************************************************###############**************************########################################################*****************###########################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################**************************************
###############**********++++++++++++++++++**************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********#################################################################################**********************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********************#%%%%%%%%#*==================================================================++++++++++++++++++++++====----------------------------------------------------------------------------------------------------------------------------------======+++++++++++++=====---------------------------------------------======+++++======-------------------------------------------------------------------------%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%#+-:.:.....+######################****########%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#*+*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#####+++++++++++++++++++++++++++++++++++++++++*+%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%@@@%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%################################################################***********++++++++++++=====++====+++++++===============================================++++++*##************************************************************+==+=*********************************=====---------------------------------==================----====----------------------------------------------------------------------------===============================+-::---:::::::----:::::::::::::::::::::::::::::::::::::::::-:-====================-::::::::::::::::::::::::::::--=--===========++++=-::::::---::::...:------------------===-----------------------------------------------------::::::::::::::::::::::::::::::::::::::::-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------============================++===+==+++*************************************************************++=--::::::::::::::::::::::::::::::::::::::::::-+###################################+:::::::::::::::::::::-*####+:::::::::::---==++++==---::::::::::::::-*##########################################################################################################################################################################=-::+#####-:::::------------------------------==++*******************++===----------------------------------::::::::::::::----------===++++*******************++++==---------------------:::::::::--==++***********++==--::::::-------------------------====++++++++=======++++*************################################################********+++++++++++++============------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-----=====+++++++++++++++++++++++++++++++++++++++++++++++**********++++******************************************************++==-:::::--==++*******+++=--:::::--==++********************************************************************************************************************************###############**********************##########################################################*****************###########################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################**************************************
###############**********+++++++++++++++++**************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********##################################################################################*********************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********************#%%%%%%%%#*==================================================================+++++++++++++++++++++=====----------------------------------------------------------------------------------------------------------------------------------=====++++++++++++++=====--------------------------------------------======++++++======-------------------------------------------------------------------------*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#%%#+-:..:.:=######################****########%@%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%**+*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#####+++++++++++++++++++++++++++++++++++++++++++*%@@@@@@@@%%%%@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##################################################################***********++++++++++++===========++++++================================================++++++*##************************************************************=+==+*********************************=====-------------=------------------==================-----=====---------------------------------------------------------------------------===============================+=--:----:::::-----:::-::::::::::::::::::::::::::::::::::::::=====================-:::::::::::::::::::::::::::::----============++++-:::::::::----:::.::-------------===------------------------------------------------------::::::::::::::::::::::::::::::::::::::::::----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------===================================+++************************************************************+=--::::::::::::::::::::::::::::::::::::::::::::::::-+##################################+:::::::::::::::::::::-#####+::::::::::--===+++++==--::::::::::::::::+#########################################################################################################################################################################*--:-*####*-::::------------------------------==++*******************+++==----------------------------------::::::::::::::----------===++++*******************++++==---------------------:::::::::--==++***********++==--::::::-------------------------=====+++++++======++++*************#################################################*********+++++++++++++===========------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-----====++++++++++++++++++++++++++++++++++++++++++++++********++++++++****************************************************++=--::::::-==++********++=--::::::-==++*********************************************************************************************************************************###############*********************##########################################################*****************###########################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################**************************************
###############**********+++++++++++++++++**************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******#####################################################################################********************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********************#%%%%%%%%#*==================================================================+++++++++++++++++++======----------------------------------------------------------------------------------------------------------------------------------======++++++++++++++=====--------------------------------------------======+++++======--------------------------------------------------------------------------=@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%#*==++**#######################****########@%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#*+*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#####++++++++++++++++++++++++++++++++++++++++*+*++%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%%%%%%%%%%%%%%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###################################################################***********++++++++++++============++++++================================================++++++*##*********************************************************#*+===+**********************************=====--------------------------------==================-----=====----------------------------------------------------------------------------===============================+-----------------:::-:::::::::::::::::::::::::::::::::::-:-=====================-::::::::::::::::::::::::::::::---============++++=-::::----:------:::------------==--------------------------------------------------------::::::::::::::::::::::::::::::::::::::::----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------=============================++====+++********************************************************++==--::::::::::::::::::::::::::::::::::::::::::::::::::::::-+#################################+:::::::::::::::::::::=#####=:::::::::--==++++++==--:::::::::::::::::=#########################################################################################################################################################################*-::-#####*::-:------------------------------==++*******************+++==----------------------------------::::::::::::::----------===++++*******************++++==---------------------:::::::::--==++***********++==--::::::--------------------------====+++++++====+++++**************##################################################********++++++++++++++===========-----::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::----=====++++++++++++++++++++++++++++++++++++++++++++******++++====+++***************************************************++=--::::::--=++********++=--::::::--=++**********************************************************************************************************************************##############******************##########*##################################################******************##########################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################**************************************
###############**********++++++++++++++++**************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******########################################################################################****************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********************#%%%%%%%%#*+=+===============================================================+++++++++++++++++========----------------------------------------------------------------------------------------------------------------------------------======++++++++++++++=====--------------------------------------------======+++++======---------------------==----------------------------------------------------%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%#%%%############################****########%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#**+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#####*++++++++++++++++++++++++++++++++++++++++++*#%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%%%%%%%%%%%%%@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####################################################################************++++++++++++===============++================================================+++++++*##********************************************************#**====***********************************=====-------------------------------===================-----=====----------------------------------------------------------------------------=================================-----------:-----::::::::::::::::::::::::::::::::::::::-:-======================-::::::::::::::::::::::::::::::--=============++++--::---------------------------------------------------------------------------------------::::::::::::::::::::::::::::::::::::::---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------===========================+===--==++***************************************************+++===---::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-+################################=:::::::::::::::::::::+#####-::::::::--==++++++==--::::::::::::::::::-*########################################################################################################################################################################+:::=#####*:::------------------------------==++********************++===---------------------------------::::::::::::::----------===++++********************+++==---------------------::::::::---=+++***********++==--::::::--------------------------====++++++++++++++****************##################################################********+++++++++++++++==========-----:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-----=====++++++++++++++++++++++++++++++++++++++++++******+++======+++**************************************************++=--::::::--=++********++=--::::::--=++***********************************************************************************************************************************#############****************###############################################################******************##########################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################**************************************
###############**********+++++++++++++++**************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******########################################################################################****************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********************#%%%%%%%%#*++++++=============================================================++++++++++++++==========----------------------------------------------------------------------------------------------------------------------------------======++++++++++++++=====--------------------------------------------======++++======------------------==========----------------------------------------------::*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%############################***########%@%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%****+*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#####**+++++++++++++++++++++++++++++++++++++*+*#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%%%%%%%%%%%%%@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######################################################################***********++++++++++++=================================================================+++++++*##**********************************************************+=+=+***********************************=====-------------------------------===================-----======---------------------------------------------------------------------------=================================--:--------::----:::::::::::::::::::::::::::::::::::::::-=======================-::::::::::::::::::::::::::::::---=============+++=-------------------------------------------------------------------------------------------::::::::::::::::::::::::::::-::::::::-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------========================++=====-==++***********************************+++=============----::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::=*###############################=::::::::::::::::::::-*####*-:::::::--==++++++==--:::::::::::::::::::-*#######################################################################################################################################################################*-:::+#####+:::-----------------------------==++********************++===---------------------------------::::::::::::::----------===+++*********************+++==----------------------:::::::--==++************++==--::::::-------------------------=====++++++++++++******************###################################################********++++++++++++++==========-----:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-----=====++++++++++++++++++++++++++++++++++++++++*****+++==----==+++*************************************************++=--::::::--==++*******++==-::::::--=++***********************************************************************************************************************************#############*************##################################################################******************##########################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################**************************************
###############*******+**++++++++++++++**************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******#########################################################################################***************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********************#%%%%%%%%#*++++++++++=========================================================+++++++++++++============---------------------------------------------------------------------------------------------------------------------------------======++++++++++++++=====-------------------------------------------=======++++======-----------------============---------------------------------------------::+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%#%##########################****########@%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#**+**+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#####**+++++++++++++++++++++++++++++++++++++*#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%%%%%%%@%%%%%@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######################################################################***********++++++++++++=================================================================+++++++###**********************************************************===+************************************=====-------------------------------===================-----======---------------------------------------------------------------------------=================================-:---------::----:::::::::::::::::::::::::::::::::::::-:-=======================-:::::::::::::::::::::::::::::::--=============+++=--------------------------------------------------------------------------------------------::::::::::::::::::::::::::--::::::::------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------======================++++++===++*****************************+++==-----::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::=*#############################*-::::::::::::::::::::-#####+:::::::--==++++++==--::::::::::::::::::::-+#######################################################################################################################################################################*-::-*#####=::-----------------------------==++********************+++==---------------------------------::::::::::::::----------===+++*********************+++==----------------------::::::---==++************++==--::::::------------------------======++++++++++********************####################################################********++++++++++++++==========----:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::----=======+++++++++++++++++++++++++++++++++++++****+++==------==++*************************************************++=--::::::--==++*******++==--:::::--=++***********************************************************************************************************************************############***********##########################*###*######################################******************##########################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################***********************************#**
###############********+++++++++++++++***************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******##########################################################################################**************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********************#%%%%%%%%#*++++++++++++++=======================================================+++++++++================------------------------------------------------------------------------------------------------------------------------------=====++++++++++++++++=====-------------------------------------------======+++++======----------------==============--------------------------------------------::-%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%##########################****########%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#***+*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*+**####**+++*++++++++++++++++++++++++++++++++*%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%%%%%@@@%%%%@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########################################################################**********++++++++++++==============================-==================================+++++++###*********************************************************+==++************************************======------------=-----=----------====================----=======----------------------------:----------------------------------------------==================================-:-:--::-::::::-:::::::::::::::::::::::::::::::::::::::=========================::::::::::::::::::::::::::::::::-==============+++=------------------------------------------------------------------------------------------::::::::::::::::::::::::::::::::::::----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------======================++=++=---==***************************+=---------------===---:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-+#############################*-::::::::::::::::::::+#####=:::::---==++++++==---:::::::::::::::::::::+#######################################################################################################################################################################+:::-######=::-----------------------:----==+++********************++==----------------------------------:::::::::::::----------===+++*********************+++==---------------------:::::::--==+++************++==--:::::::---------------------=======++++++++**********************#####################################################**********++++++++++++==========----::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-----=======++=++++++++++++++++++++++++++++++++****+++==--:::--=++*************************************************+==--:::::::-==++*******++==--:::::--=+++************************************************************************************************************************************########*************######################################################################******************#########################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################***********************************#**
###############********+++++++++++++++***************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******##########################################################################################**************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********************#%%%%%%%%#*+++++++++++++++++=====================================================++++++====================----------------------------------------------------------------------------------------------------------------------------=====++++++++++++++++=====-------------------------------------------======+++++======---------------================-------------------------------------------:::#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%##########################***########%@%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#**+*++*++++*+++++++++++++++++++++++++++++++++++++++++++++++++++++**####***++*++++++++++++++++++++++++++++*+*#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%%%%%@@@%%%%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########################################################################**********++++++++++++==============================-==================================+++++++##********************************************************#*===+*************************************======-----------------------------====================----======----------------------------------------------------------------------------================================+==:----::-::::::-::::::::::::::::::::::::::::::::::::-:-=========================-::::::::::::::::::::::::::::::::-=============+++=------------------------------------------------------------------------------------------::::::::::::::::::::::::::::::::::::-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------========================+++++====++******************************###################*********+=-----:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::=*############################*-:::::::::::::::::::-*#####-::::---==++++++==---::::::::::::::::::::::=######################################################################################################################################################################*=:::+######-------------------------:----==+++********************++===---------------------------------:::::::::::::----------===+++*********************+++==----------------------:::::---==++*************++==--:::::::--------------------======+++++++*************************#####################################################**********+++++++++++++=========-----:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::----=========++++++++++++++++++++++++++++++++****+++=--::::--==+*************************************************+==--:::::::--=++*******++==--:::::--==++************************************************************************************************************************************########*************######################################################################******************#########################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################***********************************#**
###############*********+++++++++++++***************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******##########################################################################################**************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********************#%%%%%%%%#*+++++++++++++++++++++++++++======================================================================---------------------------------------------------------------------------------------------------------------------------=====+++++++++++++++======------------------------------------------=======++++======---------------=================-------------------------------------------:::+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%#########################***#########@@%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#***+**++**+++++++++++++++++++++++++++++++++++++++++++++++++++++++**####****+*+++++++++++++++++++++++++++*+*%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%%%%@@@@%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%############################################################################**********+++++++++++==============================--==================================++++++*##****************************************************#****+==+**************************************======-----------------------------===================----=======----------------------------------------------------------------------------================================++=----::---::::::::::::::::::::::::::::::::::::::::::-:-=========================-::::::::::::::::::::::::::::::::--============+++=------------------------------------------------------------------------------------------::::::::::::::::::::::::::::::::::::----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------========================+++++++=+++*************************##########################################**++==--:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-+############################*::::::::::::::::::::-#####*-:::---==++++++==---:::::::::::::::::::::::=*#####################################################################################################################################################################*-:::*#####*------------------------:-----=+++********************++===---------------------------------:::::::::::::----------===++++*********************+++==---------------------:::----==+++*************++==--::::::::-----------------======+++++++***************************######################################################*********+++++++++++++=========-----::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-----=======+++++++++++++==+++++++++++++++++****++==--::::--==++***********************************************++==--:::::::--=++********++=--:::::--==++***************************************************************************************************************************************##****************######################################################################******************#########################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################***********************************#**
###############*********+++++++++++++***************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******###########################################################################################**************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********************#%%%%%@@%#*++++++++++++++++++++++++++++++====================================================================--------------------------------------------------------------------------------------------------------------------------=====+++++++++++++++======------------------------------------------=====++++++======---------------==================-----------------------------------------::::-@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%##########################**#########%@%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%*+***++*+++*++*++++++++++++++++++++++++++++++++++++++++++++++++++**####****+*+++++++++++++++++++++++++++**@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@%%%%@@@@%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###########################################################################**********+++++++++++=============================--==================================+++++++*##*********************************************************==+***************************************=======----------=----------------====================----======-----------------------------------------------------------------------------=================================++-::----:-:::::::::::::::::::::::::::::::::::::::::::-==========================-:::::::::::::::::::::::::::::::::-============+++=------------------------------------------------------------------------------------------:::::::::::::::---::::::::::::::::::--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------========================++++++++++**************************###############*####################################**+=--:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--=*###########################+::::::::::::::::::::=#####+:::---==++++++==---::::::::::::::::::::::::-*#####################################################################################################################################################################+-::=######*---:-------------------::----=+++********************+++==---------------------------------:::::::::::::----------===++++*********************+++==---------------------::----==+++**************++==--::::::::--------------======+++++++******************************######################################################*********+++++++++++++=========-----::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-----======++++++++++=======+++++++++++++*****++==--:::::-==++***********************************************++==--:::::::--==++*******++=--:::::--==++*********************************************************************************************************************************************************#######################################################################*****************#########################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################***********************************#**
###############*********++++++++++++***************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******###########################################################################################**************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********************#%%%%%@@%#*++++++++++++++++++++++++++++++====================================================================-------------------------------------------------------------------------------------------------------------------------=====++++++++++++++++======------------------------------------------=====++++++=====----------------======+++==========----------------------------------------:::::#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%@%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%######################***#########@%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#**++*+***+++++++++++++++++++++++++++++++++++++++++++++++++++++***####****++++++++++++++++++++++++++++**@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@%%%@@@@%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##########################################################################*********+++++++++++=============================---==================================+++++++*##******************************************************#*+=+***************************************+=======----------=--:--=----------===================-----======-----------------------------------------------------------------------------==================================+=-:----:-:::::::::::::::::::::::::::::::::::::::::::-===========================:::::::::::::::::::::::::::::::::--===========++++------------------------------------------------------------------------------------------:::::::::::::------:::::::::::::::::------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------=======================+++++++++++****************************#################**+=----====++*##########################**+--:::::::::::::::::::::::::::::::::::::::::::::::::::::::----=*###########################=::::::::::::::::::::*#####=::---==++++++==---:::::::::::::::::::::::::-*#####################################################################################################################################################################=:::+######+----------------------:::---=+++*********************++==----------------------------------::::::::::::-----------===+++++********************++==--------------------------===+++**************++==--::::::::-----------=======+++++++********************************######################################################***********++++++++++++=========----:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-----======+++++++==========++++++++++++*****++==--:::::--=++***********************************************++==--:::::::--==++*******++=--:::::--==++**********************************************************************************************************************************************************######################################################################*****************#########################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################***********************************#**
###############*********+++++++++++***************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****############################################################################################*************************+++++++*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********************#%%%%@@@%%*++++++++++++++++++++++++++++++++==================================================================-------------------------------------------------------------------------------------------------------------------------=====++++++++++++++++======-----------------------------------------======++++++=====---------------========++==+========---------------------------------------:::::+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%@%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%#####################**#########%@%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#**+++++++++++++++++++++++++++++++++++++++++++++++++++++++++***####****++*++++++++++++++++++++++++++%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%%%%@@@@%%%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#############################################################################*********+++++++++++============================----==================================+++++++*##****************************************************##*+=+****************************************+===========------=--:------------====================-----===+=------------------------------------------------------------------------------===================================+-::---:-:---:::::::::::::::::::::::::::::::::::::::============================-:::::::::::::::::::::::::::::::::-===========++++------------------------------------------------------------------------------------------:::::::::::::------:::::::::::::::::----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------========================+++++++++****************************#############################*+=--::-----==+*######################*+=--::::::::::::::::::::::::::::::::::::::::::::::::----===+*##########################=:::::::::::::::::::-#####*-:--==+++++++==---::::::::::::::::::::::::::-*#####################################################################################################################################################################=::-#######=--------------------::::---==++*********************++===---------------------------------::::::::::::-----------===++++++*******************++==--------------------------==++++**************++==--::::::::----------======++++++++*********************************######################################################*************++++++++++=========----:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-----=====+++++======---===++++++++++******++==--:::::--=++***********************************************++==-:::::::::--=++*******++==--::::--==++**********************************************************************************************************************************************************######################################################################*****************#########################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################***********************************#**
###############*********++++++++++****************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******############################################################################################*************************+++++++*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********************#%%%%@@@%%*+++++++++++++++++++++++++++++++++=================================================================------------========-----------------------------------------------------------------------------------------------------=====++++++++++++++++=====------------------------------------------=====++++++======---------------========++=+++=======---------------------------------------:::::-%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%@@@@@@%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#####################################@%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#*++*++*+++++++++++++++++++++++++++++++++++++++++++++++++***####****+**+++++++++++++++++++++++++*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%%%@@@@@%%%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###############################################################################*********++++++++++============================----===================================+++++++*##******************************************************+=+*****************************************+============----------=----------====================----=====-------------------------------------------------------------------------------===================================+=-:-:-:::---::::::::::::::::::::::::::::::::::::::-============================-:::::::::::::::::::::::::---::::.:-==========+++=------------------------------------------------------------------------------------------:::::::::::--------:::::::::::::::::--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------=======================++++++++++********************************################################*+=--::::::---=+*#####################*+=--:::::::::::::::::::::::::::::::::::::::::::---===+++*##########################-:::::::::::::::::::+#####*---==++++++++==--::::::::::::::::::::::::::::+####################################################################################################################################################################*-::=#######--------------------::::---==++*********************++===---------------------------------::::::::::::------------===++++++++****************++==--------------------------==+++++*************++=---::::::::--------========++++++++**********************************#####################################################*************++++++++++=========----:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::----======++=====-------==+++++++++******++==--:::::--=++***********************************************++==-:::::::::--=++*******++==--:::::--=++******************************************************++++*************************************************************************************************#####################################################################*****************#########################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################***********************************#**
###############*********+++++++++****************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******############################################################################################*************************++++++***+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********************#%%%%@@@%%*+++++++++++++++++++++++++++++++++++===============================================================------------============-------------------------------------------------------------------------------------------------=====++++++++++++++++=====------------------------------------------=====+++++=======--------------======++++++++++=======--------------------------------------::::::%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%@@@@@@@@%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%####################################%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%*++*++++++++++++++++++++++++++++++++++++++++++++++++++***####****+**+++++++++++++++++++++++++#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%%%@@@@@@%%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###############################################################################*********++++++++++===========================----====================================+++++++###*****************************************************+=+******************************************+============----------=---------====================-----=====-------------------------------------------------------------------------------=====================================-:-:--::---::::::::::::::::::::::::::::::::::::::-============================-:::::::::::::::::::::::::------::-===============------------------------------------------------------------------------------------------::::::::::---------:::::::::::::::::-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------=======================+++++++++*****************************#########################################*+=--:::::::---=+*#####################*+=--:::::::::::::::::::::::::::::::::::::----==+++++*#########################*-:::::::::::::::::::*#####=--==++++++++==--:::::::::::::::::::::::::::::+####################################################################################################################################################################*-::*######*-------------------::::---==++*********************+++==----------------------------------:::::::::::------------====++++++++***************++==-------------------------====++++*************++=---::::::::--------========+++++++++*********************************#####################################################*************++++++++++=========----::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-----==========---------==+++++++*******++==--:::::--==++**********************************************++=--:::::::::--=++*******++==--:::::--=++***************************************************+++++++++++**********************************************************************************************####################################################################*****************#########################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################***********************************#**
##############**********+++++++++***************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******##########################################################################################***************************+++++++***+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***********************#%%%@@@@@%*++++++++++++++++++++++++++++++++++++==============================================================----------==================--------------------------------------------------------------------------------------------======++++++++++++++++=====-----------------------------------------=======++++======---------------======++++++++++========------------------------------------:::::::+@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%@@@@@@@@@%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@%####################################%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#*+++*++++++++++++++++++++++++++++++++++++++++++++++****#####***+*****++++++++++++++++++++++%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%%%@@@@@%%@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###############################################################################**********+++++++++===========================----=====================================++++++*##*****************************************************++********************************************+==========-==--=----------------=======+============-----====-:-----------------------------------------------------------------------------=======================================:--:-:----::::-::::::-:::::::::::::::::::::::::-==============================-:-::::::::::::::::::---------------===========--------------------------------------------------------------------------------------------:::::::::::::--:::::::::::::::::::-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------=======================++++++++++*******************************############################################*+=-:::::::::--=+*######################*+=-:::::::::::::::::::::::::::::::::---===++++++*#########################+:::::::::::::::::::=######--=+++++++++==--::::::::::::::::::::::::::::::+####################################################################################################################################################################+-:-#######+------------------::::---==++*********************+++==----------------------------------:::::::::::-------------=====+++++++**************++==-------------------------=====++++************++=--:::::::::--------============+++++********************************#######################################################****************++++++=========----::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::----========----::::--==++++++********++==--:::::--==++**********************************************++=--:::::::::--==++******++==--:::::--=++************************************************++++++===+++++++********************************************************************************************#####################################################################****************#########################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################**************************************
##############**********++++++++****************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****###########################################################################################***************************+++++++***+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***********************#%%%@@@@@%#+++++++++++++++++++++++++++++++++++++=============================================================----------=====================-----------------------------------------------------------------------------------------======++++++++++++++++=====-----------------------------------------======+++++======---------------=====+++++++++++++=======-----------------------------------::::::.-@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%@@@@@@@@@@%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@%%##################################%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%*+++++++++++++++++++++++++++++++++++++++++++++++++++**#####***+*****++++++++++++++++++++++%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%%%@@@@@%%@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#################################################################################**********+++++++++===========================---======================================++++++*##***************************************************************************************************+=============-==-----=----------=======+============----====--------------------------------------------------------------=-----------------=======================================-:--:-----:::::::::::::::::::::::::::::::::::::-==============================-:-:::::::::::::::::-----------------===---------------------------------------------------------------------------------------------------::::::::::::::::::::::::::::::::::------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------=====================++++++++++++*******************************#################################################**=-:::::::::--=*#######################*+=-:::::::::::::::::::::::::::::---===+++++++*#########################+:::::::::::::::::::+#####*-==+++*++++==--:::::::::::::::::::::::::::::::+####################################################################################################################################################################+::+#######=:----------------:::::--==++**********************++==----------------------------------:::::::::::--------------======+++++**************+++=--------------------------======+++**********++==--:::::::::---------=============++++*******************************#######################################################****************++++++==========---:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::----======----:::::---==++++*********++==--:::::--==++*********************************************+++=--:::::::::--==++******++==--:::::--=++***********************************************++++==========++++******************************************************************************************######################################################################****************#########################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################***********************************##*
##############************++++*****************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****###########################################################################################***************************++++++****+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***********************#%%%@@@@@%#+++++++++++++++++++++++++++++++++++++++++=========================================================----------========================--------------------------------------------------------------------------------------=====+++++++++++++++++=====-----------------------------------------=====++++++======---------------=====++++++++++++++======-----------------------------------::::::.:%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%@@@@@@@@@@%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@%%%#################################%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@*++*+++++++++++++++++++++++++++++++++++++++++++++++**#####**********+++++++++++++++++++++%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%%@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####################################################################################**********+++++++++==========================---======================================+++++++*##***************************************************************************************************+=============-==---------------========+============----====-:------------------------------------------------------------=-----------------========================================---:-----::::::::::::::::::::::::::::::::::::-===============================-::::::::::::::::--------------------------------------------------------------------------------------------------------------------------::::::::::::::::::::::::::::::::::----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------====================+++++++++++++********************************######################################################*+=--::::::::-=+*#######################*+=-::::::::::::::::::::::::----==++++++++++*########################=::::::::::::::::::-######+-=++++++++==--:::::::::::::::::::::::::::::::-*####################################################################################################################################################################=:-########=----------------:::::--==++**********************++==----------------------------------::::::::::-----------------=====+++++*************+++=-----------------------------====++**********++==--:::::::::---------------========+++*******************************#######################################################****************+++++++=========----::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::----===----:::::::--==++++********+++==-::::::--==++*********************************************++==--::::::::::-==++******+++=--:::::--=+++********************************************++++=====----=====++++***************************************************************************************#######################################################################*****************#########################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################*********************************###*
##############************+++******************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****###########################################################################################***************************+++++*****++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++************************#%%@@@@@@%#++++++++++++++++++++++++++++++++++++++++++++++====================================================----------==========================-----------------------------------------------------------------------------------======+++++++++++++++++=====-----------------------------------------====++++++======----------------=====+++++++++++++++======----------------------------------:::::::.+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%@@@@@@@@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@%%################################%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%*+*+++++++++++++++++++++++++++++++++++++++++++++++**#####**********+++++++++++++++++++++%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%%@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##################################%##################################################***********++++++++==========================----======================================+++++++###***************************************************************************************************+=============-==----=---------========+++==========----====---------------------------------------------------------------==-------------=-=========================================--:------::::::::::::::::::::::::::::::::::::-===============================-::::::::::--------------------------------------------------------------------------------------------------------------------------------:::::::::::::::::::::::::::::::::-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------======================+++++++++++++*********************************###########################################################**==-::::::::-=+*#######################*+--::::::::::::::::::::----==+++++++++++*#######################*-::::::::::::::::::=######==++++++++==--::::::::::::::::::::::::::::::::-*###################################################################################################################################################################*=:+#######*---------------::::::--==++**********************++==-----------------------------------:::::::::-------------------=====+++*************+++==------------------------------==+++*********++==--:::::::::-------------------====+++******************************########################################################****************+++++++=========----:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---------::::::::---==++++*******+++==-::::::--==++*********************************************++==--::::::::::--=++*******++=--:::::--==++*******************************************+++====----------===++++**************************************************************************************#######################################################################*****************##########################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################********************************###*
##############*************++*****************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****##########################################################################################****************************+++++*****+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*************************#%%@@@@@@%#++++++++++++++++++++++++++++++++++++++++++++++++==================================================---------==============================--------------------------------------------------------------------------------=====++++++++++++++++++=====-----------------------------------------====++++++======----------------=====+++++++++++++++======----------------------------------:::::.:.-%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@%%%###############################%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#+++++++++++++++++++++++++++++++++++++++++++++++++**#####***********++++++++++++++++++++%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%%@@@@@@@@@@@@@@@%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##############################%%##%%%%%###############################################***********++++++++=========================---===--===================================+++++++###***************************************************************************************************==============-==----=---------========+++==========----===----------------------------------------------------------------==------------==-==========================================--::----::::::::::::::::::::::::::::::::::::================================-:-:::::-----------------------------------------------------------------------------------------------------------------------------------::::::::::::::::::::::::::::::::------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------=====================++++++++++++++**********************************#################################################################*+=-:::::::--+*#######################*+=-:::::::::::::::::----==++++++++++++*#######################*-::::::::::::::::::*#####*++++*++++==--:::::::::::::::::::::::::::::::::-*###################################################################################################################################################################*-:*#######+---------------:::::--==++**********************++===------------------------------------:::------------------------====+++**************++==-------------------------------==++*********++=---::::::::::------------------====++++*****************************########################################################*****************++++++=========----:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-------:::::::::--==++++*******+++=--::::::--==+++********************************************++==--::::::::::--==++******++==-:::::--==++******************************************+++===--------------===++*************************************************************************************########################################################################*****************##########################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################*********************************##*
##############*******************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****#########################################################################################*****************************+++++*****+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*************************#%%@@@@@%%#+++++++++++++++++++++++++++++++++++++++++++++++++++++++===========================================---------=================================-----------------------------------------------------------------------------=====++++++++++++++++++=====----------------------------------------=====++++++======----------------=====++++++++++++++++=====---------------------------------:::::::..:#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@%%%%%############################%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%*++*++*++++++++++++++++++++++++++++++++++++++++*+***####***********++++++++++++++++++++#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@%@@@@@@@@@@@@@@@%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###############################%%%%%%%%%%%##############################################***********++++++++========================---===---===================================++++++*###***************************************************************************************************==============-=----=---------=========+++=========----===--:--------------------------------------------------------------==-----------===============================================-:-----:::::::--::::::::::::::::::::::::::-=================================:-::-:-------------------------------------------------------------------------------------------------------------------------------------:::::::::::::::::::::::::::::-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------=====================++++++++++++************************************######################################################################*==-::::::-=+*########################*=-::::::::::::::----==++++++++++++=+#######################+::::::::::::::::::-######*++*+++++==--::::::::::::::::::::::::::::::::::-*###################################################################################################################################################################+:=########=--------------:::::--==+++*********************+++==-----------------------------------------------------------------==+++**************++==-------------------------:-----==++*********++=---::::::::::------------------===+++++****************************#########################################################*****************++++++=========----:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---:::::::::::--==+++++******+++=--:::::::-==+++********************************************++==-:::::::::::--==++******++==--::::--==++******************************************++===-----:::::::----===++************************************************************************************#########################################################################****************##########################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################*********************************##*
##############*******************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****#########################################################################################*****************************+++++*****++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**************************#%%%%%%%%%#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++======================================---------=======================================----------------------------------------------------------------------=====+++++++++++++++++++=====---------------------------------------======++++++=====----------------======++++++++++++++++=====---------------------------------::::::::..+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%##################%%%#######%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%*++**+*++++++++++++++++++++++++++++++++++++++++*++**####************+++++++++++++++++++#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@%@@@@@@@@@@@@@@%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%################################%%%%%%%%%%%%%%%############################################**********+++++++++=======================---====--==-=================================++++++*##****************************************************************************************************==============-=----=---------========+++++========----===------------------------------------------------------------------==----------================================================------::::::----::::::::::::::::::::::::--=================================:--:-:-------------------------------------------------------------------------------------------------------------------------------------::::::::::::----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------====================+++++++++++++**************************************#########################################################################**=--::-=---=*########################*+=-::::::::::----==+++++++++++++=+#######################=::::::::::::::::::+######*+*+*+++==--:::::::::::::::::::::::::::::::::::-*###################################################################################################################################################################=:*%######*-------------::::::---=+++*********************+++==-------------------------------------------==========------------==+++**************++==--------------------:::::::::--==++*********++=--:::::::::::-----------------====++++*****************************#########################################################*****************+++++++========----:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--===++++++****+++=--:::::::--=+++*******************************************+++==-::::::::::::-==++******++==--::::--==++*****************************************++===----:::::::::::---==+++***********************************************************************************#########################################################################****************###########################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################********************************###
##############******************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****#########################################################################################*****************************++++*******+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**************************#%%%%%%%%%#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==================================---------==============================================---------------------------------------------------------------=====+++++++++++++++++++=====---------------------------------------=====+++++=+=====----------------======+++++++++++++++++====---------------------------------:::::::.:.:%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@%%%%%%################%%%%######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%*+++*++++++++++++++++++++++++++++++++++++++++++*++**####************+++++++++++++++++++*%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@%@@@@@@@@@@@@@@%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###############################%%%%%%%%%%%%%%%%%%%##########################################**********+++++++++=======================--=====-===-=================================++++++*##****************************************************************************************************==============-----=----------========+++++========---===-------------------------------------------------------------------==---------==================================================-----:::::------:::::::::::::::::::::::-==================================::---:----------------------------------------:::------------------------------------------------------------------------------------------::::::::::::--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------=====================+++++++++++*****************************************#############################################################################**+++-::::-=**########################+=-:::::::----==+++++++++++++===*######################-:::::::::::::::::-*######++**+++==--::::::::::::::::::::::::::::::::::::-*###################################################################################################################################################################-=########+------------::::::---==++*********************+++==--------------------------------------================-----------==+++**************++==-------------------::::::::::--==++********+++=--:::::::::::----------------====+++++****************************##########################################################*****************+++++++========----:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---==+++++++***++==--:::::::--=+++*******************************************+++==-::::::::::::-==++******++==--::::--==++*****************************************++==---::::::::::::::---==++***********************************************************************************#########################################################################*****************##########################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################********************************###
##############*****************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****##########################################################################################*****************************+++*********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*+**************************#%%%%%%%%%*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=============================---------=====================================================--------------------------------------------------------====++++++++++++++++++++=====---------------------------------------=====++++++======----------------=====++++++++++++++++++====--------------------------------::::::::::..#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@%%%%%%%##############%%%%%%#####%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%***++++++++++++++++++++++++++++++++++++++++++++*+*+*#####*************+++++++++++++++++*#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@%@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###############################%##%%%%%%%%%%%%%%%%%%#########################################************+++++++=======================--===========================================+++++++###****************************************************************************************************============-==----=---------========++++++=======----==---------------------------------------------------------------------=--------===================================================-:--:-::::----:::::::::::::::::::::::-:============================-======---:--------------------------------------:::::::-----------------------------------------------------------------------------------------:::::::::---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------======================+++++++++++***************************************######################################################################################*+=-::::-=*#########################+=-::::---===++++++++++++===-=*#####################*::::::::::::::::::+######*++++++==---::::::::::::::::::::::::::::::::::::-*##################################################################################################################################################################*-*########=-----------::::::---==++*********************+++==--------------------------==================++++++=====----------==+++**************++==-------------------::::::::::--==++********++==--:::::::::::---------------====+++++****************************###########################################################*****************+++++++=========---::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--====+++++++++++=--:::::::--=+++*******************************************+++=--::::::::::::--=++******+++=--:::::--=++****************************************++==---::::::::::::::::---==++********************************************************************************###########################################################################******************##########################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################********************************##
##############*****************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****#########################################################################################******************************+++*********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****************************##%%%%%%##*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++============================---------=========================================================---------------------------------------------------=====++++++++++++++++++++=====---------------------------------------=====++++++=====-----------------=====++++++++++++++++++====--------------------------------:::::::::.:.=@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@%%%%%%%#############%%%%%%%%###%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%*+++*++++++++++++++++++++++++++++++++++++++++++*+*+*#####*************++++++++++++++++++*%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%################################%%#%%%%%%%%%%%%%%%%%%%#########################################************+++++++=======================-============================================+++++++###****************************************************************************************************==============-----=---------========++++++=======---=+----------------------------------------------------------------------==-------===================================================---:::::-:----::::::::::::::::::::-:-:-===========================--======-:--------------------------------------::::::-------------------------------------------------------------------------------------------------::-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------===================+++++++++++*************************************#*******######################################################################################**==-:::-=*########################*+=-::---==++++++++++++===---*#####################+:::::::::::::::::-*######**++++==---:::::::::::::::::::::::::::::::::::::=*##################################################################################################################################################################+=########*-----------::::::---==++**********************++==------------------====================++++++++++++++===-----------==++**************++==-------------------::::::::::--==++********++==--:::::::::::---------------===+++++****************************#############################################################****************+++++++=========---::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--=====++++++++++=--:::::::--=+++*******************************************+++=--::::::::::::--=+++******++=--:::::--=++****************************************++==---::::::::::::::::---==++********************************************************************************###########################################################################******************###########################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################*******************************##
##############****************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****########################################################################################*******************************+++*********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******************************########*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=======================---------===============================================================---------------------------------------------=====++++++++++++++++++++=====---------------------------------------=====++++++=====-----------------=====+++++++++++++++++=====-------------------------------::::::::::::::%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%##########%%%%%%%%%%##%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%*+++**++++++++++++++++++++++++++++++++++++++++++++*+*####*************+++++++++++++++++++*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##################################%%%%%%%%%%%%%%%%%%%%%%#########################################************++++++=====================================================================++++++*###****************************************************************************************************==============----=---------========++++++++=======--==----------------------------------------------------------------------==-------====================================================-:--:-:-:----:::::::::::::::::::::-::============================--======---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------===================++++++++++++*******************************************##############################################################################################*+=-:::-=*########################*+=---==++++++++++++===----*#####################=:::::::::::::::-:=######*+++++==---::::::::::::::::::::::::::::::::::::::=###################################################################################################################################################################=*########+---------:::::::---==++**********************++==------------==================++++++++++++++++++++++===-----------==++**************++==-------------------::::::::::--==++********++==--::::::::::::-------------===+++++*****************************#############################################################****************+++++++=========----:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--::::::::::::::::::::::::::::::::::::::::::::::::---=====+++++++++=--:::::::--=+++*******************************************++==--::::::::::::--==++******++=--:::::--=++***************************************++==---::::::::::::::::::---==++******************************************************************************############################################################################******************###########################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################*******************************##
##############***************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****########################################################################################*******************************+++*********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******************************######**++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=================--------=========================================================================-----------------------------------=====+++++++++++++++++++++=====--------------------------------------======++++++=====-----------------=====+++++++++++++++++=====------------------------------:::::::::::::::*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%########%%%%%%%%%%%%#%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#+*++**++++++++++++++++++++++++++++++++++++++++++*+++*####**************++++++++++++++++*+**@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##################################%%%%%%%%%%%%%%%%%%%%%%%#########################################************++++++=====================-===============================================++++++*##*****************************************************************************************************=============---------------========++++++++======--==-----------------------------------------------------------------------==------=====================================================-:--:-:::----::-::::::::::::::::::-:-===========================---========---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------==================--------------------------------------------------------------------------------------====================++++++++++******************************************######################################################################################################*+=-::-+*########################*++==+++++++++++++==---:-*####################*-:::::::::::::::--*######*++++==---:::::::::::::::::::::::::::::::::::::::=##################################################################################################################################################################*=#########----------::::::---==++**********************++===--------==========+++++++++++++++++++++++++++++++++===-------:---=+++**************++==-------------------::::::::::--==++********++==--::::::::::::------------====++++******************************#############################################################*****************++++++=========----:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-------:::::::::::::::::::::::::::::::::::::::::::::-----=====+++++++=--:::::::--=+++*******************************************++==--::::::::::::--==++******++=--:::::--=+++**************************************++==---:::::::::::::::::::--==++***************************************************************#####**********############################################################################******************############################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################******************************##
###############**************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****########################################################################################******************************+++**********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********************************##***++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++============--------==============================================================================------------------------------=====+++++++++++++++++++++=====--------------------------------------=====++++++======-----------------=====+++++++++++++++++=====------------------------------::::::::::::.::-%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%####%%%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@*+**+*+++++++++++++++++++++++++++++++++++++++++++++++*#####******************+++*********+***%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##################################%#%%%%%%%%%%%%%%%%%%%%%%%#########################################************++++++=====================-===============================================++++++###*****************************************************************************************************=============--------------=========++++++++======-==------------------------------------------------------------------------==------======================================================-:-:-::-----:--::::::::::::::::-::-============================---====++++=-------------------------------==------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------=========================----------------------------------------------------------------------------------==================++++++++++++************************************************######################################################################################################*+-:--+*########################**++++++++++++===--:-:-*####################+:::::::::::::::--=#######*+++==---::::::::::::::::::::::::::::::::::::::::+##################################################################################################################################################################+*########*---------::::::---==++**********************+++==------=======++++++++++++++++++++++++++++++++++++====------:::---==++**************++==--------------------:::::::::--==++********++==--::::::::::::------------===++++******************************##############################################################*****************+++++++========----:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---------:::::::::::::::::::::::::::::::::::::::::::-------===+++++++=--:::::::--=+++*******************************************++==--::::::::::::--==++******++==-:::::--==++**************************************++=---::::::::::::::::::::---=++***************************************************************#####*********#############################################################################******************############################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################******************************##
###############*************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****########################################################################################******************************+++**********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******************************++*****++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=++++=======-------================================================================================-----------------------------======++++++++++++++++++++=====--------------------------------------=====++++++=====------------------=====++++++++++++++++======-----------------------------::::::::::.::::::#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%####%%%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%*+**+*++++++++++++++++++++++++++++++++++++++++++++*+**#####*****************************+*++**#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######################################%%%%%%%%%%%%%%%%%%%%%%%%%#########################################************+++++======================================================================+++++*###*****************************************************************************************************=============--------------========+++++++++=====-===------------------------------------------------------------------------==-----=======================================================-:----:-----:---::::::::::::::::::-===========================---==+++++++=----------------------------==-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------============================-------------------------------------------------------------------------------===================+++++++++++************************************##########***###########################################################################################################+=--=+*#########################*+++++++++===---:::-*####################=:::::::::::::::--*######**++==---:::::::::::::::::::::::::::::::::::::::::+##################################################################################################################################################################+#########=--------::::::---==++**********************+++============++++++++++***+++++++++++++++++++++========------::::---==++**************++==----------------------::::::---==++********++==--::::::::::::-----------===++++*******************************##############################################################*****************+++++++========----:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---===-----:::::::::::::::::::::::::::::::::::::::::---------==++++++=--:::::::--=+++*******************************************++==--::::::::::::--==++******++==--::::--==++*************************************+++=---::::::::::::::::::::---==+**************************************************************#########*****###############################################################################*****************#############################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################*****************************##
###############************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****#########################################################################################*****************************+++**********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++======------==================================================================================----------------------------======++++++++++++++++++++=====--------------------------------------=====++++++=====------------------=====++++++++++++++++=====-----------------------------::::::::::::::::::+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%###%%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#*+****++++++++++++++++++++++++++++++++++++++++++++*+*+*####******************************+****+*%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%@%@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#########################################%%%%%%%%%%%%%%%%%%%%%%%%%#########################################************+++++=====================-================================================+++++*###*****************************************************************************************************=============-------------=========+++++++++========-------------------------------------------------------------------------==-----=======================================================-::--------::---:::::::::::::::::-===========================--==+++++++===------------------------====--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------==============================----------------------------------------------------------------------------===================+++++++++++************************************************#################################################################################################################*+=-=+#########################**++++++===---::::-*###################*-::::::::::::::--=#######*++==---::::::::::::::::::::::::::::::::::::::::::*#################################################################################################################################################################**########*--------::::::---==++***********************+++======+++++++++**********++++++++++++++++==========------::::::---==++**************++==-------------------------------==++********++==--::::::::::::----------===++++*******************************###############################################################*****************++++++++=======----:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--=======----:::::::::::::::::::::::::::::::::::::::----------==++++==--:::::::--=+++*******************************************++==--:::::::::::::-==++******++==--::::--==++*************************************++==--::::::::::::::::::::::--==++*************************************************************############**###############################################################################******************############################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################*****************************##
###############***********************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****##########################################################################################****************************+++**********++++++++*+++++++++++++++++++++++++++++++++++++++++++++++++*****************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++======------===================================================================================---------------------------======++++++++++++++++++++=====--------------------------------------=====++++++=====------------------=====++++++++++++++++=====-----------------------------:::::::::::::::.::-%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%#%%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@*+*++**+++++++++++++++++++++++++++++++++++++++++++***++*####********************************+***+*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#############################################%%%%%%%%%%%%%%%%%%%%%%%%%#########################################************+++++====================--===============================================++++++*##******************************************************************************************************==============------=-----========+++++++++*+======--------------------------------------------------------------------------==-----=======================================================-:--:------::---:::::::::::::::-:-=============================++++++++==-----------------------====-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------================================------------------------------------------------------------------------===================+++++++++++**+++=================++++++++++=-----------------======+++++*****#####################################################################################################*+=+*#########################*++++===---:::::=*###################*-:::::::::::::---*######*++==---::::::::::::::::::::::::::::::::::::::::::-*#################################################################################################################################################################*#########+--------:::::---==++************************+++++++++++++**************++++++==============-----------::::::::--==+++*************++==-------------------------------==++********++==--::::::::::::----------===+++********************************###############################################################*****************++++++++========---:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--===+=====----:::::::::::::::::::::::::::::::::::::----------==++++==--:::::::--=+++*******************************************++==--:::::::::::::--=++******++==--::::--==++*************************************++==--::::::::::::::::::::::--==++*************************************************************#############################################################################################******************#############################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################****************************##
##############************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****#########################################################################################*****************************+++***********++++++++++++++++++++++++++++++++++++++++++++++++++++++++******************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++======-----==========+++++++====================================================================---------------------------=====+++++++++++++++++++=====--------------------------------------=====++++++======------------------=====+++++++++++++++======-----------------------------:::::::::::::::::::#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#**+*+**++++++++++++++++++++++++++++++++++++++++++++*+*+*#####*************************************#%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@%%%%%%@@@@@@@%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##############################################%%%%%%%%%%%%%%%%%%%%%%%%%#########################################************+++++===================-=================================================++++++###******************************************************************************************************==============------=-----========+++++++++++=====---------------------------------------------------------------------------==----=========================================================:-:--------:::-----:::-:-::-:-:-============================+++++++====---------------------====------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------==================================----------------------------------------------------------------------===================++++++++++++**=::::::::::::::::::::::---------:::::::::::::::::::::::::::::::::---===+++*******########################################################################################**++*########################*++===----:::::=####################=:::::::::::::---+#######++==---:::::::::::::::::::::::::::::::::::::::::::-############################################################################################################################################################################-------::::::---==++************************+++++++++*****************+++++==============-----------:::::::::----==++++***********++==-----------------=====--------===++********++==--:::::::::::::---------==++++********************************################################################################****************++++++++========---:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--==+++++===---:::::::::::::::::::::::::::::::::::::-----------==+++==--:::::::--==+++******************************************++==--:::::::::::::--=++******+++=--::::--==++*************************************++==--::::::::::::::::::::::--==++*************************************************************##############################*###############################################################*****************############################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################*****************************##
##############***********************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****##########################################################################################*****************************+++***********++++++++++++++++++++++++++++++++++++++++++++++++++++++++******************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++======-----========++++++++++++=================================================================---------------------------=====+++++++++++++++++++=====--------------------------------------=====++++++======------------------=====+++++++++++++++======-----------------------------:::::::::::::::::::+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%*+++**+++*+++++++++++++++++++++++++++++++++++++****+*+*+**####****************************************#%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%@@@%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###############################################%%%%%%%%%%%%%%%%%%%%%%%%%#########################################***********++++++==================-==================================================++++++###******************************************************************************************************==============-----==----========+++++++++++++===----------------------------------------------------------------------------==----=========================================================:----------::::---:::::-::-:-:--=========================+++++++======--------------------====--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------====================================-------------------------------------------------------------------==================++++++++++++***+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---------=++**######################################################################################*##########################+=----:::-::-=###################*-::::::::::::---=*######*+==---::::::::::::::::::::::::::::::::::::::::::::=###########################################################################################################################################################################+------::::::---==++**************************+++++*****************+++++=======--======---------:::::::::::::---===+++++*********++==-------------===================+++********++==--:::::::::::::---------==+++********************************#################################################################****************++++++++========---:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--==+++++++===--::::::::::::::::::::::::::::::::::::-----------=======--:::::::--==++******************************************+++==--:::::::::::::--=+++******++=--:::::-==++*************************************++=---::::::::::::::::::::::--==++*************************************************************#############################################################################################******************############################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################*****************************##
###############*********************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****##########################################################################################*****************************+++***********++++++++++++++++++++++++++++++++++++++++++++++++++++++++******************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++======----=======++++++++++++++++++++++==========================================================--------------------------=====+++++++++++++++++++=====--------------------------------------=====++++++=====-------------------=====+++++++++++++++=====-------------------------------::::::::::::::::::-%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#+*****++*++++++++**********************************+*++++*####*****************************************#%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%@@@%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%################################################%%%%%%%%%%%%%%%%%%%%%%%%%########################################************+++++==================--==================================================+++++*##*******************************************************************************************************==============-----=-----========++++++++++*++++-----------------------------------------------------------------------------==---==========================================================::---------::::::::::::-::-:::-========================+++++++==-====--------==--------====-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------=====================================----------------------------------------------------------------==================+++++++++++++***+-:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--==++++++++++++*****########################################################################################################*+=---::::::-+###################*-:::::::::::---=+#######+==---:::::::::::::::::::::::::::::::::::::::::::::=###########################################################################################################################################################################=-----:::::----==++**********************************************++++++====--------====-----::::::::::::::::::---====++++********++==-----------=====================+++*********+==--:::::::::::::--------===+++********************************#################################################################*****************++++++++=======---:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--==++++++++===--:::::::::::::::::::::::::::::::::::------------======--:::::::--==++******************************************+++==--:::::::::::::--=+++******++=--:::::--=++*************************************++=---::::::::::::::::::::::---=++*************************************************************#############################################################################################******************############################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################*****************************##
###############*********************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****##########################################################################################*****************************+++**********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++******************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++======----=======++++++++++++++++++++++++++++=====================================================--------------------------====+++++++++++++++++++=====-------------------------------------=====+++++++=====-------------------=====+++++++++++++++=====--------------------------------------::::::------#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@*+*+*+****+++++++***********************************+**+*+*#####****************************************#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%@@@@%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%################################################%%%%%%%%%%%%%%%%%%%%%%%%%########################################************+++++==================-===================================================+++++*##*******************************************************************************************************==============--====---=========++++++++++*++++=-----------------------------------------------------------------------------==---==========================================================::-:-:----:::::::::::::::-:-:-=======================+++++++=------------====-------====--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------======================================-------------------------------------------------------------==================+++++++++++++***+--::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---------====++++++++=========++***#################################################################################################+-:::::::::+###################+:-:::::::::---=+*######*==----:::::::::::::::::::::::::::::::::::::::::::::=##########################################################################################################################################################################*-------------==+++*******************************************++++++=====----------====----:::::::::::::::::::----=====+++*******++==---------=========++++++=======++++*********++=--:::::::::::::--------===++********************************##################################################################*****************+++++++++======----:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--==++++++++==---::::::::::::::::::::::::::::::::::---------:---====---:::::::--==+++*****************************************+++=--::::::::::::::--==++******++==--::::--=++************************************+++=---::::::::::::::::::::::---=+++************************************************************#############################################################################################******************############################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################*****************************##
################*******************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****##########################################################################################****************************++++**********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++******************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++======----======++++++++++++++++++++++++++++++++++++================================================------------------------=====++++++++++++++++++====--------------------------------------=====++++++======-------------------=====++++++++++++++=====---------------------------------------------------+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%+******++**++++++***********************************+**+****#####**************************************#%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%@@@@@%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##############################################%%%%%%%%%%%%%%%%%%%%%%%%%########################################***********++++++=================-===================================================++++++###*******************************************************************************************************===================----=========+++++++++++++*+------------------------------------------------------------------------------==--===========================================================::-:------:::::::------:--::-=======================++++++=----------======-------====---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------=========================================---------------------------------------------------------==================++++++++++++++**+=-:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--::::::::---------:::::::::----==++**#############################################################################################+-:::::-:-*###################-::::::::::---==*#######+=----::::::::::::::::::::::::::::::::::::::::::::::+##########################################################################################################################################################################=------------==++******************************************++++++======-----------====----::::::::::::::::::::------===+++******+++==-------======++++++++++++++++++++**********++=---::::::::::::--------==+++********************************##################################################################*****************+++++++++======----:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--==+++++++++==--::::::::::::::::::::::::::::::::::--------:::--------::::::::--==+++*****************************************+++=--::::::::::::::--==++******++==--::::--=+++***********************************+++=---::::::::::::::::::::::---==++************************************************************#############################################################################################******************#######################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################***###################################****************************##
################******************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****##########################################################################################***************************++++***********++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++======---=====++++++++++++++++++++++++++++++++++++++++++=============================================-----------------------=====+++++++++++++++++=====--------------------------------------=====++++++=====--------------------=====++++++++++++++=====---------------------------------------------------=%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%**+***++**++++++********************************************#####**************************************#%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%@@@@%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##############################################%%%%%%%%%%%%%%%%%%%%%%%%#########################################***********+++++=================-====================================================++++++###*******************************************************************************************************===================----=========+++++++++++*++-------------------------------------------------------------------------------===============================================================::-:-----:::::::----::::-:-:-=====================+++++==--=====---==++=-------====------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------===========================================-----------------------------------------------------==================++++++++++++++***=--:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--::::::--::::::--::------:::::-:::-----::::::::--=++**#########################################################################################+-::::::-*##################*-:::::::::---==+#######*=----:::::::::::::::::::::::::::::::::::::::::::::::*#########################################################################################################################################################################*----------===+++****************************************++++++======-------------=====---:::::::::::::::::::::-------==+++*****+++===----=====+++++++++++++++++++++++**********++=---::::::::::::-------===++*********************************###################################################################****************++++++++++=====----:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--==+++++++++==--::::::::::::::::::::::::::::::::::--------::::-------::::::::--==+++*****************************************+++=--::::::::::::::--==++******++==--::::--==++***********************************++==---:::::::::::::::::::::::--==++************************************************************#############################################################################################******************##################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################**********#################################****************************##
################******************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****###########################################################################################**************************++++***********+++++++++++++++++++++++++++++++++++++++++++++++++++++++********************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++======---=====++++++++++++++++++++++++++++++++++++++++++++++++=========================================--------------------======+++++++++++++++++=====--------------------------------------=====++++++=====--------------------=====+++++++++++++======----------------------------------------------------#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%#*+***+++++********************************************######**************************************%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%@@@@%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%################################################%%%%%%%%%%%%%%%%%%%%%%%%#########################################***********+++++================-=====================================================+++++*##*******************************************************************************************************+===================---=========++++++++++++++=---------------------------------------------------------------------------===================================================================::-:-----:::::::::::::::::--====================++++++====+++++===++==------===----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------=============================================------------------------------------------------===================+++++++++++++++**=--:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-:::::::::::-:::-::::::-::::::--::::----==+*######################################################################################*=:::::=###################+::::::::----==+*#######+----:::::::::::::::::::::::::::::::::::::::::::::::-*#########################################################################################################################################################################+--=-=======+++****************************************+++++======---------------=====---::::::::::::::::::::::------==+++******++==========++++++++++++++++++++++++***********++==---:::::::::::-------==+++********************************####################################################################****************++++++++++=====----::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--==++++++++==--::::::::::::::::::::::::::::::::::--------::::::----:::::::::---=+++*****************************************+++=--:::::::::::::::-==++******++==--::::--==++***********************************++==--::::::::::::::::::::::::--==++************************************************************#############################################################################################******************################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################**************###############################****************************##
#################****************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****###########################################################################################**************************++++***********+++++++++++++++++++++++++++++++++++++++++++++++++++++++********************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++======---=====++++++++++++++++++++++++++++++++++++++++++++++++==============================================---------------======+++++++++++++++++=====-------------------------------------=====+++++++=====--------------------=====+++++++++++++=====-----------------------------------------------------+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#**+*+++++*********************************************######*************************************%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%@@@@%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###############################################%%%%%%%%%%%%%%%%%%%%%%%%########################################************+++++===============--=====================================================+++++*##*******************************************************************************************************+==================---==========+++++++++++++=--------------------------------------------------------------------------=====================================================================::-:-----:::::::::::::-:::-====================+++++====++++++++++==---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------==============================================---------------------------------------------====================++++++++++++++**+-::::::::-:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-::::-::::::::-:::::--:::::::::::--:::------:::::--==+**##################################################################################*-::::+##################*-:::::::----==+*#######*=---::::::::::::::::::::::::::::::::::::::::::::::::-#########################################################################################################################################################################*=========++++*****************************************++++=====-----------------=====---:::::::::::::::::::::::-----===++******+++=======++++++++++++******+++++++************++==------::::::::-------==+++********************************####################################################################****************++++++++++=====----::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--==++++++++==--::::::::::::::::::::::::::::::::::--------::::::::::::::::::::--=++++****************************************+++=--:::::::::::::::-==++******+++=--::::--==++***********************************++==--::::::::::::::::::::::::--==++************************************************************##############################################################################################******************##############################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################****************##############################*****************************#
##################**************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****###########################################################################################**************************++++***********+++++++++++++++++++++++++++++++++++++++++++++++++++++++*******************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++======---====++++++++++++++++++++++++++++++++++++++++++++++++++++++==================================================-----=======++++++++++++++++======-------------------------------------=====+++++++=====--------------------=====+++++++++++++=====-----------------------------------------------------=%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%**+*++++************************+*********************######*************************************#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%@@@@%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#################################################%%%%%%%%%%%%%%%%%%%%%%%########################################***********++++++===============-=====================================================++++++###*******************************************************************************************************+==================---=========+++++**+*+++*=--------------------------------------------------------------------------======================================================================:-:-----:::::::-:::-:::-::-==================+++++====+++++++++++====--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------================================================-----------------------------------------====================+++++++++++++++*+=::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::----------::::---=+*################################################################################+-::-+##################+:::::-::---==++*#######=---:::::::::::::::::::::::::::::::::::::::::::::::::=#########################################################################################################################################################################+===++++++++******************************************+++=====------------------=====---:::::::::::::::::::::::-----===++******++++++=++++++++++**************+++*************+++==---------::--------===++*********************************#####################################################################***************+++++++++++=====---:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--==+++++++=---:::::::::::::::::::::::::::::::::::-------::::::::::::::::::::--==++++***************************************+++=--:::::::::::::::--=++*******++=--:::::-==++***********************************++==--::::::::::::::::::::::::--==++************************************************************##############################################################################################*****************#############################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################*******++++********#############################*****************************#
#####################***********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****############################################################################################**************************++++***********+++++++++++++++++++++++++++++++++++++++++++++++++++++++*******************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++======--=====++++++++++++++++++++++++++++++++++++++++++++++++++++++++============================================================++++++++++++++++======-------------------------------------=====+++++++=====--------------------=====++++++++++++=====-------------------------------------------------------#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#+**+++++*********************************************#######************************************#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%@@@@%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%################################################%%%%%%%%%%%%%%%%%%%%%%%#######################################************+++++===============-======================================================++++++##********************************************************************************************************+=================---==========++++++**+*+*+-------------------------------------------------------------------------========================================================================:-:-----::::::::::::::-::-=================+++++====+++++++++++=====---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------=================================================--------------------------------------====================+++++++++++++++++=-:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---------------:-:-++-==**############################################################################+-:-*##################=::::::----==++*#######*--:::::::::::::::::::::::::::::::::::::::::::::::::::=#########################################################################################################################################################################++++++++++*******************************************+++====-------------:-----======---:::::::::::::::::::::------===++*******+++++++++++++**********************************++====----------------===+++********************************######################################################################***************+++++++++++=====---::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--==+++++==---:::::::::::::::::::::::::::::::::::-------::::::::::::::::::::--===+++++*************************************++==--:::::::::::::::--=++*******++=--:::::--=++***********************************++==--::::::::::::::::::::::::--==++************************************************************##############################################################################################*****************#############################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################*****+++++++++******############################*****************************#
#####################**********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****#############################################################################################*************************++++***********+++++++++++++++++++++++++++++++++++++++++++++++++++++++*******************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++======--=====+++++++++++++++++++++++++++++++++++++++++++++++++++++++++==========================================================+++++++++++++++++======-------------------------------------=====++++++======--------------------======++++++++++======-------------------------------------------------------+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%*+*++++***********************************************#######***********************************#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%@@@@@%%%%%@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#########################################%%%%%%%%%%%%%%%%%%%%%%%#######################################***********++++++==============-=======================================================+++++*##********************************************************************************************************+=================--==========++++++++*++*+--------------------------------------------------------------------------========================================================================:-:-----::::::-::-::::-:-================++++======+++++==++=====------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------======================================================-----------------------------======================+++++++++++++++++=-::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-------::------:--::==-::---=+*##########################################################################+--##################*-:::::----==++*########=-:-::::::::::::::::::::::::::::::::::::::::::::::::::+########################################################################################################################################################################*+***************************************************++++====-----------:::----======---::::::::::::::::::::------===++++*******++++++++***************************************+++=======----------===+++********************************#######################################################################***************++++++++++++====---::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--===++++==--::::::::::::::::::::::::::::::::::::---=---:::::::::::::::::::::--===+++++************************************++==--:::::::::::::::--=+++******++==--::::--=+++**********************************++==--::::::::::::::::::::::::--==++************************************************************##############################################################################################******************###########################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################*****++++++++++++****############################*****************************#
####################**********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****##############################################################################################************************+++************++++++++++++++++++++++++++++++++++++++++++++++++++++++********************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++======--=====++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=++====================================================+++++++++++++++++======-------------------------------------=====++++++=====----------------------=====++++++++++======-------------------------------------------------------=@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#+*++*************************************************########**********************************#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######################################%%%%%%%%%%%%%%%%%%%%%%%######################################***********+++++++======================================================================+++++*##********************************************************************************************************+================---=========++++++*++++++=-------------------------------------------------------------------------=========================================================================:-:-----:::-::-::::--::-===============+++++=====++++=========---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------=========================================================--------------------==========================+++++++++++++++++=-::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-------------------:------:---::::---++*######################################################################*==##################+:::-::---==++**#######*--::::::::::::::::::::::::::::::::::::::::::::::::::::*########################################################################################################################################################################*****************************************************+++=====---------:::::---======---:::::::::::::::::::------====+++***********++******************************************+++++========-----====++++******************************#########################################################################***************++++++++++++====---:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--==++++==--::::::::::::::::::::::::::::::::::::---=---:::::::::::::::::::::---====++++++*********************************++==--:::::::::::::::--==++******++==--::::--=+++**********************************++==--::::::::::::::::::::::::---=++************************************************************##############################################################################################*****************############################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################****++++++++++++++****###########################*****************************#
###################***********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****##############################################################################################************************+++************+++++++++++++++++++++++++++++++++++++++++++++++++++++*********************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++======--=====+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===================================================++++++++++++++++++======-------------------------------------=====++++++=====----------------------=====+++++++++======---------------------------------------------------------%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%******************************************************#######**********************************#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%%%%%%%%%%%%%%%%%%%####################################%%%%%%%%%%%%%%%%%%%%%%%######################################***********++++++=======================================================================+++++###**+*****************************************************************************************************+================--==========++++++++*++*=-------------------------------------------------------------------------======++====+=============================================================:-:-----:::-:::::::--:--==============++++=====++++========------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------================================================================---------============================+++++++++++++++++=-:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::----::--::::::::::::::::::::--------:::----------------------:::------:::::::::---=+*####################################################################++##################-:::-:---==++**########=-:-::::::::::::::::::::::::::::::::::::::::::::::::::-*#######################################################################################################################################################################******************************************************+++====--------::::::---======---::::::::::::::::::------====++++*********************************************************+++++++============++++******************************##########################################################################***************++++++++++++====---::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--==+++==--::::::::::::::::::::::::::::::::::::---=----:::::::::::::::::::::----====++++++*******************************++==--:::::::::::::::--==++******++==--::::--==++**********************************++==--::::::::::::::::::::::::---=+++***********************************************************##############################################################################################*****************###########################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################****++++=======++++****############################****************************#
##################***********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****###############################################################################################***********************+++************+++++++++++++++++++++++++++++++++++++++++++++++++++++*********************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++======--====+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++================================================++++++++++++++++++=======------------------------------------=====+++++======----------------------======++++++++======---------------------------------------------------------#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#*****************************************************########*********************************#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%#################################%%%%%%%%%%%%%%%%%%%%%%%%#####################################************++++++=======================================================================++++*##***+*****************************************************************************************************+===========================++++++++*++*=--------------------------------------------------------------------------====++++===++=============================================================:-:-----::--:::--:--::-=============++++=====++++========--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------===================================================================================================+++++++++++++++++=-:::::-:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-----------::::::::::::::::------------------------------------:-::-:-:----::-:::--:::--=+*##################################################################*#################+-:::----==++***#######*-:::::::::::::::::::::::::::::::::::::::::::::::::::::-########################################################################################################################################################################******************************************************+++====------:::::::---======---:::::::::::::::::-----====++++++***********************************************************++++++++========+++++******************************##########################################################################***************++++++++++++====---::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--===++==--::::::::::::::::::::::::::::::::::::---==---:::::::::::::::::::::::----====+++++++****************************++==--:::::::::::::::--==++******++==--::::--==++**********************************++==--::::::::::::::::::::::::---==++***********************************************************###############################################################################################****************###########################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################****+++=========++++****############################***************************#
#################***********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****################################################################################################**********************++*************+++++++++++++++++++++++++++++++++++++++++++++++++++++*********************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++======-=====++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++========================================+++++++++++++++++++============-------------------------------=====++++=======----------------------======++++++++=====----------------------------------------------------------*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#*****************************************************#########*********************************@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%##############################%%%%%%%%%%%%%%%%%%%%%%%%#####################################***********++++++========================================================================++++*##*+*******************************************************************************************************+===========================++++++++*+++--------------------------------------------------------------------------====++++++==++=============================================================:-:-----::--:::-::-::-============+++++=====+++==========--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------==================================================================================================+++++++++++++++==-:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::------------::::::::::::--------------------------------------:----::-----::---:::----:-----+*##################################################################################=:-:----==++***########=::::::::::::::::::::::::::::::::::::::::::::::::::::::=########################################################################################################################################################################******************************************************+++===------:::::::---======---::::::::::::::::-----====+++++*****************************************************************++++++++++++++++******************************###########################################################################***************++++++++++++====---::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---==+===--::::::::::::::::::::::::::::::::::::---==---::::::::::::::::::::::::-----=====++++++**************************++==--:::::::::::::::--==++******+++=--:::::-==++**********************************++==--:::::::::::::::::::::::::--==++***********************************************************###############################################################################################****************##########################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################****++++==========+++*****###########################***************************#
################************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****################################################################################################*********************+++*************+++++++++++++++++++++++++++++++++++++++++++++++++++++*********************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++======-=====++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===========================++++++++++++++++++++===============----------------------------======+++======------------------------======++++++======----------------------------------------------------------+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%******************************************************########*********************************%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%############################%%%%%%%%%%%%%%%%%%%%%%%%####################################************++++++=======================================================================+++++*##*++******************************************************************************************************===========================+++++++*++*+--------------------------------------------------------------------------=====++++++++++=============================================================:-:-----::---::-::-:--===========++++=====+++================----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------================================================================================================++++++++++++++++=-::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-------------::::::::::------------------------------------------:--:-:-:::---::--:::-:-::--::--+*###############################################################################*-:-:---==++****#######+:-:::::::::::::::::::::::::::::::::::::::::::::::::::::+#######################################################################################################################################################################*******************************************************+++===-----:::::::---======---::::::::::::::::----====+++++********************************************************************++++++++++++********************************###########################################################################***************++++++++++++====---:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--======--::::::::::::::::::::::::::::::::::::--===---::::::::::::::::::::::::::------====++++++************************++==--::::::::::::::::--=++******+++=--:::::--=++**********************************++==--:::::::::::::::::::::::::--==++***********************************************************###############################################################################################****************##########################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################****+++===========++++****###########################***************************#
################************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****################################################################################################**********************++**************++++++++++++++++++++++++++++++++++++++++++++++++++***********************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++============+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===============++++++++++++++++++++++===================-------------------------===============-------------------------======+++++=====-----------------------------------------------------------=@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%******************************************************#%#######********************************#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%##########################%%%%%%%%%%%%%%%%%%%%%%%%%%%################################***********++++++========================================================================+++++##**+++++***************************************************************************************************===========================+++++*+*+++=-------------------------------------------------------------------------=====+++++++++++=============================================================:-:-:-------:::-:::--==========++++=====+++====================--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------==============================================================================================++++++++++++++++=-::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-------------------:::::::--------------------------------------------------------------------------:-=*##############################################################################+:-:---==++****########-:-::::::::::::::::::::::::::::::::::::::::::::::::::::-*######################################################################################################################################################################*******************************************************+++===-----:::::::---======---:::::::::::::::----===++++++************************************************************************++++++++********************************############################################################################****************+++++++++++====----::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--=====---::::::::::::::::::::::::::::::::::::--===---:::::::::::::::::::::::::::::-----====++++++**********************++=--:::::::::::::::::--=++*******++==--::::--=+++*********************************++==--:::::::::::::::::::::::::--==++***********************************************************##############################################################################################******************#########################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################***++++============+++****###########################***************************#
###############************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****#################################################################################################*********************++**************++++++++++++++++++++++++++++++++++++++++++++++++++***********************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++============++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=============+++++++++++++++++++++++=====================-----------------------==============--------------------------======++++======-----------------------------------------------------------=@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%*******************************************************##########******************************#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%########################%%%%%%%%%%%%%%%%%%%%%%%%%%%###############################************++++++========================================================================++++*##**++++++*************************************************************************************************+===========================+++++++*+*=--------------------------------------------------------------------------=====+++++++++++=============================================================--:---------:::::--:==========+++=====+++=======================-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------============================================================================================++++++++++++++++=--::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::----------------------:::---------------------------------------------------------------------------::::-=+############################################################################*-::---==++*****#######+:::::::::::::::::::::::::::::::::::::::::::::::::::::::-#######################################################################################################################################################################*******************************************************+++==------::::::---======---::::::::::::::----====++++******************************************************************************************************************############################################################################****************+++++++++++====----::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--=====---::::::::::::::::::::::::::::::::::::--===---:::::::::::::::::::::::::::::::-----====+++++++*******************++=--:::::::::::::::::--=+++******++==--::::--=+++*********************************++==---::::::::::::::::::::::::--==++************************************************************#############################################################################################******************#########################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################***++++============+++****###########################****************************
###############************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****##################################################################################################********************++**************++++++++++++++++++++++++++++++++++++++++++++++++++***********************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++============++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=========++++++++++++++++++++++++=======================-----------------------=============---------------------------======+++=====------------------------------------------------------------=%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#******************************************************#%#########******************************%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@%@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%######################%%%%%%%%%%%%%%%%%%%%%%%%%%%#############################************++++++========================================================================+++++*##*+++++++*************************************************************************************************+==========================+++++**++++-------------------------------------------------------------------------======++++++++++++=============================================================--:---------:::::-:-=========++=====+++=========================-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------==========================================================================================++++++++++++++++=--:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-----------------------------------------------------------------------------------------------------:---::--=+*#########################################################################+::---==++****+########-::-::::::::::::::::::::::::::::::::::::::::::::::::::::+######################################################################################################################################################################*******************************************************+++===------:::::---======---::::::::::::::----===++++******************************************************************************************************************#############################################################################****************+++++++++++====----::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--=====--:::::::::::::::::::::::::::::::::::::--====--::::::::::::::::::::::::::::::::::----=====++++++*****************++=--:::::::::::::::::--==++******++==--::::--==++*********************************++==---::::::::::::::::::::::::--==+++***********************************************************#############################################################################################******************########################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################****++++============+++****###########################****************************
##############************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****###################################################################################################*******************++**************++++++++++++++++++++++++++++++++++++++++++++++++++***********************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++============++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==++++++++++++++++++++++++++++========================----------===----------============-----------------------------======+======-------------------------------------------------------------%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#******************************************************#%##########*****************************#%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%####################%%%%%%%%%%%%%%%%%%%%%%%%%%%%###########################************++++++=====================================------==============================+++++###*+++++++*************************************************************************************************+==========================+++++***++--------------------------------------------------------------------------=====++++++++++++==============================================================--:---------::--::--=======+++====+++============================------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------========================================================================================++++++++++++++++==-:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--------------------------------------------------------------------------------------------------------:::--:::::-=+*######################################################################-:---==++****+*#######+::::::::::::::::::::::::::::::::::::::::::::::::::::::::*######################################################################################################################################################################******************************************************+++===-------:::----======---:::::::::::::----===++++******************************************************************************************************************#############################################################################*****************+++++++++++=====---::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---====--:::::::::::::::::::::::::::::::::::::--====--::::::::::::::::::::::::::::::::::::-----====++++++**************+++=--:::::::::::::::::--==++******++==--::::--==++*********************************+++=---::::::::::::::::::::::::---=+++***********************************************************#############################################################################################******************########################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################****+++=============+++****###########################****************************
##############************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****###################################################################################################*******************+**************++++++++++++++++++++++++++++++++++++++++++++++++++************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++============++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===========================--------==========---=============-----------------------------======+======-------------------------------------------------------------%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@##*******************************************************#%###########****************************%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%@@@%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%##################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########################*************++++++====================================-------==============================+++++###*+++*++++************************************************************************************************+=========================+++++****+--------------------------------------------------------------------------======++++++++++++=============================================================-:----:------::-:--==-=====++====+++==============================------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------======================================================================================+++++++++++++++++=-::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::------------------------------------------------------------------------------------------------------------:::-:---::--+***#################################################################+----==++****++########-::-::::::::::::::::::::::::::::::::::::::::::::::::::::-######################################################################################################################################################################*****************************************************++++===--------::----======---:::::::::::::---===++++*******************************************************************************************************************#############################################################################*****************+++++++++++=====---::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---====--:::::::::::::::::::::::::::::::::::::--====--::::::::::::::::::::::::::::::::::::::-----====+++++++***********++==--:::::::::::::::::--==++******++==--::::--==++**********************************++==--::::::::::::::::::::::::---==++***********************************************************#############################################################################################******************########################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################****+++=============++++***###########################****************************
##############***********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****###################################################################################################*******************++**************++++++++++++++++++++++++++++++++++++++++++++++++++************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===========+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=============================-------==========================-------------------------------===========--------------------------------------------------------------#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%##*******************************************************#%%############**************************#%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%@@@%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%##############%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####################*************+++++++====================================-------===============================+++*##**+++++++++***********************************************************************************************+========================++++++***+=-------------------------------------------------------------------------======+++++++++++++=============================================================------:---------::=+=--==+++===+++=======-========================------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------===================================================================================++++++++++++++++++=-:--:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---:::::::--::::::::::::::::--------------------------------------------------------------------------------------------------------::---:::-::-----:---=+**##############################################################=---==++****++*#######=:-::::::::::::::::::::::::::::::::::::::::::::::::::::::+######################################################################################################################################################################**************************************************+++++====--------------======---:::::::::::-----==++++********************************************************************************************************************#############################################################################*****************+++++++++++=====---::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---====--:::::::::::::::::::::::::::::::::::::--====--::::::::::::::::::::::::::::::::::::::::-----=====++++++*********++==--:::::::::::::::::--==++******++==--::::--==++**********************************++==---:::::::::::::::::::::::---==++************************************************************############################################################################################******************########################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################****+++=============++++***############################***************************
##############***********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****##################################################################################################********************++*************++++++++++++++++++++++++++++++++++++++++++++++++++*************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===========++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=============================--------==========================-------------------------------===========--------------------------------------------------------------+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%##********************************************************#%%#############************************##%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%@@@%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###################*************++++++======================================------===============================+++*##**++++++++++++*******************************************************************************************+=========================+++++++**=-------------------------------------------------------------------------======++++++++++++++=============================================================----:-----------:-+++=-=++===++++================================-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------=================================================================================++++++++++++++++++=-:::::-::::::::::::::::::::::::::::::::::::::::::::::::::------::----::::::----------------------------------------------------------------------------------------------------------------------------:---::-------:::-------=+*############################################################+---==++****+++#######*--:::::::::::::::::::::::::::::::::::::::::::::::::::::::*#####################################################################################################################################################################************************************************++++++=====--------------=======----::::::::-----==++++*********************************************************************************************************************#############################################################################*****************+++++++++++=====---:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--====--:::::::::::::::::::::::::::::::::::::--====--:::::::::::::::::::::::::::::::::::::::::::-----====+++++++******++==--::::::::::::::::::-==++******++==--:::::--=++**********************************++==---:::::::::::::::::::::::---==++************************************************************############################################################################################******************########################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################****+++=============++++****###########################***************************
##############********++*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****#################################################################################################*********************++*************++++++++++++++++++++++++++++++++++++++++++++++++++************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===========+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==============================--------===========================------------------------------===========---------------------------------------------------------------@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%##********************************************************##%#%#############***********************#%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%@@%%%@%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###################*************++++++========================================----===============================+++###*+++*++++++++++******************************************************************************************+========================++++++++*+--------------------------------------------------------------------------======++++++++++++++=============================================================-:--:-----::---::=+++++++==++++=================================--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------================================================================================+++++++++++++++++=-:::::::::::::::::::::::::::::::::::::::::::::::-::::::----------------::::::-----------------------------------------------------------------------------------------------------------------------------------::--::---:--:-----=+**##########################################################=--==++****+++*#######=::::::::::::::::::::::::::::::::::::::::::::::::::::::::-######################################################################################################################################################################********************************************+++++++======---------------=======-----------------==+++**********************************************************************************************************************#############################################################################*****************+++++++++++=====----::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--====--:::::::::::::::::::::::::::::::::::::--====--:::::::::::::::::::::::::::::::::::::::::::::-----====+++++++***+++==--::::::::::::::::::--=+++*****+++=--:::::--=++***********************************++==--:::::::::::::::::::::::---==++************************************************************############################################################################################******************########################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################****+++=============++++****###########################***************************
##############**********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****##################################################################################################********************++*************++++++++++++++++++++++++++++++++++++++++++++++++++************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===========++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===============================-------==============================----------------------------==========----------------------------------------------------------------#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%#%%%%%%%%%%%%%%@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%##*********************************************************#%##%################*****################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##################************++++++========================================-----================================+**##**+++++++++++*+++****************************************************************************************+=======================++++++++*+-------------------------------------------------------------------------=======+++++++++++++++============================================================-:--:-:-:-::--:::-++++++++++++==================================---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------==============================================================================+++++++++++++++++=-::::::::::::::::::::::::::::::::::::::::::::::::::----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------==++**#######################################################*--=+++****++=+#######+:-:-:::::::::::::::::::::::::::::::::::::::::::::::::::::+#####################################################################################################################################################################*****************************************+++++++=======----------------========----------------==+++************************************************************************************************************************###########################################################################******************+++++++++++=====----::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--====--:::::::::::::::::::::::::::::::::::::--====--:::::::::::::::::::::::::::::::::::::::::::::::-----=====++++++++++=--:::::::::::::::::::--=+++*****++==--:::::--==++**********************************++==---::::::::::::::::::::::---==++************************************************************############################################################################################******************########################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################****+++=============++++***###############################************************
#############***********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****##################################################################################################********************++*************++++++++++++++++++++++++++++++++++++++++++++++++++************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===========+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=============================--------=====================================----------------------=========----------------------------------------------------------------*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%#%%%%%%%%%%%%%%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#********************************************************#%##%######################################%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#################************++++++========================================-----================================+**#**+++++++++++*+++*****************************************************************************************+=======================+++++++++=------------------------------------------------------------------------========+++++++++++++++============================================================-::-:--::--:-:-:-++++++++++++================================------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------============================================================================+++++++++++++++++=-::::::::::::::::::::::::::::::::::::::::::::::::::::-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------==++++**#####################################################=-=+++****+++=########-:::--:-:::::::::::::::::::::::::::::::::::::::::::::::::-#####################################################################################################################################################################**************************************+++++++======----------==------===========--------------==++++************************************************************************************************************************###########################################################################******************++++++++++++====----::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--====--:::::::::::::::::::::::::::::::::::::--====--:::::::::::::::::::::::::::::::::::::::::::::::::------====+++++++==--:::::::::::::::::::--=+++*****++==--:::::--==++**********************************+++=---::::::::::::::::::::::---==++************************************************************############################################################################################******************########################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################****+++=============++++***###############################************************
#############***********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****##################################################################################################********************++*************++++++++++++++++++++++++++++++++++++++++++++++++++************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===========+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=============================--------=============================================--------------=========----------------------------------------------------------------=%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%##%%%%%%%%%%%%%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#*****************************************************#%##%########################################%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%################***********+++++++========================================-----======---=======================+**#**+++++++++++++++*****************************************************************************************=======================+++++++++=-----------------------------------------------------------------=------========++++++++++++++++===========================================================-:----:--:--:-:--=++++++++++=================================-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------=========================================================================++++++++++++++++++=-::::::::::::::::::::::::::::::::::::::::::::::::::::-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------==+++++++**##################################################*===++****++==*#######+:-::-:-:-::::::::::::::::::::::::::::::::::::::::::::::::+#####################################################################################################################################################################**********************************++++++=======----------================++=====-----------====+++*************************************************************************************************************************###########################################################################******************++++++++++++====----::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--====--:::::::::::::::::::::::::::::::::::::--====--::::::::::::::::::::::::::::::::::::::::::::::::::::-----======+====--:::::::::::::::::::--==++*****++==--:::::--==++***********************************++==---:::::::::::::::::::::---==++************************************************************############################################################################################*******************#######################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################****+++=============++++***###################################************########
#############***********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****#################################################################################################*********************++*************++++++++++++++++++++++++++++++++++++++++++++++++++************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===========+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===========================--------==================================================--------==========-----------------------------------------------------------------%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%##%%%%%%%%%%%%%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%*****************************************************##############################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%################***********++++++=========================================------====----======================++**#**++++++++++++*+++++*************************************************************************************+=======================+++++++++------------------------------------------------------------------------========++++++++++++++++++=+========================================================-::-:--:--:----:-+++++++++===============================----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------=========================================================================+++++++++++++++++=--::::::::::::::::::::::::::::::::::::::::::------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------==+++++++++++*################################################==+++****++==+#######*---:-:-:-::::::::::::::::::::::::::::::::::::::::::::::::-#####################################################################################################################################################################********************************+++++======------------=================+++++=================+++***************************************************************************************************************************##########################################################################******************++++++++++++====----::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--====--:::::::::::::::::::::::::::::::::::::---===--::::::::::::::::::::::::::::::::::::::::::::::::::::::------=======---:::::::::::::::::::--==++*****++==--::::::--=++***********************************++==---:::::::::::::::::::::---==++************************************************************############################################################################################*******************#######################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################****+++=============+++****###################################********############
#############***********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****#################################################################################################*********************++*************+++++++++++++++++++++++++++++++++++++++++++++++++*************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==========+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++========================-------======================================================================----------------------------------------------------------------*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%##%%%%%%%%%%%%%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%****************************************************#%%############################################@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%################**********++++++===========================================-------==----======================++****++++++++++*+++++*+++************************************************************************************+======================+++++++++-----------------------------------------------------------------=---=--========+++++++++++++++++++=+=======================================================+=--:-:--:-:---:-=+++++++===============================------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------======================================================================++++++++++++++++++=--::--:::::::::::::::::::::::::::::------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------==+++++++++===+##############################################*=+++****++===########=:-:--::::::::::::::::::::::::::::::::::::::::::::::::::::+####################################################################################################################################################################*******************************++++=====-------------============+=====++++++++==============+++****************************************************************************************************************************##########################################################################******************++++++++++++====----::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--====--:::::::::::::::::::::::::::::::::::::---===--:::::::::::::::::::::::::::::::::::::::::::::::::::::::::-------=----::::::::::::::::::::--==++*****++==--::::::--==+************************************++==--:::::::::::::::::::::---==++************************************************************############################################################################################*******************#######################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################****+++=============+++****#######################################################
#############***********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****################################################################################################**********************++*************++++++++++++++++++++++++++++++++++++++++++++++++**************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==========+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++======================-------========================================================================--------------------------------------------------------------=@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%##%%%%%%%%%%%%%@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#***************************************************##%############################################@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%################**********++++++==============================================----===---======================+*****+++++++++++*++++**++++**********************************************************************************+=====================+++++++++=-----------------------------------------------------------------------========++++++++++++++++++++=========================================================+++=--::-::--:-:-+++++++=============================--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------===================================================================++++++++++++++++++++=-::-:-:::-:::::::::::::::::::::::::::----------------------------------------------------------------------------------------------------------------==-----------------------------------------------------------------------------------------===+++++++++===--=*############################################+=+*****+++=-+#######*:----:-::::::::::::::::::::::::::::::::::::::::::::::::::-#####################################################################################################################################################################*****************************+++====--------------=======++++++++++++++++++++++++=========+++++****************************************************************************************************************************###########################################################################*****************++++++++++++====----::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--====--:::::::::::::::::::::::::::::::::::::---==---:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---------:::::::::::::::::::::--==++*****++==--::::::--==++***********************************++==--:::::::::::::::::::::---==++************************************************************############################################################################################*******************#######################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################***++++=============+++****#######################################################
#############***********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****################################################################################################***********************++*************+++++++++++++++++++++++++++++++++++++++++++++++***************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==========++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==================--------===================================================================================================-------------------------------::::-%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%##%%%%%%%%%%%%%@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#***************************************************#%############################################@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%################********+++++++==============================================================================++*****+++++++++++*+++++*++++*********************************************************************************++=====================++++++++=---------------------------------------------------------------=-------========++++++++++++++++++++=+========================================================++++-:::--:-:::-=+++++============================-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------=================================================================++++++++++++++++++++=-::-::---:::::::::::::::::::::::::::::---------------------------------------------------------------------------------------------------------------======---------------------------------------------------------------------------------------===+++++++++===----=+##########################################*=+*****++====########=:--::-:---:::::::::::::::::::::::::::::::::::::::::::::::+####################################################################################################################################################################***+++++++++++**************+++===---------------=====++++++++++++++++++++++++++++++++++++++++*****************************************************************************************************************************###########################################################################*****************++++++++++++====----::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---==---:::::::::::::::::::::::::::::::::::::---==---::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-----::::::::::::::::::::::--==++*****++==--:::::::-==++***********************************++==--:::::::::::::::::::::---==++************************************************************############################################################################################********************######################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################***++++=============+++****#######################################################
#############********+**++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****################################################################################################***********************++*************+++++++++++++++++++++++++++++++++++++++++++++++***************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==========++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==================--------=======================================================================================================-----------------:::::::::::::::*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%###%%%%%%%%%%%%@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#**************************************************#%############################################@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#################******+++++++++==============================================================================++******+*++++++++++*=+++++++++++++***************************************************************************+=====================+++++++++---------------------------------------------------------------=------=========+++++++++++++++++++++=++=======================================================++++=-:-:--::-:=+++============================--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------===============================================================++++++++++++++++++++=-::::::::::::::::::::::::::::::::::::::---------------------------------------------------------------------------------------------------------------=========-------------------------------------------------------------------------------------===+++++++++==--------=*########################################++*****++===-*#######+:---:::------::------::------::::::::::::::::::::::::::::-####################################################################################################################################################################*++++++++++++++++**********++++==--------------=====+++++++++++++++++++++++++++++++++++++++++******************************************************************************************************************************###########################################################################*****************+++++++++++++===----::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---==---:::::::::::::::::::::::::::::::::::::---==---:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--==++*****++==-::::::::--=++***********************************++==---::::::::::::::::::::---==++************************************************************############################################################################################********************######################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################***++++============++++****#######################################################
#############**********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****################################################################################################***********************++**************++++++++++++++++++++++++++++++++++++++++++++++***+**********************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=========++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=============--------==========================================================================================================-----------::::::::::::::::::=@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%##%%%%%%%%%%@@%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@##*************************************************########%#####################################@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%################*****++++++++++=============================================================================++******+++++++++++++++=++*++++++++++**************************************************************************+====================+++++++++=---------------------------------------------------------------------=========++++++++++++++++++++++++========================================================+++++=-:-:-::-=++=========================------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------============================================================++++++++++++++++++++++=--:-::::::-::::::::::::::::::::::::---------------------------------------------------------------------------------------------------------------------====+====--------------------------------------------------------------------------------------==+++++++++==--------:-=+#######################################*+****++==--+########--:-::-----------------------:::::::::::::::::::::::::::::*####################################################################################################################################################################+++++=======+++++********++++===-------------====+++++++++++++++++++++********+++++++++++++********************************************************************************************************************************##########################################################################*****************+++++++++++++===----::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---==---:::::::::::::::::::::::::::::::::::::----=---:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--==++*****++=--::::::::--==++***********************************++=---::::::::::::::::::::---==++************************************************************###########################################################################################*********************######################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################***+++=============++++***########################################################
#############**********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****################################################################################################***********************++**************++++++++++++++++++++++++++++++++++++++++++++++***+**********************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=========++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=============-------=============================================================================================================---------:::::::::::::::::::%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%##%%%%%%%%%%@@%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%##*************************************************#%#%%###%####################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%################*****+++++++++==============================================================================++*+**#*++++++++++++++++=+++++++++++++++***********************************************************************+====================++++++++=----------------------------------------------------------------=----=========+++++++++++++++++++++++++========================================================++++++=----==++========================---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------============================================================++++++++++++++++++++=--::::-----::::::::::::::::::------::--------------------------------------------------------------------------------------------------------------------====++++===-------------------------------------------------------------------------------------==+++++++++==------------=+*######################################*****+==---########=::-:------------------------:::::::::::::::::::::::::::::-####################################################################################################################################################################+=============+++++*****++++====-----------=====++++++++++++++*******************+++++++++*********************************************************************************************************************************##########################################################################*****************+++++++++++++====----:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--------:::::::::::::::::::::::::::::::::::::----=---::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-==++*****++=--::::::::--==++***********************************++=---:::::::::::::::::::::--==++************************************************************###########################################################################################*********************###############################################################################################################%%%%%%#################################################################################################################################################################################################################################################################################################################################################################################***++++============++++***########################################################
#############**********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****################################################################################################**********************+++***************+++++++++++++++++++++++++++++++++++++++++++++**************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=======+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=============-------=================================================================================================================-------::::::::::::::::.*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%##%%%%%%%%%@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%##*************************************************###%####%%###################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@%%%%%%%%%%%%%%%#################****+++++++++============================================================================+=++*++*#*++*+++++++++++*++=++++++++++++++++********************************************************************+==+=+===============+++++++++---------------------------------------------------------------------========+++++++++++++++++++*++++++=========================================================++++++++++++==========================----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------========================================================++++++++++++++++++++++=--::::--------:::::::::::::::------------------------------------------------------------------------------------------------------------------------------===+++++===-------------------------------------------------------------------------------------==+++++++++==------------:--=*######################################***+==---*#######*:-::-:-----------------------:::::::::::::::::::::::::::::+###################################################################################################################################################################*==-------=====+++++**++++++======----========++++++++********************************++************************************************************************************************************************************#########################################################################*****************+++++++++++++====----:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--------:::::::::::::::::::::::::::::::::::::--------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--=++*****++=--::::::::--==++***********************************++=---:::::::::::::::::::::--==++************************************************************###########################################################################################*********************############################################################################################################%%%%%%%%%%%%##############################################################################################################################################################################################################################################################################################################################################################################***++++============+++****########################################################
############***********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****###############################################################################################***********************+++***************++++++++++++++++++++++++++++++++++++++++++++***************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=====+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++============-------============================================================================================++++++++++++===========-------:::::::::::::::=@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%##%%%%%%%%@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@##***********************************************#**#%##%%##%###################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@%%%%%%%%%%%%%#################****+++++++++==============================================================================+**++*#**+*++++++++++++*++=++++++++++++++++*******************************************************************+=++=+==============+++++++++=-------------------------------------------------------------------=========++++++++++++++++++++++++++==========================================================+++++++++++==========================----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------======================================================+++++++++++++++++++++++=-:::::--------:::::::::::::::--------------------------------------------------------------------------------------------------------------------------------==+++++++==-------------------------------------------------------------------------------------===+++++++===--------:--------=*######################################*+==---=########----::------------------------::::::::::::::::::::::::::::-###################################################################################################################################################################*-----------====++++++++++++================++++++**************************************************************************************************************************************************************************#########################################################################*****************+++++++++++++====----:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--------::::::::::::::::::::::::::::::::::::::-------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--=+++****++=--:::::::::--==+***********************************++==--:::::::::::::::::::::--==++************************************************************###########################################################################################**********************##########################################################################################################%%%%%%%%%%%%%%#############################################################################################################################################################################################################################################################################################################################################################################***++++============+++****########################################################
############***********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****###############################################################################################***********************+++***************++++++++++++++++++++++++++++++++++++++++++++***************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==========-------============================================================================================+++++++++++++++============-------:::::::::::::%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%#%%%%%%%%%@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@##************************************************#*##%##%#######################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%@@@@%%%%%%@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%#################****++++++++==============================================================================++*+++*##*+*+*+++++++++++*++=++++++++++++++++*****************************************************************++=+++++============++++++++++-------------------------------------------------------------------========+++++++++++++++++++++*+++++===========================================================++++++++++==========================-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------==================================================+==++++++++++++++++++++++=--:::----=----:::::::::::::::::--------------------------------------------------------------------------------------------------------------------------------==+++++++==-------------------------------------------------------------------------------------===+++++++===--------------:----=*#####################################*==----########+:----------------------------:::::::::::::::::::::::::::::=###################################################################################################################################################################=----------====++++++++++++++========++++++++++****************************************************************************************************************************************************************************##########################################################################****************+++++++++++++====----:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--------::::::::::::::::::::::::::::::::::::::-------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--==++***++==--:::::::::--==++**********************************++==--:::::::::::::::::::::---=+++***********************************************************###########################################################################################**********************#########################################################################################################%%%%%%%%%%%%%%%%############################################################################################################################################################################################################################################################################################################################################################################***++++===========++++***#########################################################
############***********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****###############################################################################################***********************+++***************++++++++++++++++++++++++++++++++++++++++++++***************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=========-------=============================================================================================+++++++++++++++++++==========-------::::::::::#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#**********************************************#*##*#%%##%%#####################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%################*****++++++++==============================================================================++*+++*##**+**+++++++++*++*++=+++++++++++++++++++++***********************************************************+++++++++==========+++++++++++------------------------------------------------------------------========+++++++++++++++++++++++++++===========================================================+++++++++===========================-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------==================================================++++++++++++++++++++++++=--:::---==---:::::---::::::::::----------------------------------------------------------------------------------------------------------------------------------==+++++++===-------------------------------------------------------------------------------------==+++++++==--------:---:---------=+####################################*+=---+#######*-::--------------------------::::::::::::::::::::::::::::::*##################################################################################################################################################################+--------======+++++++++++++++++++++++++++++********************************************************************************************************************************************************************************#########################################################################****************+++++++++++++====----:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--------::::::::::::::::::::::::::::::::::::::-------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--==++***++==--::::::::::--=++**********************************++==--:::::::::::::::::::::---=+++***********************************************************###########################################################################################**********************########################################################################################################%%%%%%%%%%%%%%%%%%%##########################################################################################################################################################################################################################################################################################################################################################################***+++============+++****#########################################################
############***********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****##############################################################################################************************+++***************+++++++++++++++++++++++++++++++++++++++++++***************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=========-------===============================================================================================++++++++++++++++++++==========---------:::::+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#*********************************************##*##*##%%#%%#%####################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%################*****+++++++===============================================================================++++++*##****+++++++++++*++*++=++++++++++++++++++++++*********************************************************+++++++++==========++++++++++=-----------------------------------------------------------------========++++++++++++++++++++++*++++============================================================++++++++===========================------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------==================================================++++++++++++++++++++++=--::----===-:::------:::::::---------------------------------------------------------------------------------------------------------------------------------------==+++++++===-------------------------------------------------------------------------------------==+++++++==-------------------:-----+####################################*=--=########=::--------------------------::::::::::::::::::::::::::::::-##################################################################################################################################################################*=----=======+++++++****+++++++++++++++*************************************************************************************************************************************************************************************#########################################################################****************+++++++++++++====----:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-------:::::::::::::::::::::::::::::::::::::::-------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--==+++*+++=--:::::::::::--==++*********************************++==--:::::::::::::::::::::---=+++************************************************************#########################################################################################************************######################################################################################################%%%%%%@@@@@%@@%%%%%%%#########################################################################################################################################################################################################################################################################################################################################################################***+++============+++***##########################################################
############***********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****##############################################################################################************************+++***************+++++++++++++++++++++++++++++++++++++++++++***************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==+======-------=============================================================================================++++++++++++++++++++++++++==========---------:-%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@##***********************************************##*###%%####%%####%############################%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%################*****+++++++===============================================================================++++++*###***+++++++++++++++*++=+++++++++++++++++++++**+++***************************************************++++++++++=========+++++++++++----------------------------------------------------------------========++++++++++++++++++++++++*+++=============================================================++++++=============================------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------=================================================+++++++++++++++++++++=--::---===--:::-:::-::::-:-------------------------------------------------------------------------------------------------------------------------------------------==+++++++===-------------------------------------------------------------------------------------===++++++==-----------------:--:----:-+####################################+--########+:-:-------------------------:::::::::::::::::::::::::::::::+##################################################################################################################################################################=========+++++++++*********************************************************************************************************************************************************************************************************#########################################################################****************+++++++++++++====----:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-------:::::::::::::::::::::::::::::::::::::::-------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--=++++++==--::::::::::::-==++*********************************++==--:::::::::::::::::::::---=+++************************************************************#########################################################################################************************#####################################################################################################%%%%@@@@@@@@@%@@%%%%%%#########################################################################################################################################################################################################################################################################################################################################################################***+++===========++++**###########################################################
############***********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****################################################################################################**********************++****************++++++++++++++++++++++++++++++++++++++++++****************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=======-------===============================================================================================+++++++++++++++++++++++++++===========-------#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#**********************************************########%%%##%#%%%#%%%%%#############%##########%##%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%#%###############******+++++================================================================================++++++**#*****++++++++++++++++++==+++++++++++++++++++**++++++++**********************************************+++++++++++=======+++++++++++=---------------------------------------------------------------=======+++++++++++++++++++++++++*++++============================================================++++++==============================-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------=========================================+===+++==+++++++++++++++++++=-----=====-:::::::---::::---------------------------------------------------------------------------------------------------------------------------------------------===+++++++===-------------------------------------------------------------------------------------===+++++===--------------------------::-+###################################*=+#######*-:-:------------------------:::::::::::::::::::::::::::::::-##################################################################################################################################################################+=++++++++++++++**************************************************************************************************************************************************************************************************************######################################################################****************+++++++++++++====----:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--------::::::::::::::::::::::::::::::::::::::--------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--==+++++==--::::::::::::--==++********************************++==--:::::::::::::::::::::---=++**************************************************************#########################################################################################**********************######################################################################################################%%%@@@@@@@@@@@@@@%%%%%%#######################################################################################################################################################################################################################################################################################################################################################################****+++===========+++***###########################################################
############***********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****################################################################################################**********************++****************++++++++++++++++++++++++++++++++++++++++++****************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=======-------========++++++++++++++++=========================================================================++++++++++++++++++++++++++++============---+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#%###******************************************##########%@%##%%##%%##%##%%%%#%%%%%%%%%%%%%%%%%##%#%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%###############******++++=================================================================================++++++***#*****+++++++++++++++++++=+++++++++++++++++++*++++++++*********************************************++++++++++++=======+++++++++==--------------------------------------------------------------=========+++++++++++++++++++++++++**++=============================================================++++=================================----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------==============================================++=++++++++++++++++++=----=====--::::::::----::::---------------------------------------------------------------------------------------------------------------------------------------------===++++++++==--------------------------------------------------------------------------------------===+++===-----------------------------::=+############################################=-::--------------------------:::::::::::---::::::::::::::::+#################################################################################################################################################################*+++++++++++++****************************************************************************************************************************************************************************************************************######################################################################****************+++++++++++++====----:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-------:::::::::::::::::::::::::::::::::::::::-------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--==++++==---::::::::::::--==++********************************++==---::::::::::::::::::::---=+++*************************************************************#########################################################################################**********************#####################################################################################################%%%@@@@@@@@@@@@@@@@%%%%%########################################################################################################################################################################################################################################################################################################################################################################***+++===========+++***###########################################################
############***********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****#################################################################################################**********************+*****************+++++++++++++++++++++++++++++++++++++++++*****************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++======-------=========++++++++++++++++===========================================================================++++++++++++++++++++++++++++++==========-=%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%@@@%#***************************************############%@%%%#%%%#%%%%%%%%%%%%%%%%%%%%%%%%%%%##%##%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%##############*******++++==================================================================================++=+++**##*****+++++++++++++++*+++=++++++++*++++++++++++++++++++++*****************************************++++++++++++======+++++++++==--------------------------------------------------------------========+++++++++++++++++++++++++++***+============================================================+++========================--=========----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------==============================================++++++++++++++++++++=--=====---::::::::::-----::----------------------------------------------------------------------------------------------------------------------------------------------===++++++++==--------------------------------------------------------------------------------------=========---------------------------------=+##########################################+:-----------------------------:::::::::------::::::::::::::-*#################################################################################################################################################################+++++++++++**********************************************************************************************************####****************************************************************************************************######################################################################****************++++++++++++++===----:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-------:::::::::::::::::::::::::::::::::::::::-------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--=======--::::::::::::::--==++*******************************+++=---::::::::::::::::::::---=+++*************************************************************#########################################################################################**********************#####################################################################################################%%%@@@@@@@@@@@@@@@@@%%%%%#######################################################################################################################################################################################################################################################################################################################################################################***+++===========+++**############################################################
############***********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****#################################################################################################**********************+*****************++++++++++++++++++++++++++++++++++++++++******************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++======-------=======++++++++++++++++++++===========================================================================++++++++++++++++++++++++++++++++========#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#************************************##############%@@%##%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#%%%####%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%##############*******++++==================================================================================+===+++*#*#*****++*++++++++++++++++=+++++++++++++++++++++++++++++++++*************************************++++++++++++++====++++++++==--------------------------------------------------------------========++++++++++++++++++++++++++++***++===========================================================+++=-========================-=========---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------==========================================+===+++++++++++++++++++=--====--::::::::::::::-----------------------------------------------------------------------------------------------------------------------------------------------------===++++++++==---------------------------------------------------------------------------------------=======------------------------------------=*########################################*:----------------------------:::::::::--------::::::::::::::=#################################################################################################################################################################*+++++++++++***********************************************************************************************#######################***#****************************************************************************************#####################################################################****************++++++++++++++===----:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-------:::::::::::::::::::::::::::::::::::::::-------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---=====---::::::::::::::--==++*******************************+++=---::::::::::::::::::::---=+++*************************************************************#########################################################################################**********************#####################################################################################################%%%@@@@@@@@@@@@@@@@@%%%%%#######################################################################################################################################################################################################################################################################################################################################################################***+++===========+++**############################################################
###########************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****#################################################################################################*********************++*****************++++++++++++++++++++++++++++++++++++++++******************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++======-------======+++++++++++++++++++++++++==========================================================================++++++++++++++++++++++++++++++++++++=*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#**********************************################%@@@%#%%@@%%%%%%%%%%%%%%%%%%%%%%%%#%%##%%%##%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%##############********+++==================================================================================+=-=++==**#***#**++++++++++++++*++++==++++++++++++++++++++++++++++++++++**********************************+++++++++++++====++++++++==--------------------------------------------------------------=======++++++++++++++++++++++++++++++***+===========================================================++=======================================--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------========================================++++++++++++++++++++++++=====--:::::::::::::::::-----------------------------------------------------------------------------------------------------------------------------------------------------==+++++++++==-----------------------------------------------------------------------------------------===------------------------------:---------=*#######################################=---------------------------:::::::::---------:::::::::::::--*################################################################################################################################################################****+++++++++********************************************************************************************#########################********************************************************************************************#####################################################################****************++++++++++++++===----:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-------:::::::::::::::::::::::::::::::::::::::-------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---------::::::::::::::::--=+++*******************************++=---::::::::::::::::::::---=+++*************************************************************#########################################################################################***********************###################################################################################################%%%%@@@@@@@@@@@@@@@@@@%%%%%######################################################################################################################################################################################################################################################################################################################################################################***+++===========+++**############################################################
###########************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****#################################################################################################*********************++*****************++++++++++++++++++++++++++++++++++++++++******************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++======-------======++++++++++++++++++++++++++++=======================================================================++++++++++++++++++++++++++++++++++++++@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#*********************************##################@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%##%###%%%###%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@%%%%%%%%##############********++++==================================================================================--=++=-+##**##***++++++++++++*++++++==++++++++++++++++++++++++++++++++++++******************************+++++++++++++++==+++++++==-==-----------------------------------------------------------=======+++++++++++++++++++++++++++++++****+=========================================================++=========================================-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------=======================================+++++++++++++++++++++++++===--::::::::::::::::::::-----------------------------------------------------------------------------------------------------------------------------------------------------==+++++++++==------------------------------------------------------------------------------------------------------------------------:-----------:-=*#####################################+:-------------------------::::::::::----------::::::::::::--=#################################################################################################################################################################**+*+++++++++*****************************************************************************************###########################*********************************************************************************************####################################################################****************++++++++++++++===-----:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::------:::::::::::::::::::::::::::::::::::::::-------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-------:::::::::::::::::--==++*******************************++==--::::::::::::::::::::---=+++*************************************************************#########################################################################################***********************###################################################################################################%%%%%@@@@@@@@@@@@@@@@@@@%%%######################################################################################################################################################################################################################################################################################################################################################################***+++===========++***###########################################################*
###########********+***++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****##################################################################################################********************++*****************+++++++++++++++++++++++++++++++++++++++*******************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++======-------=====++++++++++++++++++++++++++++++==========================================================================++++++++++++++++++++++++++++++++++#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#********************************###################%@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%#########%####%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@%%%%%%%#############*********++++==================================================================================--==++=-+#######**+++++++++++++++++++==++++++++++++++++++++++++++++++++++++++++*************************+++++++++++++++==+++++======----------------------------------------------------------=======+++++++++++++++++++++++++++++++++*+*++=======================================================++============================================------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------======================================++++++++++++++++++++++++=---::::::::::::::::::::::------------------------------------------------------------------------------------------------------------------------------------------------------==+++++++++===---------------------------------------------------------------------------------------------------------------------------------------=####################################*-----------------------------:::::::----===----:::::::::::---*################################################################################################################################################################****+++++++++***************************************************************************************############################**********************************************************************************************####################################################################****************++++++++++++++====----:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::------:::::::::::::::::::::::::::::::::::::::-------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::----:::::::::::::::::::--=+++******************************++==--::::::::::::::::::::--==+++*************************************************************#########################################################################################***********************###################################################################################################%%%%%@@@@@@@@@@@@@@@@@@@%%%######################################################################################################################################################################################################################################################################################################################################################################***+++===========++***########################################################****
###########********+***++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****##################################################################################################********************++*****************++++++++++++++++++++++++++++++++++++++********************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++======------======++++++++++++++++++++++++++++++===========================================================================+++++++++++++++++++++++++++++++++*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%********************************####################%@@@@@@@@@@@%%%%%%%%%%%%%%%%%%#%%##%%##########%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@%%%%%%%#############********++++++=================================================================================---=+++--*#######**++++++++++++++++++++==++++++++++++++++++++++++++++++++++++++++++++++****************++++++++++++++=++++++=======----------------------------------------------------------=====++++++++++++++++++++++++++++++++++++*+*+=====================================================+++===============================================----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------======================================+++++++++++++++++++++++=--:::::::::::::::::::::::::------------------------------------------------------------------------------------------------------------------------------------------------------==+++++++++===---------------------------------------========-----------------------------------------------------------------------------------------=####################################=:----------------------------:::::----====----:::::::::::---=################################################################################################################################################################***+**++++++****************************************************************************************###########################***********************************************************************************************####################################################################****************++++++++++++++====----:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::------:::::::::::::::::::::::::::::::::::::::-------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--==++******************************++==--:::::::::::::::::::---==+++*************************************************************#########################################################################################***********************###################################################################################################%%%@@@@@@@@@@@@@@@@@@@@@%%%%######################################################################################################################################################################################################################################################################################################################################################################**+++===========++***#####################################################*******
###########***********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****#################################################################################################*********#***********++*************+++++++++++++++++++++++++++++++++++++++++********************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++======-------======+++++++++++++++++++++++++++++++++=========================================================================+++++++++++++++++++++++++++++++++%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%******************************####################%@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%############%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@%%%%%%%#############*******++++++=================================================================================-----=+=--*#######*++++**++*++++++++++++==+++++++++++++++++++++++++++++++++++++++++++++++++**+********++++++++++++++++++++=====------------------------------------------------------------=====++++++++++++++++++++++++++++++++++++++++++====================================================+++==================================================--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------====================================+==+++++++++++++++++++++--:::::::::::::::::::::::::::------------------------------------------------------------------------------------------------------------------------------------------------------==+++++++++===-------------------------------------============----------------------------------------------------------------------------------------*####################################=------------::--------------:::::----=====---:::::::::::---=+################################################################################################################################################################**+**++++****************************************************************************************########################****************************************************************************************************####################################################################****************++++++++++++++====----:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::------:::::::::::::::::::::::::::::::::::::::-------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--=+++*****************************++==---::::::::::::::::::---==++**************************************************************##########################################################################################**********************##################################################################################################%%%%@@@@@@@@@@@@@@@@@@@@@@%%%######################################################################################################################################################################################################################################################################################################################################################################**+++==========+++***###################################################*********
###########***********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****#################################################################################################*********************++*************+++++++++++++++++++++++++++++++++++++++++********************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++======-------======++++++++++++++++++++++++++++++++++========================================================================+++++++++++++++++++++++++++++++++#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#*****************************###################%@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%#####%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@%%%%%%############********++++++=================================================================================------++=--*#######**+*++*++*+++++++++++++==++++++++++++**+++++++++++++++++++++++++++++++++++*********++++++++++++++++====---------------------------------------------------------------======++++++++++++++++++++++++++++++++++++++++*++==================================================+++====================================================-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------====================================++++++++++++++++++++++++-:::::::::::::::::::::::::::::-----------------------------------------------------------------------------------------------------------------------------------------------------===+++++++++===-----------------------------------================--------------------------------------------------------------------------------------+#####################################+--------------:------------:::::----=====----::::::::::---=+*###############################################################################################################################################################*************************************************************************************************########################****************************************************************************************************####################################################################*****************+++++++++++++====----:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::------:::::::::::::::::::::::::::::::::::::::-------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--==++*****************************++==---::::::::::::::::::---==++**************************************************************##########################################################################################**********************##################################################################################################%%%%@@@@@@@@@@@@@@@@@@@@@@%%%######################################################################################################################################################################################################################################################################################################################################################################**+++==========+++**##################################################***********
##########********++**+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****################################################################################################**********************++*************+++++++++++++++++++++++++++++++++++++++++********************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=====-------======++++++++++++++++++++++++++++++++++=========================================================================++++++++++++++++++++++++++++++++*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#****************************#################%%@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@%%%%%%############********++++++================================================================================--------++=-=**######**+++*++++++++++++++*++===+++++++++++++++++++++++++++++++++++++++++++++++*++**++*++++++++++++++===-----------------------------------------------------------------=====+++++++++++++++++++++++++++++++++++++++++++*+==================================================++======================================================-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------=================================+++++++++++++++++++++++++=-::::::::::::::::::::::::::::::-----------------------------------------------------------------------------------------------------------------------------------------------------===+++++++++===----------------------------------====++++++++++====------------------------------------------------------------------------------------:-######################################*---------:-----------------::::----======---::::::::::---==+###############################################################################################################################################################**********************************************************************************************#**#######################*****************************************************************************************************#####################################################################****************+++++++++++++====----:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::------:::::::::::::::::::::::::::::::::::::::-------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--=+++*****************************++=---::::::::::::::::::---==++**************************************************************##########################################################################################**********************##################################################################################################%%%%@@@@@@@@@@@@@@@@@@@@@@%%%######################################################################################################################################################################################################################################################################################################################################################################**+++==========+++**################################################*************
##########********+++*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****###############################################################################################***********************+*************++++++++++++++++++++++++++++++++++++++++++********************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++======-------======++++++++++++++++++++++++++++++++++++==========================================+++++++++++===================++++++++++++++++++++++++++++++++%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%##**************************################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@%%%%%############*******+++++++================================================================================---------++=--+*######**+**+*+++++++++++++*+++===++++++++++++*++++++++++++++++++++++++++++++++*++***++++++++++++++===--------------------------------------------------------------=--=====++++++++++++++++++++++++++++++++++++++++++++*+===================================================+=======================================================------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------==================================+++++++++++++++++++++++=---:::::::::::::::::::::::::::::------------------------------------------------------------------------------------------------------------------------------------------------------===+++++++++===---------------------------------====++++++++++++====-------------------------------------------------------------------------------------+#######################################=----------:---------------:::----======---:::::::::----==+*##############################################################################################################################################################**********************************************************************************************#**##################**********************************************************************************************************#####################################################################****************++++++++++++++===----:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::------::::::::::::::::::::::::::::::::::::::::------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--==++*****************************++==--::::::::::::::::::---==++**************************************************************##########################################################################################**********************##################################################################################################%%%%@@@@@@@@@@@@@@@@@@@@@@%%%######################################################################################################################################################################################################################################################################################################################################################################**+++==========+++**################################################*************
##########******+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****##############################################################################################************************+*************++++++++++++++++++++++++++++++++++++++++++********************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++======------======+++++++++++++++++++++++++++++++++++++++++++++================================+++++++++++++++++=================++++++++++++++++++++++++++++++#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%@@@@@@@@@@@@@@@@@@%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%#***********************###############%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@@@@@@%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@%%%%%############******+++++++================================================================================---------=++=-=+***####**+**+*+++++++++++++*++++===++++++++++++++++++++++++++++++++++++++++++++++++*++++++++++++==-----------------------------------------====------------------==-=====++++++++++++++++++++++++++++++++++++++++++++++*+===========================================================================================================------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------================================++++++++++++++++++++++++-::=-:::::::::::::::::::::::::::::------------------------------------------------------------------------------------------------------------------------------------------------------===+++++++++===--------------------------------===++++++++++++++++===------------------------------------------------------------------------------------=########################################*--:----------------------:::----======---::::::::-----=++*###############################################################################################################################################################************************************************************************************************##########*****************************************************************************************************************######################################################################****************++++++++++++++===----:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::------::::::::::::::::::::::::::::::::::::::::------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---=++*****************************++==---::::::::::::::::---==+++**************************************************************##########################################################################################***********************#################################################################################################%%%%@@@@@@@@@@@@@@@@@@@@@@@%%%#####################################################################################################################################################################################################################################################################################################################################################################**+++==========+++**###############################################**************
##########******+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****#############################################################################################***************************************+++++++++++++++++++++++++++++++++++++++++*********************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=====-------======++++++++++++++++++++++++++++++++++++++++++++++++=============================++++++++++++++++++==================+++++++++++++++++++++++++++++%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%@@@@%%@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#*********************###############%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%@@@@@@%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@%%%%%%###########*******++++++==============================================================================++----------=++=-=+****###**++*++++++++++++++++++++====++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==---------------------------------------=======------------------======+++++++++++++++++++++++++++++++++++++++++++++++*+=======+====================================================================================================------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------===========================++++++++++++++++++++++++++++-:::-=::::::::::::::::::::::::::::-------------------------------------------------------------------------------------------------------------------------------------------------------===++++++++++==------------------------------====++++++++++++++++++===------------------------------------------------------------------------------------*########################################*=-:-----------------------:----=======----:::-------===++*##############################################################################################################################################################*************************************************************************************************#*************************************************************************************************************************######################################################################****************++++++++++++++===----:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::------::::::::::::::::::::::::::::::::::::::::------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--==++****************************++==----:::::::::::::::---==++****************************************************************########################################################################################************************#################################################################################################%%%@@@@@@@@@@@@@@@@@@@@@@@@%%%#####################################################################################################################################################################################################################################################################################################################################################################**+++==========+++***############################################****************
##########******+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****#############################################################################################**************************************++++++++++++++++++++++++++++++++++++++++++********************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=====-------======+++++++++++++++++++++++++++++++++++++++++++++++++++=========================++++++++++++++++++++=================+++++++++++++++++++++++++++++#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%@@@%%%@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#*********************##############%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%@@@@@%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@%%%%%###########*********++++==============================================================================++-----------=++===+++****#**+*++++++++++++++++++++++====+++++++++++++++++++++++++++++++++++++++++++++++++++++++==------------------------------------=========-----------------=======+++++++++++++++++++++++++++++++++++++++++++++++++++=======+====================================================================================================-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------============================+++++++++++++++++++++++++++-::::--::::::::::::::::::::::::::::-------------------------------------------------------------------------------------------------------------------------------------------------------===++++++++++==------------------------=========+++++++*******++++++===-----------------------------------------------------------------------------------+##########################################+--:--------------------------=======--------------===++*##############################################################################################################################################################***************************************************************************************************************************************************************************************************************************######################################################################****************++++++++++++++===----:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::------::::::::::::::::::::::::::::::::::::::::------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--==++*****************************++==----:::::::::::::---==+++****************************************************************########################################################################################************************#################################################################################################%%%@@@@@@@@@@@@@@@@@@@@@@@@%%%#####################################################################################################################################################################################################################################################################################################################################################################**++===========+++***############################################****************
#########******++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****#############################################################################################**************************************++++++++++++++++++++++++++++++++++++++++++********************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=====-------======+++++++++++++++++++++++++++++++++++++++++++++++++++++======================+++++++++++++++++++++=================+++++++++++++++++++++++++++++*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%@@%%%%@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%@%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#*******************#############%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%@@@@@%%%%%%%@@@@@@%%%@@@@@@@@@@@%%@@@%@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@%%%%%###########*********++++==============================================================================++------------=+++==++++***#**+**++++++++++++++++++++++====+++++++++++++++++++++++++++++++++++++++++++++++++++====--------------------------------==========-----------------=======++++++++++++++++++++++++++++++++++++++++++++++++++++++============================================================================================================----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------=============================++++++++++++++++++++++++===-:-::::::::::::::::::::::::::::::::-------------------------------------------------------------------------------------------------------------------------------------------------------===++++++++++==--------------------============++++++***********+++++===---------------------------------------------------------------=============------=###########################################*=---------------------------==++===-----------=====+++*###############################################################################################################################################################**************************************************************************************************************************************************************************************************************************######################################################################****************++++++++++++++===----:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::------::::::::::::::::::::::::::::::::::::::::------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--==++****************************++===---::::::::::::----==++*****************************************************************########################################################################################************************#################################################################################################%%%@@@@@@@@@@@@@@@@@@@@@@@@@%%####################################################################################################################################################################################################################################################################################################################################################################***++===========+++***#############################################***************
#########******++++++++*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***#############################################################################################***************************************+++++++++++++++++++++++++++++++++++++++***********************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=====-------=====++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==========++++++++++++++++++++++++++================++++++++++++++++++++++++++++++%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#****************#*##########%@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%@@@@@%%%%%%@@@@@@@@@%%@@@%%@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@%%%%%##########**********+++============================================================================+++=-------------=+++==++++***##*+*++++++++++++++*+++++++++======+++++++++**+++++++++++++++++++++++++++++=+==++======--------------------------=============-----------------=======+++++++++++++++++++++++++++++++++++++++++++++++++++*+*++==+=========================================================================================================----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------==========================+++++++++++++++++++++++++=--==-::::::::::::::::::::::::::::::::::-------------------------------------------------------------------------------------------------------------------------------------------------------===++++++++++==------------------===========++++++++************+++++===-------------------------------------------------------------==================----*############################################+--------------------------==++====-------=======++++**##############################################################################################################################################################********************************************************************************************************************************###***************************************************************************************#######################################################################***************++++++++++++++===----:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::------::::::::::::::::::::::::::::::::::::::::------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--==++*****************************++==-----:::::::::----==+++******************************************************************######################################################################################***************************###############################################################################################%%%@@@@@@@@@@@@@@@@@@@@@@@@@%%####################################################################################################################################################################################################################################################################################################################################################################***++===========+++***############################################****************
#########*****+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***############################################################################################***************************************+++++++++++++++++++++++++++++++++++++++************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=====-------=====++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++========++++++++++++++++++++++++++================++++++++++++++++++++++++++++++#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@%%%%%@@@@@%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#**************##########%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%@@@@%%%%%%%@@@@@@@@@@%%%@@%%@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@%%%%%%#########**********+++============================================================================+++=-------------===++==++++***##*+***+++++++++++++++++++++++====+==+++++++++++++*+++++++++++++++++++++++=========------------------------================-----------------=====+++++++++++++++++++++++++++++++++++++++++++++++++++++++++*+=============================================================================================================---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------===========================++++++++++++++++++++++++=::-==:::::::::::::::::::::::::::::::::::-------------------------------------------------------------------------------------------------------------------------------------------------------==+++++++++++==-----------------=======+++++++++++***************+++++===----------------------------------------------------------=====++++++++++++=====--+#############################################+----:--------------------==+++===-----=======+++++****#############################################################################################################################################################*******************************************************************************************************************************##########**********************************************************************************######################################################################***************++++++++++++++===----:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::------::::::::::::::::::::::::::::::::::::::::------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--==++****************************+++==------::::------===++*******************************************************************######################################################################################***************************################################################################################################%%@@@@@@@@@@@@@@@@@@@@@@@@@%%####################################################################################################################################################################################################################################################################################################################################################################**+++===========+++***############################################****************
#########*****+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***############################################################################################**************************************++++++++++++++++++++++++++++++++++++++++************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=====------======++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++========++=====++++++++++++++++++++++++++++++++%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%*********###########%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%@@@@%%%%%%@@@@@@@@@@@@%%%%@%%%@%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@%%%%%%%%#########**********++============================================================================+++=---------------=+++==+++++***#**+++++++++++++++++++++++++++=========++++++++++++++++++++++++++++++++======--------====----------===================-----------------===++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==============================================================================================================--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------========================+=+++++++++++++++++++++++=-:::---:::::::::::::::::::::::::::::::::::-------------------------------------------------------------------------------------------------------------------------------------------------------==+++++++++++==-----------------====+++++++++++++*****************+++++===--------------------------------------------------------===+++++++++++++++++====-=##############################################*=-----------------:-----==++++===---====+++++++++****#############################################################################################################################################################***************************************************************************************************************************##############***********************************************************************************#####################################################################***************++++++++++++++===-----::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::------::::::::::::::::::::::::::::::::::::::::------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--==++*****************************+++===-------------===+++*******************************************************************#####################################################################################*****************************###############################################################################################%%@@@@@@@@@@@@@@@@@@@@@@@@@%%####################################################################################################################################################################################################################################################################################################################################################################**+++===========+++***############################################****************
########******+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***##########################################################################################*****************************+**********++++++++++++++++++++++++++++++++++++++++************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=====------======+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++====++++++++++++++++++++++++++++++++++++++++++#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#*******######*##%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%@@@@@@@@@@@@%%%%%%%%%%%%@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@%%%%%%%%%%########**********++===========================================================================++++=----------------=+++==++++++**##**+**++++++++++++++++++++++++===++======++++++++++++++++++++++++++====-----------===============================------------------==+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*++++================================================================================================================------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------=========================+++++++++++++++++++++++=-::::-:-::::::::::::::::::::::::::::::::::::-------------------------------------------------------------------------------------------------------------------------------------------------------==+++++++++++==-----------------===++++++++++++********************+++++===------------------------------------------------------===++++++*********++++=====*###############################################+----------------:-----==++++=========+++++++++******############################################################################################################################################################*************************************************************************************************************************################************************************************************************************#####################################################################***************+++++++++++++===-----::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::------::::::::::::::::::::::::::::::::::::::::------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--==++*****************************+++===-----------===+++*********************************************************************####################################################################################*****************************###############################################################################################%%@@@@@@@@@@@@@@@@@@@@@@@@@%%###################################################################################################################################################################################################################################################################################################################################################################***+++===========+++***############################################****************
########******+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***########################################################################################*******************************+**********++++++++++++++++++++++++++++++++++++++++************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=====-----======++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==+++++++++++++++++++++++++++++++++++++++++++*%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@%@@@@@@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#****########%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%@@@@@@@@@@@@%%%%%%%%%%%%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######**********+++=========================================================================+++++=-----------------=+++===++++*+*##**+++++*++++++++++++++++++++++==++++++++++========================-----------================================------------------=+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=========+=======================================================================================================----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------==========================+++++++++++++++++++++=-:::--::::::::::::::::::::::::::::::::::::::::-------------------------------------------------------------------------------------------------------------------------------------------------------==+++++++++++===----------------===+++++++++************************+++++===----------------------------------------------------===+++***************+++====+################################################+-----==--------------==+++++======+++++++++++******#############################################################################################################################################################**********************************************************************************************************************##################*************************************************************************************####################################################################***************+++++++++++++===-----::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::------::::::::::::::::::::::::::::::::::::::::------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--==+++*****************************+++=====-----====++++************************************************************************#################################################################################******************************###############################################################################################%%@@@@@@@@@@@@@@@@@@@@@@@@@%%###################################################################################################################################################################################################################################################################################################################################################################**+++============+++***############################################****************
########******+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***#######################################################################################*******************************++**********+++++++++++++++++++++++++++++++++++++++*************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++======---======+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==++++++++++++++++++++++++++++++++++++++++++++%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%###########%@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%@@@@@@@@@@@@%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########**********++=========================================================================+++++=------------------=+++===++++++**##**+++++++++++++++++++++++++++++====+======+===========+====-----------=================================-------------------==++++++++*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*++======+==+========================================================================================================--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------==========================++++++++++++++++++++=-::::-:::-::::::::::::::::::::::::::::::::::::::-------------------------------------------------------------------------------------------------------------------------------------------------------==+++++++++++===----------------====+++++***************************++++++===---------------------------------------------------==+++*****************+++====#################################################*=---++=-------------==+++++=====+++++++++**********############################################################################################################################################################****************************************************************************************************************########################**************************************************************************************####################################################################**************+++++++++++++===-----::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::------::::::::::::::::::::::::::::::::::::::::------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--==++++****************************++++===========++++**************************************************************************###############################################################################*******************************###############################################################################################%%%@@@@@@@@@@@@@@@@@@@@@@@@%%##################################################################################################################################################################################################################################################################################################################################################################***+++============+++***############################################****************
########******+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***##################################################################################************************************++**********++++++++++++++++++++++++++++++++++++++**************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==============++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=+++++++++++++++++++++++++++++++++++++++++++*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%##########@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#########*********++=========================================================================+++++=-------------------=++++==+++++++**#****++++++++++++++++++++++++++++++=====================--------===================================---------------------==++++++++*+**+++++++++++++++++++++++++++++++++++++++++++++++++++++++++*++=======+==+==========================================================================================================---------------=====---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------==========================++++++++++++++++++++=-::::::::::::::::::::::::::::::::::::::::::::::::------------------------------------------------------------------------------------------------------------------------------------------------------===+++++++++++===-----------------===+++++*****************************++++===--------------------------------------------------===++*******************++++==*#################################################*=--+*+-------------==++++++++++++++++++++++***+***############################################################################################################################################################****************************************************************************************************************########################***************************************************************************************####################################################################*************+++++++++++++===-----::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::------::::::::::::::::::::::::::::::::::::::::------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--===++++***************************++++++=====+++++*****************************************************************************###########################################################################***********************************##############################################################################################%%%@@@@@@@@@@@@@@@@@@@@@@@@%%#################################################################################################################################################################################################################################################################################################################################################################***++++===========++++***############################################****************
########******+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***###############################################################################***************************************++**********++++++++++++++++++++++++++++++++++++++**************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==============++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==+++++++++++++++++++++++++++++++++++++++++++%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%########@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########*********++========================================================================++++++=--------------------=+++++==++++++**##***+++++++++++++++++++++++++++++----------------------------========================------------------------------==++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*++++====+==++=+===========================================================================================================================------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------========================+++++++++++++++++++==-::::::::::-:::::::::::::::::::::::::::::::::::::::------------------------------------------------------------------------------------------------------------------------------------------------------===+++++++++++===-----------------===+++++******************************++++===-------------------------------------------------==+++********************+++==*###################################################+-+++-------------==++++++++++++++++**+++****+*++*###########################################################################################################################################################***************************************************************************************************************#########################****************************************************************************************###################################################################*************+++++++++++++===-----::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::------::::::::::::::::::::::::::::::::::::::::------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---===+++++***************************+++++++++++++*******************************************************************************##########################################################################***********************************##############################################################################################%%%@@@@@@@@@@@@@@@@@@@@@@@@%%################################################################################################################################################################################################################################################################################################################################################################****+++============++++***############################################****************
########*******+++++++++**********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****############################################################################*****************************************++***********++++++++++++++++++++++++++++++++*******************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++============++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%####%@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########*********++=======================================================================++++++-----------------------+++++==+++++++**##**++++++++++++++++++++++++++++++++++====----------------------------------------------------------------------==+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=========+============================================================================================================================-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------=======================++++++++++++++++++++=-::::::::::::::::::::::::::::::::::::::::::::::::::::------------------------------------------------------------------------------------------------------------------------------------------------------===+++++**++++===------------------===++++*******************************++++==------------------------------------------------===++*********************++++++####################################################*+++------:------==++++++++++++++++*******++++*+*###########################################################################################################################################################************************************************************************************************************############################****************************************************************************************###################################################################*************+++++++++++++====----:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-------::::::::::::::::::::::::::::::::::::::::------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::----====+++++**************************+++++++++***********************************************************************************#####################################################################*************************************################################################################################################%%@@@@@@@@@@@@@@@@@@@@@@@@%%################################################################################################################################################################################################################################################################################################################################################################***++++============++++***###########################################*****************
#######*********++++++++**********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****###########################################################################******************************************++************+++++++++**+++++++++++++++************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===========+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######*********++=======================================================================++++++------------------------=+++++++++++++***##**+++++++++++++++++++++++++++++++++++++========---------------------------------------------------------==++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=======++===++=========================================================================================================================-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------=======================++++++++++++++++++=-::::::::::::::::::::::::::::::::::::::::::::::::::::::------------------------------------------------------------------------------------------------------------------------------------------------------===+++++**++++===------------------===++++*******************************++++==------------------------------------------------==+++**********************+++++################-+###################################**+--:----------===+++++++++++***********+++++++###########################################################################################################################################################************************************************************************************************************##########################******************************************************************************************####################################################################************+++++++++++++====----:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-------::::::::::::::::::::::::::::::::::::::::------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-----====++++++***************************************************************************************************************************############################################################***************************************###############################################################################################%%@@@@@@@@@@@@@@@@@@@@@@@@%%################################################################################################################################################################################################################################################################################################################################################################***+++=============++++***###########################################*****************
######************+++**************+++***++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****#########################################################################********************************************+++***********++++*************+++++*****************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=========++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######*********++=======================================================================+++++-------------------------==+++++++++++++**##***++++++++++++++++++++++++++++++===================-----------------------------------------------==++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=+++++===+++++++=======================================================================================================================----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------========================+++++++++++++++==-::::::::::::::::::::::::::::::::::::::::::::::::::::::::------------------------------------------------------------------------------------------------------------------------------------------------------===++++***++++===-------------------==++++*******************************++++===-----------------------------------------------==++***********************+++++*###############*:-*###################################*-------------===++++++++++************+++++++*###########################################################################################################################################################***********************************************************************************************************#######################**********************************************************************************************###################################################################************+++++++++++++====----:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--------:::::::::::::::::::::::::::::::::::::::------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-----=====+++++***************************************************************************************************************************########################################################*****************************************###############################################################################################%%@@@@@@@@@@@@@@@@@@@@@@@@%%###############################################################################################################################################################################################################################################################################################################################################################***++++============++++****###########################################*****************
######**************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****#########################################################################********************************************+++************++***********************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=====++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######**********+================================================================++=====+++++--------------------------==++++++++++++++**##***+++++++++++++++++++++++++===================================----------------------------==+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==++===++++++++++=======================================================================================================================---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------======================++++++++++++++++==--::-::-:::::::::::::::::::::::::::::::::::::::::::::::::::------------------------------------------------------------------------------------------------------------------------------------------------------===++++***++++===-------------------==++++*******************************++++===-----------------------------------------------==++************************++++*################---=###################################+------------===+++++++++****++*******+++++++*###########################################################################################################################################################**********************************************************************************************************#####################*************************************************************************************************###################################################################************+++++++++++++====----:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--------:::::::::::::::::::::::::::::::::::::::------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::------====+++++**************************************************************************************************************************###################################################*********************************************###############################################################################################%%@@@@@@@@@@@@@@@@@@@@@@@@%%##############################################################################################################################################################################################################################################################################################################################################################****+++=============++++***############################################*****************
#####*****************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****#########################################################################********************************************++++************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########*********++==============================================================++======+++++---------------------------=++++++++++++++++*###**++++++++++++++++++++++++++++++++++++++++==========++++++++++++++==----------------=+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=+===++=+++++++++========================================================================================================================-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------=====================+++++++++++++++++=-::--::-:::::::::::::::::::::::::::::::::::::::::::::::::::::------------------------------------------------------------------------------------------------------------------------------------------------------===++++***+++++==-------------------==++++*******************************++++===-----------------------------------------------==++************************++++*################-:---+##################################+-----------===++++++*****************+++++++*##########################################################################################################################################################*******************************************************************************************************########################**************************************************************************************************###################################################################***********++++++++++++++===----:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--------:::::::::::::::::::::::::::::::::::::::------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-----====++++**************************************************************************************************************************#################################################**********************************************###############################################################################################%%@@@@@@@@@@@@@@@@@@@@@@@@%%##############################################################################################################################################################################################################################################################################################################################################################***++++============+++++***############################################*****************
#####*******************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****#######################################################################*********************************************++++************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######**********+=============================================================+++======+++++---------------------------====++++++++++++++**###**++*+++++++++++++++++++++++*******+++++===+++++=++++++++*+++==--------------==++**++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==+==+++++++++++===+======================================================================================================================------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------=====================+++++++++++++++=-:--:-::-:::-:::::::::::::::::::::::::::::::::::::::::::::::::::------------------------------------------------------------------------------------------------------------------------------------------------------===++++***+++++==-------------------===+++*******************************++++===-----------------------------------------------==++************************++++*################=-----=*#################################*--:--------==+++++******************+++++++*##########################################################################################################################################################******************************************************************************************************#########################**************************************************************************************************###################################################################************+++++++++++++===----:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--------:::::::::::::::::::::::::::::::::::::::------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-----====++++************************************************************************************************************************###############################################************************************************################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@%###############################################################################################################################################################################################################################################################################################################################################################***++++===========+++++****############################################*****************
####*********************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****#######################################################################*********************************************+++++**********************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######*********++===========================================================++++======++++=---------------------------======++++++++++++++**###**+*++++++++++++++++++++++*******++++=========+++++++++==-------------==++++**+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=++=+==++++++++===+++++++=================================================================================================================-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------====================+++++++++++++++=----::--::::-:::::::::::::::::::::::::::::::::::::::::::::::::::::------------------------------------------------------------------------------------------------------------------------------------------------------===++++***+++++==-------------------===+++*******************************++++==------------------------------------------------==++*************************+++*################*-------*#################################*----------==++++***+***************+++++++*##########################################################################################################################################################****************************************************************************************************###########################**************************************************************************************************###################################################################************+++++++++++++===----:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--------:::::::::::::::::::::::::::::::::::::::------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::------===++++***********************************************************************************************************************###########################################****************************************************###############################################################################################%@@@@@@@@@@@@@@@@@@@@@@@%%##############################################################################################################################################################################################################################################################################################################################################################****++++===+=====+++++++***#############################################*****************
###***********************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******######################################################################*********************************************+++++**********************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######**********+==========================================================+++++======++++=---------------------------========++++++++++++++**###***++++++++++++++++++++++*****++=++==++++++++++++==------------==++++***++*++++++++++++++++++++++++++++++++*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===+++++++====++++++**++++==============================================================================================================----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------====================++++++++++++++=--::----::::::-:::::::::::::::::::::::::::::::::::::::::::::::::::::------------------------------------------------------------------------------------------------------------------------------------------------------===++++***+++++==-------------------===+++*******************************++++==------------------------------------------------==++*************************++++#################--------+#################################*---------==++++*******************++*+*****#########################################################################################################################################################****************************************************************************************************##########################***************************************************************************************************###################################################################************+++++++++++++===----:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--------:::::::::::::::::::::::::::::::::::::::------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-----===++++***********************************************************************************************************************#######################################*******************************************************###############################################################################################%@@@@@@@@@@@@@@@@@@@@@@@%%##############################################################################################################################################################################################################################################################################################################################################################***+++++===++++++++++++****#############################################*****************
###*******+++**************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******#####################################################################*********************************************++++**********************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#########*********+========================================================++++++=======+++=----------------------------========++++++++++++++++*####**+++++++++++++++++++++**+++++++=++==+++++=-----------===+++****+++++++**+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=++++**+++++==++++++++++++++==============================================================================================================---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------==================+++++++++++++++=-:-----::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-------------------------------------------------------------------------------------------------------------------------------------------------------==+++++***+++++==-------------------===+++*******************************++++==------------------------------------------------==++**************************++**################---------+#################################*=-------==++++********************+*******##########################################################################################################################################################************************************************************************************************############################****************************************************************************************************####################################################################************++++++++++++===-----::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---==---:::::::::::::::::::::::::::::::::::::::------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-----===++++***********************************************************************************************************************##################################**********************************************************################################################################################################%@@@@@@@@@@@@@@@@@@@@@@%%##############################################################################################################################################################################################################################################################################################################################################################***+++++++++++++++++++****##############################################*****************
#********+++++**************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******#####################################################################*********************************************++++**********************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#%%%%############******+========================================================++++++=======+++=----------------------------==========++++++++++++++++**####***++++++++++++++++*+++++++++===++++**+----====++++++*****+*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==++*++++++===++++++++**+++================================================================================================================---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------==================+++++++++++++=-:--:---:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-------------------------------------------------------------------------------------------------------------------------------------------------------==+++++****++++==-------------------===+++*******************************++++==------------------------------------------------==++**************************++**################=---------###################################=:-----==++++****************************##########################################################################################################################################################***********************************************************************************************##############################***************************************************************************************************####################################################################************++++++++++++===-----::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---==---:::::::::::::::::::::::::::::::::::::::------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::----===++++**********************************************************************************************************************###############################*************************************************************################################################################################################%@@@@@@@@@@@@@@@@@@@@@@%%##############################################################################################################################################################################################################################################################################################################################################################***+++++++++++++++++******##############################################*****************
********+++++++*****************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********##################################################################*********************************************+++++**********************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%############**##########*****++=====================================================+++++++=======+==-----------------------------===========++++++++++++++++****####***+++++++++++++*++++++*++=+++++++++++++**********+++++++++++++++++++++++++++++++++++++++++++++*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*+++++++=++++++++***+++==================================================================================================================-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------===================++++++++++++--:--::-::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-------------------------------------------------------------------------------------------------------------------------------------------------------==++++*****++++==-------------------===+++*******************************++++==------------------------------------------------==++******************************################*---------*###################################=-:---==++++*****************************#########################################################################################################################################################**********************************************************************************************###############################***************************************************************************************************####################################################################************++++++++++++===-----::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---==---:::::::::::::::::::::::::::::::::::::::------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-----===+++*********************************************************************************************************************############################*****************************************************************###############################################################################################%@@@@@@@@@@@@@@@@@@@@@@%%#############################################################################################################################################################################################################################################################################################################################################################****+++++++++*************###############################################*****************
*******+++++++++********************+********************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*************##############################################################*********************************************+++++*********************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@%%%%%%%%%%%%%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##########******##########****++===================================================+++++++++========-------------------------------============++++++++++++++=+******##**+++++++++++++++++++++++++++*+++***++**+++++++++++***++++++++++++++++++++++++++++++++++++++*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*+++++===++++++++++++++====================================================================================================================------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------==================+++++++++++=--:::---::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-------------------------------------------------------------------------------------------------------------------------------------------------------==++++*****++++==-------------------===+++********************************+++==------------------------------------------------==++*******************************################---------+####################################=----==++++*****************************#########################################################################################################################################################*********************************************************************************************##################################*************************************************************************************************####################################################################************++++++++++++===-----::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---==---:::::::::::::::::::::::::::::::::::::::------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::----===++++*******************************************************************************************************************########################*********************************************************************###############################################################################################%%@@@@@@@@@@@@@@@@@@@@%%%#############################################################################################################################################################################################################################################################################################################################################################***+++++++++************#################################################*****************
******++++++++++*******************+++++******************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***************###########################################################**********************************************+++++*********************************************************************************************++++++++++***+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@%%%%%%%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#########*********#########****++==================================================++++++++++======--------------------------------============++++++++++++++++++*********+++++++++++++*+++++++++**++++*++++*++++++**++++++++++++++++*++++++++++++++++++++++++++++*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*+++++++++++++++++***+++======================================================================================================================------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------================+=+++++++++=-:::---::--:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-------------------------------------------------------------------------------------------------------------------------------------------------------==++++*****++++==-------------------===+++********************************+++==------------------------------------------------==++*******************************################=--------+#####################################+---==++++******************************########################################################################################################################################################*******************************************************************************************#####################################************************************************************************************************####################################################################************++++++++++++===-----::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---==---:::::::::::::::::::::::::::::::::::::::------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::----===++++*******************************************************************************************************************####################***********************************************************************################################################################################################%@@@@@@@@@@@@@@@@@@@@%%%#############################################################################################################################################################################################################################################################################################################################################################***+++++++++***********##################################################*****************
******+++++++++++******************+++++++****************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****************########################################################***********************************************++++++*******************************************************************************************+++++++++*********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@%%%%%%%%%%%@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#########***********#######*****++=================================================++++++++++=====---------------------------------======-=====+====++++++++++++++++*******+++++++++++++++++++++*++++*+++***+++******+++++**+++++++++++++++++++++++++++++++++++++*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**+++++=======================================================================================================================---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------==================++++++++++=-::----::--::-::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-------------------------------------------------------------------------------------------------------------------------------------------------------==++++*****++++==-------------------===+++********************************+++===-----------------------------------------------==++*******************************################+--------=######################################+--==++++******************************########################################################################################################################################################****************************************************************************************########################################************************************************************************************************####################################################################*************+++++++++++====----::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--====--:::::::::::::::::::::::::::::::::::::::------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-----==++++*******************************************************************************************************************#################**************************************************************************###############################################################################################%%@@@@@@@@@@@@@@@@@@@%%%#############################################################################################################################################################################################################################################################################################################################################################***++++++++*********#####################################################*****************
****++++++++++++++****************++++++++****************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********************#################################################*************************************************+++++++******************************************************************************************+++++++++***********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@%%%%%%%@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#########*************#######****+================================================++++++++++++====----------------------------------========-====--==++++++++++++++++++**++++++++++++++++++++*+**+++**+**+++++++**++++++++++++++++++++++++++++++++++++++++++++++*+++++++++++++++++++++++++++++++++++++++++++=+++++++++++++++++++++++++++++++++++++++*++++==========================================================================================================================--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------=================+++++++++==--:--::::---::::--::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-------------------------------------------------------------------------------------------------------------------------------------------------------==++++*****++++==-------------------===+++********************************+++===-----------------------------------------------==++*******************************################*--------=#######################################+-==++++*******************************########################################################################################################################################################************************************************************************************############################################***********************************************************************************************####################################################################*************+++++++++++====----::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--====--:::::::::::::::::::::::::::::::::::::::------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::----===++++********+++********************************************************************************************************#############****************************************************************************###############################################################################################%%@@@@@@@@@@@@@@@@@@%%%##############################################################################################################################################################################################################################################################################################################################################################***+++++++****###########################################################*****************
**+++++++++++++++++***************+++++++++***************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++************************************************************************************************************************+++++++*****************************************************************************************+++++++++**************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##########************+*#######****+==============================================+++++++++++++====----------------------------------======-===--------=++++++++++++++++++++++++++++++*++++++*++**+*++*++*++**+++******+++++++++++++++++++++++++++++++++++++++++*++++++++++++++++++++++++++++++++++++++++++++=+++++*++++++++++++++++++==+++++++**+++++++============================================================================================================================-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------=================+++++++++=-::--::--:-::::--:----::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-------------------------------------------------------------------------------------------------------------------------------------------------------==++++*****++++==-------------------===+++********************************+++===-----------------------------------------------==++*******************************################*---------########################################+==++++*******************************########################################################################################################################################################************************************************************************************############################################***********************************************************************************************####################################################################*************+++++++++++====----::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--====--:::::::::::::::::::::::::::::::::::::::------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::----===+++********++++********************************************************************************************************##########******************************************************************************###############################################################################################%%%@@@@@@@@@@@@@@@@@%%%##############################################################################################################################################################################################################################################################################################################################################################****+++++****############################################################*****************
++++++++++++++++++++*************+++++++++++**************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++************************************************************************************************************************+++++++****************************************************************************************++++++++++***************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@%%%%%@@@@@@%%%@@@@@%%%@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###########***********++*######*****+=============================================+++++++++++++===------------------------------------========----------==++++++++++++++++++++++++++++++++++******++**+++++++++++***+++++++++++++++++++++++*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==++++++*+++++++++=============================================================================================================================-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------===================+++++++--*=:--:::::::--------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::------------------------------------------------------------------------------------------------------------------------------------------------------===++++*****++++==-------------------===+++********************************+++===-----------------------------------------------==++********************************################=--------*########################################*=++++**+****************************########################################################################################################################################################*********************************************************************************#################################################*********************************************************************************************####################################################################*************++++++++++++===---:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--====--:::::::::::::::::::::::::::::::::::::::------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::----==+++******++++++***********************************************************************************************************************************************************************************************################################################################################################%%%@@@@@@@@@@@@@@@@%%%###############################################################################################################################################################################################################################################################################################################################################################*****+*****#############################################################*****************
+++++++++++++++++++++************+++++++++++**************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*************++++++++****************++++++++++++++*********************************************************************+++++++****************************************************************************************+++++++++++*****************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@%%%%%@@@@@@%%%@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###########************++**######****=============================================+++++++++++++===------------------------------------=======-------------==++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**++++++++++=============================================================================================================================-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------=================++++++**+:-*+::::::::::--------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::------------------------------------------------------------------==----------------------------------------------------------------------------------===++++*****++++===------------------===+++********************************++++==-----------------------------------------------==++********************************################+--------*#######*+################################*+++*+*******************************#######################################################################################################################################################*********************************************************************************#################################################*********************************************************************************************####################################################################*************++++++++++++===---:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--====--:::::::::::::::::::::::::::::::::::::::------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---===++******+++++++**********************************************************************************************************************************************************************************************################################################################################################%%%%@@@@@@@@@@@@@@%%%%###############################################################################################################################################################################################################################################################################################################################################################***********##############################################################****************
+++++++++++++++++++++************++++++++++++*************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**************************************************+++++++***************************************************************************************++++++++++++*******************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@%%%@@@@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###########*************++*#######***+===========================================++++++++++++++===-------------------------------------======---------------=+++++++++++++++++++++++++++++++++*++****++++++++++++++++++++++++++++++++++++++++++++++++++++++++*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****+++++++==================================================================================================================================---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------=================++++++*****-:#*::::::::::---------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-----------------------------------------------------------------====---------------------------------------------------------------------------------===++++*****++++===------------------===+++*********************************+++===----------------------------------------------==++********************************################*--------*########-=################################*++*********************************#######################################################################################################################################################********************************************************************************##################################################*********************************************************************************************####################################################################*************++++++++++++===---:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--====--:::::::::::::::::::::::::::::::::::::::------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---==++******+++++++***********************************************************************************************************************************************************************************************################################################################################################%%%%@@@@@@@@@@@@%%%%#################################################################################################################################################################################################################################################################################################################################################################*********###############################################################****************
++++++++++++++++++++++***********+++++++++++++***********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******************************+++++++++*************************************************************************************+++++++++++++*************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%############**************++*#######***+==========================================+++++++++++++++==-------------------------------------=====-----------------==++++++++++++++++++++++++++++++++++****+*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*+++++++*++++**+++**+++++====================================================================================================================================--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------================+==++++******+-**-::::::::-----------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-----------------------------------------------------------------=====--------------------------------------------------------------------------------===++++*****++++===------------------===+++*********************************+++===----------------------------------------------==++********************************################*--------+########=-=*###############################**+********************************#######################################################################################################################################################********************************************************************************##################################################*********************************************************************************************####################################################################**************+++++++++++===----::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--====--:::::::::::::::::::::::::::::::::::::::------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---=++******++++++++**********************************************************************************************************************************************************************************************################################################################################################%%%%%%%@@@@@@@@%%%%##################################################################################################################################################################################################################################################################################################################################################################********################################################################****************
+++++++++++++++++++++++**********+++++++++++++***********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**************************+++++++++*************************************************************************************++++++++++++++*****************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#############*************++*########***+=========================================+++++++++++++++==--------------------------------------====------------------==++++++++++++++++++++++++++++++++++*******+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==++*+++++++***++++++======================================================================================================================================------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------==================++++**********=**-:::::::--------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::----------------------------------------------------------------======--------------------------------------------------------------------------------===++++*****++++===------------------===+++*********************************+++===----------------------------------------------==++********************************#################=-------+########=---#################################**********************************######################################################################################################################################################********************************************************************************###################################################*********************************************************************************************####################################################################*************+++++++++++===----:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---====--:::::::::::::::::::::::::::::::::::::::------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---=+++****++++==+++***********************************************************************************************************************************************************************************************################################################################################################%%%%%%%%%%%%%%%%%%####################################################################################################################################################################################################################################################################################################################################################################***###################################################################****************
+++++++++++++++++++++++***********+++++++++++++**********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***********+++++++++++++=====================================+++++++++++++++++++++++++++++++++*************************+++++++++************************************************************************************+++++++++++++++**********************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##############**************+*#########***+=======================================+++++++++++++++++=--------------------------------------===--------------------===+++++++++++++++++++++++++++++++++++*******++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*+++++++++*+++**++++++++===+++===================================================================================================================================----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------==================+++*************+*#-:::::::---------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::-----------------------------------------------------------------======--------------------------------------------------------------------------------===++++******+++===------------------===+++*********************************+++===----------------------------------------------==++*********************************################+-------=########=----#################################*********************************######################################################################################################################################################*******************************************************************************####################################################*********************************************************************************************####################################################################*************+++++++++++===----:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---====--:::::::::::::::::::::::::::::::::::::::------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---==++****+++====+++************************************************************************************************************************************************************************************************##############################################################################################%%%%%%%%%%%%%%%%%###########################################################################################################################################################################################################################################################################################################################################################################################################################################****************
+++++++++++++++++++++++***********++++++++++++++*********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++************++++++++++++==================================================+++++++++++++++++++++++***********************+++++++++***********************************************************************************+++++++++++++++++********************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%@@@%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##############**************+*##########***+=====================================++++++++++++++++++=--------------------------------------------------------------====++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**+**+++++++==++++=======================================================================================================================================--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------=================++++*****************#-:::::::---------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::----------------------------------------------------------------========-------------------------------------------------------------------------------===++++******+++===------------------===+++*********************************+++===----------------------------------------------==++*********************************################*-------=########=-----#################################*********************************#####################################################################################################################################################*******************************************************************************####################################################*********************************************************************************************####################################################################*************+++++++++++===----:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---====--:::::::::::::::::::::::::::::::::::::::------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---==++****++=====+++************************************************************************************************************************************************************************************************################################################################################################%%%%%%%%%%%%%%############################################################################################################################################################################################################################################################################################################################################################################################################################################****************
++++++++++++++++++++++++***********+++++++++++++++*******+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++************++++++++++++===================================================================++++++***********************+++++++++***********************************************************************************+++++++++++++++++***************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@%@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%################*************+*###########***++==================================+++++++++++++++++++---------------------------------------------------------------=====+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*+++++++*+++*++*+++++===++===++++====================================================================================================================================-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------===============+++++*******************#=:::::::----------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::----------------------------------------------------------------========-------------------------------------------------------------------------------===++++******+++===------------------===+++**********************************+++==----------------------------------------------==++*********************************################*-------=########=------*###############################*+*******************************#####################################################################################################################################################*******************************************************************************####################################################*********************************************************************************************####################################################################*************+++++++++++===----:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---====--:::::::::::::::::::::::::::::::::::::::------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--==++****++======++*************************************************************************************************************************************************************************************************################################################################################################%%%%%%%%%%%%##############################################################################################################################################################################################################################################################################################################################################################################################################################################***************
++++++++++++++++++++++++***********+++++++++++++++********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++************++++++++++++====================================================================++++++**********************++++++++++*********************************************************************************+++++++++++++++++++************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#################**************############*****+================================++++++++++++++++++++---------------------------------------------------------------========+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*+*+++++++++++++++++++++++++++++++++++**+++++++++*++***++++++++++++==++=========================================================================================================================================---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------================++++*******************#*#=:::::-:-:--------------------------::::::::::::::::::::::::::::::::::::::::::::::::---------------------------------------------------------------========-------------------------------------------------------------------------------===++++******+++===------------------===+++**********************************+++==----------------------------------------------==++*********************************################*--------########+-------*###############################*+*******************************#####################################################################################################################################################*******************************************************************************###################################################*********************************************************************************************####################################################################*************++++++++++====----:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---====--:::::::::::::::::::::::::::::::::::::::------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---==++****++===-==++**************************************************************************************************************************************************************************************************################################################################################################%%%%%%%%%#################################################################################################################################################################################################################################################################################################################################################################################################################################################**************
++++++++++++++++++++++++************+++++++++++++++*******++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++************+++++++++++++=====================================================================++++*********************+++++++++++*********************************************************************************++++++++++++++++++++*************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#################**************########**####***++===============================+++++++++++++++++=++----------------------------------------------------------------==========++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***++***++++*++++++++++++++++++==++=========================================================================================================================================-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------================+++**********************###+:-:-::-----------------------------::::::::::::::::::::::::::::::::::::::::::::::::---------------------------------------------------------------========--------------------------------------------------------------------------------==++++******+++===------------------===+++**********************************+++==----------------------------------------------==++*********************************################*--------*#######+--------*###############################*+******************************#####################################################################################################################################################*******************************************************************************###################################################*********************************************************************************************####################################################################*************++++++++++====----:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---====--:::::::::::::::::::::::::::::::::::::::------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---==++***+++==--==+++**************************************************************************************************************************************************************************************************##################################################################################################%%%#####################################################################################################################################################################################################################################################################################################################################################################################################################################################*************
++++++++++++++++++++++++*************++++++++++++++++*****+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********+++++++++++++++====================================================================+++++********************+++++++++++*********************************************************************************++++++++++++++++++++***************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##################*************#######****###**+**+=============================++++++++++++++++++=++----------------------------------------------------------------============++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*+++****++++++++=++++++++++==++=========================================================================================================================================-=----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------==============++++**********************#####*-::--:-:---------------------------::::::::::::::::::::::::::::::::::::::::::::::::--------------------------------------------------------------=========--------------------------------------------------------------------------------==++++******+++===-------------------==+++**********************************+++===---------------------------------------------==++*********************************#################=-------*#######*---------*###############################*******************************#####################################################################################################################################################*******************************************************************************###################################################**********************************************************************************************###################################################################*************++++++++++====----:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---====--:::::::::::::::::::::::::::::::::::::::-----:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---==++***++===---==++****************************************************************************************************************************************************************************************************########################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################*************
++++++++++++++++++++++++**************++++++++++++++++*****++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********+++++++++++++++++===================================================================++++********************+++++++++++*********************************************************************************+++++++++++++++++++++*****************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####################************#######****###**++**+============================++++++++++++++++++=++=---------------------------------------------------------------==============++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********++=+++==+++++++++++++++==============================================================================================================================================-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------==============+++*************************######=:-:---:---------------------------::::::::::::::::::::::::::::::::::::::::::::::::--------------------------------------------------------------===++====--------------------------------------------------------------------------------==++++*****++++===-------------------==+++**********************************+++===---------------------------------------------==++*********************************#################+-------+#######*----------*###############################******************************#####################################################################################################################################################*******************************************************************************###################################################**********************************************************************************************###################################################################*************++++++++++====----:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---====--:::::::::::::::::::::::::::::::::::::::-----:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---==++***++==----==++*****************************************************************************************************************************************************************************************************########################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################************
++++++++++++++++++++++++****************+++++++++++++++*****++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***********+++++++++++++++++++================================================================+++++*******************++++++++++++*********************************************************************************+++++++++++++++++++++**********************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####################***********#%%######***###**++*++===+=+++==================+++++++++++++++++++=++=---------------------------------------------------------------================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******##***++=++=+++++++++++++++++++==============================================================================================================================================-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------=============++++************************#########+:-::-:----------------------------::::::::::::::::::::::::::::::::::::::::::::::::--------------------------------------------------------------===+++===--------------------------------------------------------------------------------==++++*****++++===-------------------==++++*********************************+++===---------------------------------------------==++*********************************#################+-------+########=----------*###############################*****************************#####################################################################################################################################################*******************************************************************************###################################################**********************************************************************************************###################################################################*************++++++++++====----:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---====---::::::::::::::::::::::::::::::::::::::-----:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---==++***++==----==+++****************************************************************************************************************************************************************************************************########################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################************
++++++++++++++++++++++******************+++++++++++++++******+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***********+++++++++++++++++++++++++++++++++++++++++++++++++++================+++++===========++++++******************++++++++++++*********************************************************************************++++++++++++++++++++***************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@%@@%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######################**********#%%######**+*##***+++++==+++++++================+++++++++++++++++++=++=----------------------------------------------------------------=================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**+++++++++++++++++++++++++++++++++++++++++*********####***++==++++++++++++++++++++++++===============================================================================================================================================---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------======+===++++++************************###########*:--:-:----------------------------::::::::::::::::::::::::::::::::::::::::::::::::-------------------------------------------------------------===++++===--------------------------------------------------------------------------------==++++******+++===-------------------==++++*********************************+++===---------------------------------------------==++*********************************#################*-------+########=-----------*################################****************************####################################################################################################################################################*******************************************************************************###################################################**********************************************************************************************###################################################################*************++++++++++====----:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---====---::::::::::::::::::::::::::::::::::::::-----:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---==++**+++==-----==++****************************************************************************************************************************************************************************************************########################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################************
+++++++++++++++++++++*********************+++++++++++++*******++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******************+++++++++++***********************************************************************************+++++++++++++++++++******************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######################*********#%%%######**++*##***++++++++++++++++============++++++++++++++++++++=++=----------------------------------------------------------------====--=============+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**+++++++++++++++++++++++++*****########**+++=++++++++++++++++++++++++++++===============================================================================================================================================------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------=====++++++++++++************************##############=:-----:--------------------------::::::::::::::::::::::::::::::::::::::::::::::::-------------------------------------------------------------===++++===--------------------------------------------------------------------------------===+++******+++===-------------------==++++*********************************++++==---------------------------------------------==++*********************************#################*-------+########=------------*#################################**************************####################################################################################################################################################********************************************************************************##################################################**********************************************************************************************###################################################################*************++++++++++====----::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--:::::::::::--=====---::::::::::::::::::::::::::::::::::::::-----:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---==++*++++==-----==++****************************************************************************************************************************************************************************************************########################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################************
+++++++++++++++++++++**********************+++++++++++++*******++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******************++++++++++++*************************************************************************************+++++++++++++++++*********************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##########################******#%%#######**++*###**++++++++++++++++============++++++++++++++++++++=++=----------------------------------------------------------------====----============+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********++++++++++++++++++++*****########**++++++++++++++++++++++++++++++++++++===============================================================================================================================================-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------===++++++++++++*************************################+:---:----------------------------::::::::::::::::::::::::::::::::::::::::::::::::------------------------------------------------------------===+++++===--------------------------------------------------------------------------------===++++*****+++===-------------------==++++*********************************++++==---------------------------------------------==++*********************************#################*-------+########+-------------*#################################*************************####################################################################################################################################################********************************************************************************##################################################**********************************************************************************************###################################################################*************++++++++++====----::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---::::::::::--=====---::::::::::::::::::::::::::::::::::::::-----:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---==++++++==------==+++***************************************************************************************************************************************************************************************************########################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################************
+++++++++++++++++++++***********************++++++++++++********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******************++++++++++***************************************************************************************+++++++++++++++****************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##########################******#%%#######**+++*###*++++++++++++++++++=========++++++++++++++++++++==++=-----------------------------------------------------------------===------===============++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*************************###########**++=++++++++++++++++++++++++++++++++++++================================================================================================================================================--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------=====++++++++++*************************###################---:-----------------------------::::::::::::::::::::::::::::::::::::::::::::::::------------------------------------------------------------===++++++===-------------------------------------------------------------------------------===++++****++++===------------------===++++**********************************+++==---------------------------------------------==++*********************************#################*-------=########+--------------*#############################*###*+*****+****************####################################################################################################################################################******************************************************************************#####################################################*********************************************************************************************####################################################################************++++++++++====----::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---::::::::::--======--:::::::::::::::::::::::::::::::::::::::----:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---==++++++==------==+++*****************************************************************************************************************************************************************************************************####################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################**************
++++++++++++++++++++************************+++++++++++++*******+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********************++++++++++****************************************************************************************++++++++++++++********************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###########################*****#%%#########**+***###*++++++++++++++++++========++++++++++++++++++++==++=-----------------------------------------------------------------====-------================+=======++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****#*#############***+++=++++++++++++++++++++++++++++++++++++++=================================================================================================================================================--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------=----====++++++++++**************************####################+:-------------------------------::::::::::::::::::::::::::::::::::::::::::::::::--------------------==--------------------------------------===++++++===-------------------------------------------------------------------------------===++++*****++++==------------------===++++**********************************+++==---------------------------------------------==++*********************************##################=------=########+---------------*####%########################*###**+********************####################################################################################################################################################*******************************************************************************#####################################################********************************************************************************************####################################################################************++++++++++====----:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-----:::::::::--======--:::::::::::::::::::::::::::::::::::::::----:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---==+++++==--------==++*****************************************************************************************************************************************************************************************************#####################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################*************
++++++++++++++++****************************++++++++++++++********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******++++++++++++++++++++++++++++++++++++++***************************************+++++++++++**********************++++++++******************************************************************************************++++++++++++++************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#%@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%############################*****#%%#########*******###*++++++++++++++++++======+++++++++++++++++++++==+++-----------------------------------------------------------------======-------=============+==========+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****#****++++++++++=+++++++++++++++++++++++++++++++++++==================================================================================================================================================----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------====+++++++++************************##########################-:------------------------------::::::::::::::::::::::::::::::::::::::::::::::::------------------==----------------------------------------===++++++===--------------------------------------------------------------------------------==+++++****++++==-----------------===++++***********************************+++==---------------------------------------------==++*********************************##################+------=########+---------------=#############################**###**********************####################################################################################################################################################*******************************************************************************#####################################################********************************************************************************************####################################################################************+++++++++++===----:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-----:::::::::--======--:::::::::::::::::::::::::::::::::::::::---::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---==++++===--------==++*****************************************************************************************************************************************************************************************************#####################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################*************
++++++++++++++++****************************++++++++++++++*********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****++++++++++++++++++++++++++++++++++********************************************************************************++**********************************************************************************************++++++++++++*************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#############################****#%%##########**#****###*++++++++++++++++++====++++++++++++++++++++++==+=+=----------------------------------------------------------------=======--------======================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=++++++++++++++++++++++++++++++++++++++++========================================================================================================================================================---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------======+++++++++************************############################+-------------------------------::::::::::::::::::::::::::::::::::::::::::::::::-----------------------------------------------------------===+++++++===--------------------------------------------------------------------------------===++++****++++==---------------=====++++***********************************+++==---------------------------------------------==++*********************************##################+-------########+----------------=#############################**####*******************+####################################################################################################################################################*******************************************************************************######################################################********************************************************************************************###################################################################************+++++++++++===----:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-----:::::::::--======--:::::::::::::::::::::::::::::::::::::::---::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---==+++===-----:---==++*****************************************************************************************************************************************************************************************************######################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################************
+++++++++++++*******************************++++++++++++++**********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***********************************************************************************************************************************************************************************++++++++++++**************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##############################**#%%############*#*****###*+++++++++++++++++++==++++++++++++++++++++++==+===----------------------------------------------------------------=========--------====================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++====================================================================================================================================================================------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------=--=====++++++++*************************##############################*-------------------------------::::::::::::::::::::::::::::::::::::::::::::::::-----------------------------------------------------------===+++++++===--------------------------------------------------------------------------------===++++****++++==-------------======++++************************************+++==---------------------------------------------==++*********************************##################*-------########*-----------------=############################***####*************++**++####################################################################################################################################################********************************************************************************#####################################################********************************************************************************************###################################################################************+++++++++++===----::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::----:::::::::--======--::::::::::::::::::::::::::::::::::::::::--::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---=======----:::----==++*****************************************************************************************************************************************************************************************************#####################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################************
++++++++++++********************************+++++++++++++++**********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***********************************************************************************************************************************************************************************++++++++++++****************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###############################**#%%##############**#***###*++++++++++++++++++++++++++++++++++++++++++=++===-----------------------------------------------------------------=======-==--------==================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==========================================================++++++++===================================================================================================-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------========+++++++*************************################################*-------------------------------::::::::::::::::::::::::::::::::::::::::::::::::-----------------------------------------------------------===+++++++====-------------------------------------------------------------------------------===++++****++++==-----------=======+++++***********************************++++==---------------------------------------------==++*********************************##################*-------*#######*=-----------------=############################***####**************++++*###################################################################################################################################################********************************************************************************#####################################################********************************************************************************************###################################################################***********++++++++++++===----::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::----:::::::::--======--::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---======----:::::---==++*************+++*************************************************************************************************************************************************************************************#####################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################************
+++++++++++**********************************++++++++++++++**********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***********************************************************************************************************************************************************************************++++++++++++******************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###############################*#%%%################*****####++++++++++++++++++++++++++++++++++++++++==++===-----------------------------------------------------------------=======-------------================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==========================================================+++++++++++++++++++=========================================================================================-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------=-=======+++++++**************************#################################*-------------------------------::::::::::::::::::::::::::::::::::::::::::::::::-----------------------------------------------------------==++++++++====--------------------------------------------------------------------------------===++++***++++==---------======++++++++***********************************++++==--------------------------------------------===++*********************************##################*------=*#######*=------------------=###########################*+**####*************++++*###################################################################################################################################################********************************************************************************####################################################*********************************************************************************************###################################################################***********++++++++++++===----:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::------::::::::--======--::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---======---::::::---==++************+++++++**********************************************************************************************************************************************************************************#####################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################************
+++++++++++**********************************+++++++++++++++**********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**++***********************************************************************************************************************************************************************************+++++++++++********************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##################################%%#################*#****####+++++++++++++++++++++++++++++++++++++++==++===-----------------------------------------------------------------=====+=---------------=============+++++++++++==++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==================================================================+++++===============================================================================================-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------==========+++++****************************###################################-------------------------------::::::::::::::::::::::::::::::::::::::::::::::::-----------------------------------------------------------==++++++++====--------------------------------------------------------------------------------===++++***++++==--------=====+++++++++************************************++++==--------------------------------------------===++*********************************##################*----=++########*--------------------+###########################****####*******++***++++*###################################################################################################################################################*********************************************************************************###################################################*********************************************************************************************###################################################################***********+++++++++++====----:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::------::::::::--======--::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---=====----:::::::--==++***********++++++++++********************************************************************************************************************************************************************************#####################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################************
+++++++++++*****************************+++++++++++++++++++++**********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**++*********************************************************************************************************************************************************************************+++++++++++*********************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#################################%%####################*****####*+++++++++++++++++++++++++++++++++++++==+====------------------------------------------------------------------====++=------------------===++=====+++++++++++++=+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++========================================================+++++++++++==++++=================================================================-============================---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------===========++++**************************#######################################+------------------------------------::------::::::::::::::::::::::::::::::::::----------------------------------------------------------===++++++++=====-------------------------------------------------------------------------------===++++*++++++===------=====+++++++++*************************************++++==--------------------------------------------===++*********************************##################*====+*+########*---------------------+###########################*+**####*+***+****+++++*###################################################################################################################################################***********************************************************************************#################################################**********************************************************************************************#################################################################************++++++++++++===----:::::::::::::::::::::::::::::::::::::--:::::::::::::::::::::-----:::::::---==++==--::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---=====---::::::::--==+++**********+++====+++++*****************************************************************************************************************************************************************************#########################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################*********
+++++++++++*************************+++*+++++++++++++++++++++***********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++************************************************************************************************************************************************************************************++++++++++++**********************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%################################*#%%######################***#####*++++++++++++++++++++++++++++++++++++==+====------------------------------------------------------------------=====+==-------------------====+++++++++++++++++=+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==============================================================================================================================================-----====================--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------==========++==+**************************########################################*=-----------------------------------:-------::::::::::::::::::::::::::::::::::----------------------------------------------------------===++++++++=====--------------------------------------------------------------------------------==++++*++++++===------====++++++++***************************************++++==------------------------------------===----===+++*********************************###################+===+++*#######*=--------------------=*##########################*****####*+***+****++++*###################################################################################################################################################***********************************************************************************#################################################**********************************************************************************************#################################################################************++++++++++++===----:::::::::::::::::::::::::::::::::::::--:::::::::::::::::::::-----:::::::---==++==--::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---====----::::::::---=+++**********++=======+++++****************************************************************************************************************************************************************************########################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################*********
+++++++++++***********************++++++++++++++++++++++++++++***********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***********************************************************************************************************************************************************************************++++++++++++**********************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##################################%%%#######################***#####*++++++++++++++++++++++++++++++++++========------------------------------------------------------------------=====++=----------------------====+=++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=================================================================================================================++===+++++++===========================================----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------============+=-::+***********************############################################+--------------------------------------------:::::::::::::::::::::::::::::::::----------------------------------------------------------===++++++++======-------------------------------------------------------------------------------==++++****+++===----====++++++++******************************************+++==-----------------------------------===========++**********************************###################+==++++*########=---------------------=*##########################***+*####*++*+*****+++*###################################################################################################################################################***********************************************************************************##############################################*************************************************************************************************#################################################################************++++++++++++===----::::::::::::::::::::::::::::::::::::---:::::::::::::::::::::------::::::---==++==--::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::----===----::::::::---==++*********+++=========++++**************************************************************************************************************************************************************************#########################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################*********
++++++++++*************************++++++++++++++++++++++++++++***********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********************************************************************************************************************************************************************************+++++++++++************************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##################################%%#########################***######+++++++++++++++++++++++++++++++++=======-------------------------------------------------------------------=====+++=------------------------====+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=================================================================================================================++=====+++==++++++=====================================--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------==============:::::-+*******************################################################=--------------------------------------------::::::::::::::::::::::::::::::::----------------------------------------------------------==+++++++++======-------------------------------------------------------------------------------==++++****++++==----===+++++++********************************************+++===----------------------------------==========+++**********************************###################*++++++*########==--------------------==*#########################******####*++******+++*###################################################################################################################################################***********************************************************************************#############################################**************************************************************************************************#################################################################************++++++++++++===-----:::::::::::::::::::::::::::::::::::---:::::::::::::::::::::------::::::--===++==--::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::----===----::::::::---==++*********+++===---====++++++********************************************************####*********************************************************************************************************############################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################********
++++++++++**************************++++++++++++++++++++++++++++**********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********************************************************************************************************************************************************************************++++++++++++***********************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###############################*#%%%%#########################***######*++++++++++++++++++++++++++++++=======--------------------------------------------------------------------======+++---------------------------=+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=================================================================================================================++++++++++++++++===++++================================-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------==============-:..:::::=*****************##################################################*--------------------------------------------::::::::::::::::::::::::::::::::---------------------------------------------------------===++++++++++=====-------------------------------------------------------------------------------==++++****++++===-====++++++**********************************************+++===---------------------------------==========++++***********************************##################*++++++*########+==-------------------==+*#########################*****#####*+******+++*###################################################################################################################################################***********************************************************************************#########################################******************************************************************************************************#################################################################************++++++++++++===-----:::::::::::::::::::::::::::::::::::---:::::::::::::::::::::------::::::--==+++==--::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-----=-----::::::::---==++**********++==------====+++++******************************************************######*******************************************************************************************************#############################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################********
+++++++++***************************++++++++++++++++++++++++++++***********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********************************************************************************************************************************************************************************++++++++++++*****************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##################################%%#%#%#%######################***######*+++++++++++++++++++++++++++=========--------------------------------------------------------------------======+++=---------------------------=++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=====================================================================================================================++==+++++++++++++++===++===========================---------------------------------------------------------------------------------------------------------------------------------------------------------------------------=============-:.....::::::+***************####################################################=:-------------------------------------------:::::::::::::::::::::::::::::::---------------------------------------------------------===++++++++++======------------------------------------------------------------------------------==++++****++++========+++++***********************************************++++===-------------------------------=====+++++++++************************************##################*++++++*########+==-------------------===*#########################****+*#####*+*++**++*+###################################################################################################################################################***********************************************************************************######################################*********************************************************************************************************#################################################################************++++++++++++===-----:::::::::::::::::::::::::::::::::::----::::::::::::::::::::------::::::--==+++==--::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-----------::::::::---==++*********+++==--------====++++***************************************************##########**********************####************************************************************************################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################********
++++++++**************************+++++++++++++++++++++++++++++++***********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********************************************************************************************************************************************************************************+++++++++++++**************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%@@%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#################################%%%#%%##%########################*#*#####*++++++++++++++++++++++++++=========---------------------------------------------------------------------=====++++=--------------------------=++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++====================================================================================================================+++++++++++++++++++++++++++++=======================------------------------------------------------------------------------------------------------------------------------------------------------------------------------==============-:.......::::::-************#######################################################*--------------------------------------------:::::::::::::::::::::::::::::::---------------------------------------------------------===+++++++++++=====------------------------------------------------------------------------------==++++****++++=======+++++************************************************++++====-----------------------------====++++++++++*************************************##################**+***+#########+====-----------------===+##########################******#####***+**++*+###################################################################################################################################################***********************************************************************************####################################************************************************************************************************************################################################################************++++++++++++===-----::::::::::::::::::::::::::::::::::-----::::::::::::::::::::------::::::--==+++==--::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::----------::::::::::---=+++********+++==--------===+++****************************************************###############**##***********########*******************************************************************####################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################********
++++++++************************+++++++++++++++++++++++++++++++++************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********************++******************************************************+***********************************************************************************************+++++++++++++***********************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%##################################%%%%#%##%#########################*#######*+++++++++++++++++++++++++=========---------------------------------------------------------------------=====++++=--------------------------=++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=========================================================================================================================+++++++++++++++++++++++++++====================-----------------------------------------------------------------------------------------------------------------------------------------------------------------------=============-:..........::::::-**********#########################################################+-------------------------------------------:::::::::::::::::::::::::::::::---------------------------------------------------------===++++++++++++====------------------------------------------------------------------------------==++++****++++======+++++**************************************************++++===----------------------------====++++++++++**************************************##################*******#########*+===-----------------==+**#########################*******#####**+**++++*##################################################################################################################################################***********************************************************************************##############################***#**************************************************************************************************************################################################################************++++++++++++===-----::::::::::::::::::::::::::::::::::-----::::::::::::::::::::------::::::--==+++==--::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::----------::::::::::---==++********+++=====++++++*****##########****************************************######################*****##*##########***********************************************************############################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################********
++++++++++**********************++++++++++++++++++++++++++++++++++***********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****++++++++++******************************************************************************************************************************************************************************+++++++++++++**************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%#################################%%%%%%%%%%%#########################*#######*+++++++++++++++++++++++==========---------------------------------------------------------------------======++++---------------------------+++++++-=++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++========================================================================================================================++++++++++++++++++++++++++++++++++++=============-----------------------------------------------------------------------------------------------------------------------------------------------------------------==-==-============:...............::::=*****#*#*#########################################################*-------------------------------------------:::::::::::::::::::::::::::::::--------------------------------------------------------===++++++++++++++====-----------------------------------------------------------------------------==++++****++++======++++****************************************************++++===-------------------------====+++++++++*****************************************##################*******#########*++====---------------==+***#########################*******#####*++***++*##################################################################################################################################################************************************************************************************###########################********************************************************************************************************#####*****##################################################################************++++++++++++===-----::::::::::::::::::::::::::::::::::-----::::::::::::::::::::-------:::::--==+++==--::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-----------:::::::::---==++********++++++++*****##################**************************************##########################################***********************************************##**###################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################*******
++++++++*************************+++++++++++++++++++++++++++++++++************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****++++++++++******************************************************************************************************************************************************************************++++++++++++++***********************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%#################################%%%%%%%%%%%#########%%###############*#######*++++++++++++++++++++++==========---------------------------------------------------------------------======++++---------------------------++++++=--=+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=========================================================================================================================++++++++++++++++++++++++++++++++++++++=========----------------------------------------------------------------------------------------------------------------------------------------------------------------==================-....................::+****##############################################################+:----:------------------------------------:::::::::::::::::::::::::::::::--------------------------------------------------------===+++++++++++++++===-----------------------------------------------------------------------------==++++****+++++====+++++****************************************************++++===------------------------====+++++++********************************************###################*******########*+++===---------------==+****########################********#####**+**++*##################################################################################################################################################************************************************************************************########################********************************************************************************************************##########***##################################################################************++++++++++++===-----::::::::::::::::::::::::::::::::::----:::::::::::::::::::::-------:::::--==++++=---:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::----------::::::::::---==++********++++******####%%%%%%%%###########***********************************############################################********************************************#########################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################*******
+++++++***************************++++++++++++++++++++++++++++++++************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****++++++++++*****************************************************************************************************************************************************************************++++++++++++++*********************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%#################################%%%%%%%%%%%%#########%%################*########+++++++++++++++++++++==========----------------------------------------------------------------------=====++++---------------------------+++++==---=++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==========================================================================================================================++++++++++++++++++++++++++++++++++++++++++++=====------------------------------------------------------===--------------------------------------------------------------------------------------------------==================-.......................:-*####*###################################################*#########--:---------------------------------------:::::::::::::::::::::::::::::::--------------------------------------------------------===+++++++++++++++====----------------------------------------------------------------------------==++++****+++++===+++++******************************************************++++===----------------------====++++++**********************************************###################*******########*++++===--------------==**#***#######################********######*++*++*##################################################################################################################################################**************************************************************************************##################*******************************************************************************************************####################################################################################************++++++++++++===-----::::::::::::::::::::::::::::::::::----:::::::::::::::::::::-------:::::--==++++=---:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::----------::::::::::---==++*************######%%%%%%%%%%%%%%%%%%%%%##**********************************############################################****************************************#############################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################*******
++++++****************************++++++++++++++++++++++++++++++++*************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******+++++*+++*****************************************************************************************************************************************************************************++++++++++++++********************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@%%%%%%%%%%@@%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%#################################%%%%#%%%%%%%%%########%%#################*########*++++++++++++++++++++=========----------------------------------------------------------------------======+++=--------------------------=++++=----=++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++============================================================================================================================++++++++++++++++++++++++==++++++==+++++++++++=======----------------------------==========================---------------------------------------------------------------------------------------------====================:........................::=*####*#################################################**#########+:--:-:-----------------------------------:::::::::::::::::::::::::::::::--------------------------------------------------------===++++++++++++++++===----------------------------------------------------------------------------==++++*****+++++=+++++*******************************************************++++===---------------------====+++++************************************************###################*******########*+++++====------------==+****+*#######################********######**+*+*##################################################################################################################################################***************************************************************************************#############*******************************************************************************************************########################################################################################************++++++++++++===-----::::::::::::::::::::::::::::::::::----:::::::::::::::::::::-------:::::--==++++==--:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::----------::::::::::---==++**********########%%%%%%%%%%%%%%%%%%%%%%%%##*******************************##############################################******************************######################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################*******
++++++*****************************++++++++++++++++++++++++++++++++*************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******+++++*+++****************************************************************************************************************************************************************************++++++++++++++++******************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@%%%@@@@@@%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%#################################%%%%%%%%%%%%%%%#######%%%##########################*+++++++++++++++++++=========----------------------------------------------------------------------======+++=--------------------------=+++=------=+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++====================================================================================================================================================================================--------------------===============================------------------------------------------------------------------------------------------====================-...........................::*#*####################################################***#########---:-------------------------------------:::::::::::::::::::::::::::::::--------------------------------------------------------===+++++++++++++++++===---------------------------------------------------------------------------==++++*****+++++++++++********************************************************++++===-------------------====+++++*************************************************###################*******########***++++====-----------==+**+****######################*******+*#####**+++*###################################################################################################################################################***************************************************************************************########********************************************************************************************************###########################################################################################************+++++++++++++===----:::::::::::::::::::::::::::::::::------:::::::::::::::::::::------:::::--==++++==--:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::----------::::::::::---==++********########%%%%%@@@@@@@@@%%%%%%%%%%%%%##*******************************##############################################*************************##########################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################*******
++++*******************************++++++++++++++++++++++++++++++++**************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******++++++++++**++***********************************************************************************************************************************************************************+++++++++++++++++*****************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%################################%%%%#%%%%%%%%%%%%######%%%###########################*++++++++++++++++++========-----------------------------------------------------------------------======+++==-------------------------=++=-------=++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++========================================================================================================================================================================================-------=========================================--------------------------------------------------------------------------------------====================-:.........................:.:::=*###################################################***+*#########+:-:-------------------------------------:::::::::::::::::::::::::::::::--------------------------------------------------------===+++++++++++++++++====-------------------------------------------------------------------------===++++*****+++++++++++*********************************************************+++===------------------====+++++*************************************************####################*******########***+++++====----------==+*++*****######################********######*+++*###################################################################################################################################################*****************************************************************************************************************************************************************************************************#############################################################################################************+++++++++++++===----:::::::::::::::::::::::::::::::::------:::::::::::::::::::::-------::::--==++++==--:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::----------::::::::::---==+++*****########%%%%%@@@@@@@@@@@@@%%%%%%%%%%%%##********************************#############################################*********************##############################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################******
***********************************++++++++++++++++++++++++++++++++***************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******+++++++++++++***********************************************************************************************************************************************************************+++++++++++++++++****************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%#################################%%%%#%%%%%%%%%%%%######%%%%###################*########*++++++++++++++++========-----------------------------------------------------------------------======++++=-------------------------=++=--------=+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===========================================================================================================================================================================================================================================---------------------------------------------------------------------------------=====================:..........................:::::::+################################################*##***+*##########--:-:-----------------------------------:::::::::::::::::::::::::::::::--------------------------------------------------------===++++++++++++++++++====------------------------------------------------------------------------===++++*****+++++++++++*********************************************************++++===-----------------===++++***************************************************####################****############***+++++====---------===++*******#####################*******+*######**++###################################################################################################################################################***************************************************************************************************************************************************************************************************###############################################################################################************+++++++++++++===----:::::::::::::::::::::::::::::::::------:::::::::::::::::::::-------::::--==++++==--:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::----------::::::::::----=+++****####%%%%%%%%@@@@@@@@@@@@@@@@@%%%%%%%%%%%##*********************************############################################******************################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################******
***********************************++++++++++++++++++++++++++++++++***************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****++***+++++++++++++++++++***************************************************************************************************************************************************************+++++++++++++++++****************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%#################################%%%%%%%%%%%%%%%%%%%##%%#%%%%%############################*+++++++++++++++========-----------------------------------------------------------------------======++++=-------------------------=++---------=+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===========================================================================================================================================================================================================================================--------------------------------------------------------------------------------====================-...........................::::::::-*#############################################*#******++*#########+:--------------------------------------:::::::::::::::::::::::::::::::--------------------------------------------------------===+++++++++++++++++++===------------------------------------------------------------------------===++++*****++++++++++***********************************************************+++====---------------===++++****************************************************####################****############****+++++=====-------===+++*******#####################*******+*######*++###################################################################################################################################################**************************************************************************************************************************************************************************************************################################################################################################************+++++++++++++===----:::::::::::::::::::::::::::::::::------:::::::::::::::::::::-------::::--==++++==--:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::----------::::::::::----=+++****##%%%%%%%%%@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%#*********************************############################################****************##################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################******
**************************************++++++++++++++++++++++++++++++***************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**+++++++++++++++++++++++++++++*********************************************************************************************************************************************************+++++++++++++++++++*************************************************************************************+++++++++++++++++++++++++=++=======++++++++++++++++++++++++++++++***********************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%############################*+++++++++++++========-----------------------------------------------------------------------=======++++=-------------------------+=----------=++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++========================================================================================================================================================================================================================================----------------------------------------------------------------------------=====================-:..........................::::::::---=##########################################***********++*##########--:------------------------------------:::::::::::::::::::::::::::::::--------------------------------------------------------===+++++++++++++++++++====-----------------------------------------------------------------------===++++*****++++++++++***********************************************************++++====-------------====+++*****************************************************####################****############*****++++++====------===+++********####################*********#######++###################################################################################################################################################*************************************************************************************************************************************************************************************************################################################################################################**************++++++++++++===----:::::::::::::::::::::::::::::::::------:::::::::::::::::::::-------::::--==++++==--:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::----------:::::::::::---==++***##%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%#*************************************###########################################*****#########################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################******
**************************************++++++++++++++++++++++++++++++****************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*+++++++++++++++++++++++++++++*********************************************************************************************************************************************************+++++++++++++++++++*************************************************************************************+++++++++++++++++++++++======================+++++++++++++++++++++***********************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#############################*+++++++++++++=======-----------------------------------------------------------------------=======++++=-------------------------==-----------=+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=========================================================================================================================================================================================================================================-------------------------------------------------------------------------======================:..........................:::::::::-----*#######################################*************++*##########=--------------------------------------:::::::::::::::::::::::::::::::--------------------------------------------------------===++++++++++++++++++++===----------------------------------------------------------------------====++++*****++++++++++************************************************************++++=====-----------===+++******************************************************####################****############******++++++====-----===+++*********####################*********######*+###################################################################################################################################################************************************************************************************************************************************************************************************************#################################################################################################**************++++++++++++===----:::::::::::::::::::::::::::::::::------:::::::::::::::::::::-------::::--==++++==--:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::----------:::::::::::---==++***#%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%#*************************************########################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################******
**************************************+++++++++++++++++++++++++++++++****************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******************************************************************************************************************************************************++++++++++++++++++++***********************************************************************************+++++++++++++++++++++=================================+++++++++++++*************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##############################*+++++++++++=======-----------------------------------------------------------------------=======+++++=------------------------==------------=++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==========================================================================================================================================================================================================================================----------------------------------------------------------------------===+==================-...........................:::::::::------=*################################*******************++*##########+--------------------------------------:::::::::::::::::::::::::::::::--------------------------------------------------------===+++++++++++++++++++++==--------------------------------------=--------------------------========+++++*****+++++++++*************************************************************+++++======--------===++++******************************************************####################****############********+++++====----===+++*********####################*+******+*######*###################################################################################################################################################**********************************************************************************************************************************************************************************************###################################################################################################**************++++++++++++===----:::::::::::::::::::::::::::::::::------:::::::::::::::::::::--------:::--=+++++==--:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::----------:::::::::::---==++**##%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%##**************************************######################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################******
**************************************++++++++++++++++++++++++++++++++***************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******************************************************************************************************************************************************++++++++++++++++++++***********************************************************************************+++++++++++++++++=======================================++++++++++***************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###############################*++++++++++========----------------------------------------------------------------------========+++++=-----------------------==------------=+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=========================================================================================================================================================================================================================================-------------------------------------------------------------------====+==================-............................::::::::---------+############################************************++*#########*-:------------------------------------::::::::::::::::::::::::::::::::-------------------------------------------------------===+++++++++++++++++++++===-------------------------------------===---------------------===========+++++******++++++++**************************************************************+++++=======------===++++******************************************************#####################***############*********+++++====---===+++**********####################+***#****##########################################################################################################################################################*********************************************************************************************************************************************************************************************####################################################################################################***************+++++++++++===----:::::::::::::::::::::::::::::::::------:::::::::::::::::::::--------:::--=+++++==--:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::----------:::::::::::---==++**#%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%#*****************************************###################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################******
**************************************+++++++++++++++++++++++++++++++++*+*************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****************************************************************************************************************************************************+++++++++++++++++++++**********************************************************************************+++++++++++++++===========================================+++++++++****************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#################################*++++++++========----------------------------------------------------------------------========+++++=-----------------------==-------------=+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=========================================================================================================================================================================================================================================---------------------------------------------------------------=====+==================-:............................:::::::-----------=*#########################**************************++*##########=:------------------------------------::::::::::::::::::::::::::::::::-------------------------------------------------------===+++++++++++++++++++++===-------------------------------------===-------------------============+++++*******++++++++***************************************************************++++++======----===++++*******************************************************#####################***############**********+++++====--===+++***********###################********+*#########################################################################################################################################################*****************************************************************************************************************************************************************************************########################################################################################################***************++++++++++++==----::::::::::::::::::::::::::::::::-------:::::::::::::::::::::---------:--==+++++==--:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-----------::::::::::---==++**#%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%#******************************************#################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################******
**************************************+++++++++++++++++++++++++++++++++++*************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*+****************************************************************************************************************************************************++++++++++++++++++++++*********************************************************************************+++++++++++++=============================================++++++++******************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******++++++++#%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##################################*++++++++=======-----------------------------------------------------------------------=======++++++=--------------------------------------=+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=========================================================================================================================================================================================================================================-------------------------------------------===--------------=====++=================-:.............................:::::::------------=+*######################****************************+++##########+:------------------------------------::::::::::::::::::::::::::::::::-------------------------------------------------------===+++++++++++++++++++++===-------------------------------------====----------------=======+++++++++++*********++++++*****************************************************************++++++++==========++++*******************************************************#####################***############************++++====-===+++***********###################*+***#****#########################################################################################################################################################**************************************************************************************************************************************************************************************###########################################################################################################****************+++++++++++==----::::::::::::::::::::::::::::::::-------:::::::::::::::::::::------------==+++++==--:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-----------::::::::::---==++**#%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%#*********************************************##############################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################******
***************************************+++++++++++++++++++++++++++++++++++*************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***+****************************************************************************************************************************************************+++++++++++++++++++++++*******************************************************************************++++++++++++===============================================++++++++******************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++************+***#%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%################################%%#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####################################*+++++++======-----------------------------------------------------------------------=======++++++=--------------------------------------==++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=========================================================================================================================================================================================================================================----------------------------------------========---------======++==================:..............................:::::::-------------++*##################********************************+++*#########*-:-----------------------------------:::::::::::::::::::::::::::::::::------------------------------------------------------===+++++++++++++++++++++===-------------------------------------====--------------======++++++++++++************+++++*******************************************************************++++++++========+++********************************************************#####################***############*************++++=======+++************###################****#*****#########################################################################################################################################################********************************************************************************************************************************************************************############################################################################################################################*****************++++++++++==----::::::::::::::::::::::::::::::::-------::::::::::::::::::::::-----------==+++++==--:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-----------::::::::::---==++*#%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%#*#*******************************************##############################################################################################################################*********######################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################******
***************************************+++++++++++++++++++++++++++++++++*+**************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***+***************************************************************************************************************************************************+++++++++++++++++++++++++******************************************************************************+++++++++++================================================++++++++******************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****************%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%###############################%%#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####################################*++++++======-----------------------------------------------------------------------========++++++---------------------------------------=++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==========================================================================================================================================================================================================================================-------------------------------------========================++================-:...............................:::::::--------------=++*##############************************************++*##########-:-----------------------------------:::::::::::::::::::::::::::::::::------------------------------------------------------===++++++++++++++++++++++==-------------------------------------=====------------=====+++++++++++++****************+***********************************************************************++++++======++++********************************************************#####################***############*************+++++======+++************###################*****#***+*########################################################################################################################################################********************************************************************************************************************************************************************############################################################################################################################*******************++++++++==----::::::::::::::::::::::::::::::::-------::::::::::::::::::::::-----------==+++++==--:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-----------::::::::::---==++*#%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%#*#*#******************************************###################################################################################################################*****************#########################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################*****
**************************************++++++++++++++++++++++++++++++++++++**************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++************++++++++++************************************************************************************************************************************************************++++++++++++++++++++++++++*****************************************************************************+++++++++++================================================+++++++*******************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****************%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%##############################%%##%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####################################*+++++++====-----------------------------------------------------------------------========++++++=---------------------------------------=+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==========================================================================================================================================================================================================================================----------------------------------=======================++================-:................................:::::::----------------+++###########***************************************+++##########=:---:--:----------------------------:::::::::::::::::::::::::::::::::------------------------------------------------------===++++++++++++++++++++++===-----------------------------------=======----------====+++++++++*************************************************************************************************+++++===++++********************************************************######################***############**************++++======+++*************##################*****#*****########################################################################################################################################################*******************************************************************************************************************************************************************#############################################################################################################################********************+++++++==----::::::::::::::::::::::::::::::::-------::::::::::::::::::::::-----------==+++++==--::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::----------::::::::::---==++*#%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%#*#***######***********************************########################################################################################################*****************************#######################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################*****
**************************************++++++++++++++++++++++++++++++++++++***************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**************+++++++++************************************************************************************************************************************************************+++++++++++++++++++++++++++***************************************************************************++++++++++++================================================+++++++*******************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***************%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%##############################%%##%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####################################++++++++===-----------------------------------------------------------------------========++++++=----------------------=----------------=++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==========================================================================================================================================================================================================================================----------------------------------======================+=================-:..................................::::::-----------------=*+*#########****************************************+++*#########+-------:----------------------------:::::::::::::::::::::::::::::::::------------------------------------------------------===++++++++++++++++++++++===-----------------------------------=======---------====++++++******************************************************************************************************+++++++++++********************************************************######################***############***************++++=====+++**************##################***********#######################################################################################################################################################*******************************************************************************************************************************************************************#############################################################################################################################*********************++++++==----::::::::::::::::::::::::::::::::-------::::::::::::::::::::::-----------==+++++==--::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::----------::::::::::---==++*#%%%@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%#*#**#######************************************#####################################################################################################*******************************#######################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################*****
***************************************++++++++++++++++++++++++++++++++++++++**************++++++++++++++++++++++++++++++++++++++++++++++++++++++++****************************************************************************************************************************************************************************************++++++++++++=++++++++++++++++*************************************************************************+++++++++++++=======================+==++++==================++++++********************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**************%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%##############################%%###%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####################################*++++++++==------------------------------------------------------------------------=======++++++=----------------------=-----------------=+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=========================================================================================================================================================================================================================================---------------------------------====================+++=================-:...................................:::::::------------------+++*#######*****************************************+++*##########-:---:------------------------------:::::::::::::::::::::::::::::::::------------------------------------------------------==+++++++++++++++++++++++===----------------------------------=========-------====++++**********************************************************************************************************+++++++++*********************************************************######################***############****************++++===++++**************##################*+*********#######################################################################################################################################################*******************************************************************************************************************************************************************#############################################################################################################################***********************++++==----::::::::::::::::::::::::::::::::-------::::::::::::::::::::::-----------==+++++==--::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::----------::::::::::---==++*%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%##*############*********************************###################################################################################################*********************************########################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################****
***************************************++++++++*++++++++++++++++++++++++++++++*************++++++++++++++++++++++++++++++++++++++++++++++++++++********************************************************************************************************************************************************************************************+++++++++++======+++++++++++++++*********************************************************************+++++++++++++++=========++++++++++++++++++++++===============+++++++*******************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*************#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%##############################%###%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####################################*+++++++++==-----------------------------------------------------------------------========++++++----------------------==----------------==++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=========================================================================================================================================================================================================================================--------------------------------==================++++=================-:....................................:::::::-------------------+++**####*#******************************************++*##########=:-:-:--:---------------------------:::::::::::::::::::::::::::::::::------------------------------------------------------==+++++++++++++++++++++++===---------------------------------===========----====+++++*************************************************************************************************************++++++**********************************************************######################***############****************+++++==++++***************##################+********+*######################################################################################################################################################********************************************************************************************************************##########*************************************#############################################################################################################################***********************++++===----:::::::::::::::::::::::::::::::-------::::::::::::::::::::::-----------==+++++==--::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::----------::::::::::---==++*%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#*#################****************************################################################################################################************************************########################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################****
***************************************+++++++******************++++++++++++++**************++++++++++++++++++++++++++++++++++++++++++++++++++********************************************************************************************************************************************************************************************+++++++++++=========++++++++++++++++++***************************************************************++++++++++++++++++++++++++++++++++++++++++++++++==============+++++++*******************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++************#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%##############################%%##%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##%%%%#####################################*++++++++++==---------------------------------------------------------------------========++++++=---------------------==-----------------=++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++========================================================================================================================================================================================================================================-----------------------------=====================+++=================-.......................................::::::--------------------=+++*######******************************************+++*#########+:------:---------------------------:::::::::::::::::::::::::::::::::-----------------------------------------------------===+++++++++++++++++++++++===-------------------------------=============--=====++++*****************************************************************************************************************+++***********************************************************######################***############****************+++++++++++***************##################*********+*######################################################################################################################################################***************************************************************************************************************################************************************#############################################################################################################################************************++++==----:::::::::::::::::::::::::::::::-------::::::::::::::::::::::-----------==+++++==--:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---------::::::::::---==++#%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#*#####################************************############################################################################################*****************************************#######################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################****
****************************************++++++********************+++++++++++++*************++++++++++++++++++++++++++++++++++++++++++++++++++********************************************************************************************************************************************************************************************+++++++++++===========+++++++++++++++++++++++++++++++*********************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++==========++++++++******************************************************************++++++++++++++++++++++++++++================++++++++++++++++************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++************#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%#############################%###%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###%%%%%####################################*++++++++++++===------------------------------------------------------------------========++++++=---------------------=+=-----------------=++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=====================================================================================================================================================================================================================================----------------------------=========================================. .....................................::::::----------------------+*+****##*******************************************+++*##########-:---------------------------------:::::::::::::::::::::::::::::::::-----------------------------------------------------===+++++++++++++++++++++++===----------------------------=========+++==========++++********************************************************************************************************************************************************************************######################***############*****************++++++++++****************#################*+********+*#####################################################################################################################################################*************************************************************************************************************##################************************************#############################################################################################################################************************++++==----::::::::::::::::::::::::::::::--------:::::::::::::::::::::::----------==++++++=--:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---------::::::::::---==++#%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%###########################********************#####################################################################################*************************************************######################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################****
****************************************+++++************************++++++++++*************+++++++++++++++++++++++++++++++++++++++++++++++++********************************************************************************************************************************************************************************************++++++++++++===============+++++++++++++++++++++++++++++++++++++++++***************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==+++++++++******************************************************************+++++++++++++++++++++++++=====================++++++++++++***************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++************#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%#############################%###%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####%%%%%#####################################*++++****++++===-----------------------------------------------------------------=======+++++++=---------------------+=-----------------=++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=====================================================================================================================================================================================================================================--------------------------=======================================++*+..................:-:...................::::::----------------------=*+**************************************************++*##########=:---------------------------------:::::::::::::::::::::::::::::::::-----------------------------------------------------===+++++++++++++++++++++++===--------------------------======++++++++++======+++++*********************************************************************************************************************************************************************************######################***############*****************++++++++++****************##################***********#####################################################################################################################################################********************************************************************************************************#######################*************************************############################################################################################################################************************++++==----::::::::::::::::::::::::::::::--------:::::::::::::::::::::::----------==++++++=---:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--------::::::::::---==++#%%%@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%#*###########################*****************################################################################################******************************************************######################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################****
****************************************+++++***************************+**++++************++++++++++++++++++++++++++++++++++++++++++++++++++*******************************************************************************************************************************************************************************************++++++++++++=================++++++++++++++++++++++++++++++++++++++++++++++++***++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******************************************************************++++++++++++++++++++++++========================++++++++++******************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*************%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%#############################%###%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######%%%%#######################################*********++++===---------------------------------------------------------------=======+++++++=---------------------=+------------------=+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=====================================================================================================================================================================================================================================-----------------------=======================================+******=.................-*=..................::::::------------------------**+*************************************************+++*#########+------:---------------------------:::::::::::::::::::::::::::::::::-----------------------------------------------------===++++++++++++++++++++++++==-------------------------=====++++++++++++++++++++++**********************************************************************************************************************************************************************************######################***############******************+++++++++*****************#################********+*+#####################################################################################################################################################*****************************************************************************************************##########################*************************************############################################################################################################################************************++++==----::::::::::::::::::::::::::::::--------:::::::::::::::::::::::---=------==++++++==--::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::------:::::::::::---==++#%%%@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#*############################***************##########################################################################*************************************************************######################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################****
**********************************************************************+++++++++++**********++++++++++++++++++++++++++++++++++++++++++++++++++*******************************************************************************************************************************************************************************************++++++++++++====================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******************************************************************+++++++++++++++++++++++==========================++++++++++**********************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**************#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%##################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###%#%%%%%############################################****++++++==-------------------------------------------------------------========+++++++=--------------------=+=-----------------=++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==================================================================================================================================================================================================================================-------------------==-=====================================+**********-.................=+:.................:::::-------------------------+*+**************************************************++*#########*---:-----------------------------::::::::::::::::::::::::::::::::::-----------------------------------------------------===++++++++++++++++++++++++==------------------------====++++++++++++++++++++++************************************************************************************************************************************************************************************######################***############******************+++++++++*****************#################************####################################################################################################################################################*************************************************************************************************#############################***************************************#####################*#####################################################################################################************************+++===----::::::::::::::::::::::::::::::--------:::::::::::::::::::::::---==-----==++++++==--::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::----:::::::::::---==++%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#**##############################*##*******###########################################################################************************************************************#########################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################***
**********************************************************************++++++++++++*********++++++++++++++++++++++++++++++++++++++++++++++++++*******************************************************************************************************************************************************************************************++++++++++++=====================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********************************************************************+++++++++++++++++++++++===========================+++++++++*************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*************#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@%%%%%%%%%%%%%%%%%%%%%%%%#################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##%%%%%%############################################****++++++===-----------------------------------------------------------========++++++++--------------------=++------------------=+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==================================================================================================================================================================================================================================------------------======================================+*************+.................:+-.................:::::-------------------------=****************************************************++*##########----:----------------------------::::::::::::::::::::::::::::::::::-----------------------------------------------------===++++++++++++++++++++++++==------------------------===+++++++++++++++++++++**************************************************************************************************************************************************************************************######################***############*******************++++++++******************#################***********####################################################################################################################################################***********************************************************************************************##############################****************************************#####################*#####################################################################################################************************+++===----::::::::::::::::::::::::::::::--------:::::::::::::::::::::::---===----==++++++==--::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::----==++%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%#*####################################***###########################################################################**************************************************************########################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################***
***********************************************************************++++++++++++********++++++++++++++++++++++++++++++++++++++++++++++++++******************************************************************************************************************************************************************************************+++++++++++++========================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********************************************************************++++++++++++++++++++++==============================+++++++***************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***********#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%#################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#%%%%%%%##############################################***++++++++==---------------------------------------------------------========++++++++=-------------------=++=------------------+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=====================================================================================================================================================================================================================================---------============================-==========++**************+:..................-=................::::::--------------------------****************************************************+++*#########+:--:----------------------------::::::::::::::::::::::::::::::::::-----------------------------------------------------===++++++++++++++++++++++++==-----------------------===++++++++****************************************************************************************************************************************************************************************************#######################**############*******************++++++++******************#################**********+*###################################################################################################################################################********************************************************************************************###############################********************************************##############********###################################################################################################************************+++===----::::::::::::::::::::::::::::::--------:::::::::::::::::::::::---===---===++++++==--::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::----==++#%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%########################################################################################################*###########***************************************************************########################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################**
************************************************************************++++++++++++******+++++++++++++++++++++++++++++++++++++++++++++++++++*******************************************************************************************************************************************************************************************++++++++++++============================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=======+++++++++++++++++++++++**********************************************************************++++++++++++++++++++++===============================++++++*****************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**+******#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###############################################****++++++++==-------------------------------------------------------========+++++++++=------------------=++=------------------=+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==========================================================================================================================================================================================================================================--=====================-------========++******************-....................-................::::::--------------------------+****************************************************++*#########*--------------------------------::::::::::::::::::::::::::::::::::-----------------------------------------------------===++++++++++++++++++++++++==-----------------------===++++++******************************************************************************************************************************************************************************************************#######################**#############******************++++++++******************##################*********+*###################################################################################################################################################****************************************************************************************################################**************************************************########**************################################################################################################************************+++===----::::::::::::::::::::::::::::::--------:::::::::::::::::::::::---====--===++++++==--:::::::::::::::::::::::-:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---===+#%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%##*###################################################################################################*****************************************************************************########################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################**
************************************************************************+++++++++++++*****++++++++++++++++++++++++++++++++++++++++++++++++++++******************************************************************************************************************************************************************************************++++++++++++============================++++++++++++++++=======+=++++++++++++++++++++++++++++++++++++++++++++++++++++++++++========================++++++++++*********************************************************************************+++++++++++++++++++++++==============================+++++++*******************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****+*#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%###############################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%################################################**++++++++++==-----------------------------------------------------========++++++++++------------------=+++=------------------=++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++========++++++++++++======================================================================================================================================================================================================================================-----------======++***********************=.....................................::::::--------------------------=****************************************************+++##########-:-----------------------------::::::::::::::::::::::::::::::::::::----------------------------------------------------===++++++++++++++++++++++++==----------------------===+++++********************************************************************************************************************************************************************************************************#######################**#############******************++++++++*******************#################*+********+*##################################################################################################################################################**************************************************************************************##########################********************************************************************************###############################################################################################*************************+++==-----:::::::::::::::::::::::::::::----------::::::::::::::::::::::---=========++++++==--::::::::::::::::::::::---::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::----==+#%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%#**#############################################################################################**###******************************************************************************#######################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################**
***************************************************************************+++++++******++++++++++++++++++++++++++++++++++++++++++++++++++++++******************************************************************************************************************************************************************************************++++++++++++=========================================================+++++++++++++++++++++++++++++++++++++++++++++++++++=============================+++++++++********************************************************************************+++++++++++++++++++++++===============================++++++*******************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*+*+*#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%###############################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##########################################**#####***++++++++++===--------------------------------------------------========++++++++++=------------------+++=------------------=++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++======+++++++++++++++================================================================================================================================================================================================================================---------========++*****************************:....................................:::::---------------------------=****************************************************+++*#########=:-:---------------------------::::::::::::::::::::::::::::::::::::----------------------------------------------------===++++++++++++++++++++++++==----------------------==+++++*****************************************************+***************************************************************************************************************************************************#######################*##############*******************+++++++*******************#################************##################################################################################################################################################**************************************************************************##################################**************************************************************************************#############################################################################################*************************+++==-----:::::::::::::::::::::::::::::----------::::::::::::::::::::::---=========++++++==--::::::::::::::::::::::----:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::----==+#%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%#**####################################################################################################****************************************************************************#######################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################**
****************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++*******************************************************************************************************************************************************************************************+++++++++++=========================================================+++++++++++======================================================================+++++++++++*****************************************************************************+++++++++++++++++++++++===============================++++++**********************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##############################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#################################################***+++++++++++==-------------------------------------------------========+++++++++++=-----------------++++-------------------=+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===+++++++++++++++++============================================================================================================================================================================================================================================++********************************#=....................................:::::----------------------------*****************************************************++*#########*--:--------------------------:::::::::::::::::::::::::::::::::::::----------------------------------------------------===++++++++++++++++++++++++===--------------------===++++*****************************************************++***************************************************************************************************************************************************#######################*##############*******************+++++++********************#################***********##################################################################################################################################################******************************************************************######################################******************************************************************************************#############################################################################################*************************+++==-----:::::::::::::::::::::::::::::----------::::::::::::::::::::::---=========++++++==--:::::::::::::::::::::-----:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-----=+#%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%##*#####################################################################################################***************************************************************************########################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################*
****************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++*******************************************************************************************************************************************************************************************+++++++++++=======================++==================================================================================================================+++++++++++++++++**********************************************************************++++++++++++++++++++++++===============================+++++************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#############################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#################################################***++++++++++++==-----------------------------------------------========++++++++++++-----------------++++=-------------------+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==++++++++++++++++++=========================================================================================================================================================================================================================================+++***********************************#:...................................:::::----------------------------+****************************************************+++*#########---:-------------------------:::::::::::::::::::::::::::::::::::::----------------------------------------------------===++++++++++++++++++++++++===-------------------===++++******************************************************++***************************************************************************************************************************************************#######################*##############*******************++++++*********************#################***********##################################################################################################################################################*****************************************************************####################################*********************************************************************************************#############################################################################################*************************+++==-----:::::::::::::::::::::::::::::-----------:::::::::::::::::::::---========+++++++==--:::::::::::::::::::::-----:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-----=+#%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%##*####################################################################################################****************************************************************************########################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################*
****************************************************************************************+++++++++++++++*+++++++++++++++++++++++++++++++++++++++******************************************************************************************************************************************************************************************++++++++++=============================================================================================================================================++++++++++++++++++********************************************************************++++++++++++++++++++++++++=============================+++++***************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%#############################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##################################################****++++++++++++==---------------------------------------------========+++++++++++++----------------=+++=-------------------=++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==================++++==============================================================================================================================================================================================================++++**************************************+...................................:::::---------------------------:+****+***********************************************+++*#########+:--:------------------------:::::::::::::::::::::::::::::::::::::----------------------------------------------------==+++++++++++++++++++++++++===------------------====+++*******************************************************++***************************************************************************************************************************************************#######################*##############********************+++++**********************#################**********##################################################################################################################################################****************************************************************##################################************************************************************************************************#############################################################################################*************************+++===----:::::::::::::::::::::::::::::------------::::::::::::::::::::---========+++++++==--:::::::::::::::::::::------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::------+#%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%########################################################################################################****************************************************************************######################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################**
*********************************************************************************************+++*++++++++++++++++++++++++++++++++++++++++++++++******************************************************************************************************************************************************************************************++++++++++==============================================================================================================================================++++++++++++++++++++*****************************************************************++++++++++++++++++++++++++=============================+++++*****************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%############################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##################################################****+++++++++++++==-------------------------------------------========+++++++++++++=---------------=++++=-------------------=+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=================================================================================================================================================================================================================================++++*****************************************#-..................................:::::---------------------------:=****++***********************************************++**########*--:-------------------------:::::::::::::::::::::::::::::::::::::----------------------------------------------------==++++++++++++++++++++++++++==-----------------====++++*******************************************************++***************************************************************************************************************************************************#######################*##############********************+++++**********************#################**********##################################################################################################################################################******************************************************************################################************************************************************************************************#############################################################################################*************************+++===----:::::::::::::::::::::::::::::-----==--------:::::::::::::::::---========+++++++==--:::::::::::::::::::::------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::------+#%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#######################################################################################################****************************************************************************######################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################**
***************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++*******************************************************************************************************************************************************************************************++++++++++===============================================================================================================================================++++++++++++++++++++*****************************************************************++++++++++++++++++++++++++++==========================+++++********************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%############################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##################################################******+++++++++++++==------------------------------------------========+++++++++==++=--------------=++++=-------------------=+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===============================================================================================================================================================================================================================++++*********************************************..................................:::::-----------------------------****++***********************************************+++*#########--:------------::::---------:::::::::::::::::::::::::::::::::::::---------------------------------------------------===++++++++++++++++++++++++++==----------------====++++********************************************************++***************************************************************************************************************************************************#######################*###############*******************+++++**********************#################**********##################################################################################################################################################*******************************************************************#######################********************************************************************************************************#############################################################################################*************************+++===----::::::::::::::::::::::::::::-----====---------:::::::::::::::---========+++++++==--:::::::::::::::::::::------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::------+#%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#**####################################################################################################****************************************************************************######################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################**
****************************************************************************************************++++++++++++++++++++++++++++++++++++++++++*******************************************************************************************************************************************************************************************++++++++++=================================================================================================================================================++++++++++++++++++*****************************************************************+++++++++++++++++++++++++++++++=======================++++++*********************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##########################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##################################################*******+++++++++++++==-----------------------------------------========+++++++====+=--------------=+++++--------------------=++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=============================================================================================================================================================================================================================+++***********************************************#=.................................:::::-----------------------------+****+***********************************************+++***#######=:------------:::::::------::::::::::::::::::::::::::::::::::::::---------------------------------------------------===++++++++++++++++++++++++++==---------------====++++*********************************************************++**************************************************************************************************************************************************########################################********************++++***********************#################*********##################################################################################################################################################*********************************************************************#################************************************************************************************************************#############################################################################################*************************+++===----:::::::::::::::::::::::::::------======----------::::::::::::---=======+++++*++==--::::::::::::::::::::-------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--------+#%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#**#########################################################################################################************************************************************************#####################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################**
********************************************************************************************************++++++++++++++++++++++++++++++++++++++*****************************************************************************************************************************************************##############***********************++++++++++==========================++++++++++++++++++++++++++==================+=====================================================================================++++++++++***************************************************************+++++++++++++++++++++++++++++++++++===================++++++*********************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##########################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##################################################*********+++++++++++++==------------------------------------------=======+++===--==+=-------------=+++++=-------------------==+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==========================================================================================================================================================================================================================+++*************************************************#**:................................:::::-----------------------------+****++***********************************************+++***######*--:---------::::::::::--::::::::::::::::::::::::::::::::::::::::---------------------------------------------------===++++++++++++++++++++++++++==---------------===++++**********************************************************++**************************************************************************************************************************************************########################################*********************+++***********************#################*********##################################################################################################################################################***********************************************************************##############*************************************************************************************************************#############################################################################################*************************+++===----:::::::::::::::::::::------------=========---------::::::::::---=======+++++*++==--::::::::::::::::::::-------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::----------+#%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#*###############*****########################################################################################*************************************************************************##################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################**
********************************************************************************************************++++++++++++++++++++++++++++++++++++++****************************************************************************************************************************************************##########################***********+++++++++++=========================+++++++++++++++++++++++++++++========++++++++++=====================================================================================+++++++++***********+++++++++++++++++++++++++***************************++++++++++++++++++++++++++++++++++++++================++++++**********************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##################################################*********+++++++++++++++==---------------------------------------------======----==+=------------=+++++=--------------------=+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++========================================================================================================================================================================================================================++*******************************************************=................................:::::-----------------------------=*****=***********************************************+=+*****#####-------------:::::::::::::::::::::::::::::::::::::::::::::::::::--------------------------------------------------===+++++++++++++++++++++++++++===-----:-------====++++**********************************************************+***************************************************************************************************************************************************#######################################**********************++************************##################********##################################################################################################################################################************************************************************************###########***************************************************************************************************************#############################################################################################*************************+++===----:::::::::::::::::::-------------==============------::::::::----======++++++*++==--::::::::::::::::::::-------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::------------+#%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%###############*********#######################################################################################************************************************************************##################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################**
*****************************************************************************************************************++++++++++++++++++++++++++++*****************************************************************************************************************************************************############################********+++++++++++==========================++++++++++++++++++++++++++++++++++++++++++++++++===++================================================================================+++++++++********+++++++++++++++++++++++++++++++++++++++**************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###################################################********++++++++++++++++==------------------------------------------------------=++------------=++++++=--------------------=++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=====================================================================================================================================================================================================================+++**********************************************************................................:::::-----------------------------=*****=+***********************************************+++*****####=:------------::::::::::::::::::::::::::::::::::::::::::::::::::--------------------------------------------------===++++++++++++++++++++++++++++==-------------===++++**********************************************************++***************************************************************************************************************************************************#######################*###############*************************************************#################********##################################################################################################################################################**************************************************************************######*****************************************************************************************************************##############################################################################################*************************++++==----::::::::::::::::----------------====+++++======-------::::::----====+++++++**++==--::::::::::::::::::::--------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---------------+#%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%##*###########**********######################################################################################************************************************************************##################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################**
+*****************************************************************************************************************+++++++++++++++++++++++++++****************************************************************************************************************************************************#############################********+++++++++===========================++++++++++++++++++++++++++++++++++++++++++++++++++++++=================================================================================++++++++++***++++++++++++++++++++++++++++++++++++++++++++***********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++*#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###################################################**********+++++++++++++++++==----------------------------------------------------=+=------------++++++=--------------------=++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==================================================================================================================================================================================================================+++************************************************************+................................:::::------------------------------*****+=********************************************+**+++*****####+-------------::::::::::::::::::::::::::::::::::::::::::::::::::--------------------------------------------------===+++++++++++++++++++++++*++++==-------------===++++**********************************************************++***************************************************************************************************************************************************#######################*###############*************************************************##################*******##################################################################################################################################################***************************************************************************####******************************************************************************************************************##############################################################################################**************************+++==----::::::::::::::::----------------====+++++++++===-------::::-----====+++++++**++==--::::::::::::::::::::--------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::----------------+#%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%##*###########***********#####################################################################################************************************************************************##################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################**
+++*******************************************************************************************************************++++++++++*+++++++++++*****************************************************************************************************************************************************#############################*******+++++++++==========================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==============================================================================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++*##%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###################################################***********++++++++++++++++++==--------------------------------------------------=+=-----------+++++++---------------------=+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=============================================================================================================================================================================================================+++**************************************************************+.................................:::::------------------------------******-+*********************************************++=+******####-:--::-:---::::::::::::::::::::::::::::::::::::::::::::::::::::--------------------------------------------------===++++++++++++++++++++++**++++==-----::-----===++++***********************************************************++***************************************************************************************************************************************************#######################################*************************************************##################*+*****##################################################################################################################################################************************************************************************************************************************************************************************************************################################################################################################*************************+++==-----:::::::::::::------------------====++++++++++===---------------====++++++***+++=---::::::::::::::::::---------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::------------------+#%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#*############************############################################################################################*****************************************************************#################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################**
++++*******************************************************************************************************************+++++++++++++++++++++******************************************************************************************************************************************************###########################*******++++++++===========================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=============================================================================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****************************************************************************++++++++++++++++++++++++++++++***++**********#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###################################################************++++++++++++++++++==-------------------------------------------------=+-----------=++++++=--------------------==++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==========================================================================================================================================================================================================++++****************************************************************-.................................:::::------------------------------+*****==********************************************++++++******###=:----:---::::::::::::::::::::::::::::::::::::::::::::::::::::::-------------------------------------------------===++++++++++++++++++++++***+++==-----::----===+++++***********************************************************++***************************************************************************************************************************************************#######################################**************************************************#################*******##################################################################################################################################################************************************************************************************************************************************************************************************************################################################################################################*************************+++==------:::::::::----------------------====+++++++++===---------------===+++++++***+++=---::::::::::::::::::---------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::------------------+#%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%###############************##########################################################################################******************************************************************#################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################**
+++++********************************************************************************************************************++++++++++++++++++********************************************************************************************************************************************************#########################*******++++++++==========================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===========================================================================+++++++++++++++++===============================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********************************************************************************+++++++++*******************************#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####################################################************+++++++++++++++++++==-----------------------------------------------==----------==+++++=---------------------=+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===========================================================================================================---==========================================================================================++++*******************************************************************:.................................::::::----------------------------:+*****+-+******************************************+++++=+*******##*--:--:-:-::::::::::::::::::::::::::::::::::::::::::::::::::::::-------------------------------------------------===++++++++++++++++++++++****+++==----::----===+++++**********************************************************+++***************************************************************************************************************************************************######################################***************************************************##################******##################################################################################################################################################************************************************************************************************************************************************************************************************################################################################################################**************************++===-----::::::::------------------------======+++++====---------------===+++++++***+++=---::::::::::::::::::---------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::------------------+#%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@###############*************#########################################################################################*****************************************************************##################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################**
++++++********************************************************************************************************************++++++++++++++**************************************************************************************************************************************************************####################********++++++++==========================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=============================================================================+++++++++========================================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***************************************************************************************************************************##%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%###################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######################################################************++++++++++++++++++++==---------------------------------------------==---------==+++++=----------------------=+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=====================================================================================================------------===================================================================================++++**********************************************************************=.................................::::::-----------------------------=*****+-=**************************************++++++++++=+*******##-----:-::---:::::::::::::::::::::::::::::::::::::::::::::::::::-------------------------------------------------===+++++++++++++++++++++++****++==---:::----===++++++**************++++++++***********************************++***************************************************************************************************************************************************#######################################***************************************************##################*******#################################################################################################################################################************************************************************************************************************************************************************************************************################################################################################################**************************+++==------::::----------------------------==============----------------==++++++****+++=---::::::::::::::::::---------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-------------------+#%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%*#############**************############################################################################################*************************************************************##################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################**
+++++++********************************************************************************************************************+++**++++++**********************************************************************************************************************************************************************#############*******++++++++++==========================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=================================================================================================================================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********************************************************************************************************************####%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%####################%%%%%%%%%%%#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######################################################*************+++++++++++++++++++++==------------------------------------------==---------====++++=----------------------=+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++============================================================================================-------------------===============================================================================++++************************************************************************#*:.................................:::::-----------------------------=******--+***********************************++++++++++++=+********#+:-:---------------::::::::::::::::::::::::::::::::::::::::::::------------------------------------------------====+++++++++++++++++++++++*****++=---:::---===+++++++++++++++++++++++++++++++++******************************+++***************************************************************************************************************************************************#######################################****************************************************##################******#################################################################################################################################################************************************************************************************************************************************************************************************************################################################################################################***************************++===--------------------------------------=============----------------==+++++*****+++=---::::::::::::::::::---------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-------------------+#%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%##*############*************#############################################################################################************************************************************##################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################**
++++++++*************************************************************************************************************************+++******************************************************************************************************************************************************************************************++++++++++===========================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++================================================================================================================================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**************************************************************************************************************##%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%****#%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%###%%##############%%%%%%%%%%%##%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########################################################*##**********++++++++++++++++++++++==----------------------------------------==--------=======+=----------------------=++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=========================================================================================-----------------------=========================================================================++++******************************************************************************=.................................::::::-----------------------------******=:=*******************************++++++++++++++++==+*******#*--:--:--------------:::::::::::::::::::::::::::::::::::::::::-------------------------------------------------====+++++++++++++++++++++++*****++==--:::---===++++++++++++++++++++++++++++++++++++++*************************+++***************************************************************************************************************************************************#######################################****************************************************##################*++**##################################################################################################################################################************************************************************************************************************************************************************************************************#################################################################################################***************************++===----------------------------------------==========----------------==+++++*****+++=---::::::::::::::::::---------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-------------------+#%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%##*############*************##############################################################################################************************************************************#################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################**
++++++++*********************************************************************************************************************************************************************************************************************************************************************************************************************+++++++++=============================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++================================================================================================================================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****************************************************************************************************###%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#++*+++#%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######%%######%%%%%%%%%%%###%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##########################################################*************++++++++++++++++++++++===-------------------------------------=--------==========----------------------=+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++========================================================================================-------------------------=====================================================================++++**********************************************************************************-.................................:::::---------------------------:-******+:-+***************************++++++++++++++++++++=+********#=:---:---------------:::::---::::::::::::::::::::::::::::::::--------------------------------------------------===+++++++++++++++++++++++******+==--:::---===++++++++++++++++++++++++++++++++++++++++++*********************+++***************************************************************************************************************************************************#######################################****************************************************###################*+**##################################################################################################################################################************************************************************************************************************************************************************************************************#################################################################################################***************************+++====---------------===========----------------====------------------==++++******+++=---::::::::::::::::::---------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-------------------+#%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@###############*************##############################################################################################*************************************************************##*#############################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################**
+++++++++******************************************************************************************************************************************************************************************************************************************************************************************************************+++++++++==============================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=================================================================================================================================++++++++++++++++++++==========+++++++++++++++++++++++++++++++********************************************************************************************#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#*+++++++*%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####%%%%%%%%##%%%%%%%%%%%%##%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%############################################################*##**********++++++++++++++++++++++++==-------------------------------------------==========----------------------=+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=======================================================================================--------------------------=================================================================++++***************************************************************************************:................................::::::--------------------------:-+*****+-:+*************************++++++++++++++++++++++=+*********+---------------------:::-----:::::::::::::::::::::::::::::::--------------------------------------------------===+++++++++++++++++++++++******++=--:::---===++++++++++++++++++++++++++++++++++++++++++++******************++++***************************************************************************************************************************************************#######################################****************************************************###################*+**##################################################################################################################################################************************************************************************************************************************************************************************************************##################################################################################################***************************++++================================----------------------------------==++++******+++=---::::::::::::::::::---------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-------------------=#%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#*#############*************##############################################################################################*****************************************************************############################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################**
++++++++++****************************************************************************************************************************************************************************************************************************************************************************************************************+++++++++=============================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==++=========================================================================================================================++++++++++++++++====================+++++++++++++++++++++++++++**************************************************************************************#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##*++*++++++++*******++++++++++#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####%%%%%%%%%#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##%%%%%%%%%###############################################################************++++++++++++++++++++++++==-----------------------------------------=========-----------------------=++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==================================================================================----------------------------====-=======================================================+++++******************************************************************************************+................................:::::::--------------------------:+******=:=**********************++++++++++++++++++++++++++=+*********-:------------------------------------------------------------------------------------------------------------===+++++++++++++++++++++++******++=--::::--===++++++++++++++++++++++++++++++++++++++++++++++****************++++**************************************************************************************************************************************************########################################*****************************************************###################+**##################################################################################################################################################***********************************************************************************************************************************************************************************************####################################################################################################****************************++++==================+++++==========------------------------------===++++******+++=---::::::::::::::::::----------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::------------------=#%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%###*############***********#################################################################################################**********************************************************#################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################*
**+++++***********************************************************************************************************************************************************************************************************************************************************************************************+++++++++++++++++++++++++++++=============================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=++======================================================================================================================+++++++++++++========================+++++++++++++++++++++++++++******************************************************************************++*#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#**++++++++++++++++++++++++++++++++*%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####%%%%%%%%###%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######%%%%%%################################################################**#####******++++++++++++++++++++++++==--------------------------------------=========------------------------=+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=================================================================================-----------------------------====-==================================================++++++***********************************************************************************************-................................::::::--------------------------:+******=:-+*******************++++++++++++++++++++++++++++=++********=:------------------------------------------------------------------------------------------------------------===+++++++++++++++++++++++******++=--::::--====++++++++++++++++++++++++++++++++++++++++++++++***************+++***************************************************************************************************************************************************########################################*****************************************************###################***##################################################################################################################################################***********************************************************************************************************************************************************************************************#####################################################################################################******************######*****+++++++++++++++++++++++++++++=========---------------------------===++++******+++=---::::::::::::::::::----------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::------------------=#%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%################***********##################################################################################################*********************************************************#################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################*
****************************************************************************************************************************************************************************************************************************************************************************************************++++++++++++++++++++++++++++++==============================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=============================================================================================================++++++++==================================++++++++++++++++++++++*******************************************************************+****+++*##%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##*+++++++++++++++++++++++++++++++++++++*#%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###%%%%%%%%%%##%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########%%%%%##################################################################*************+++++++++++++++++++++++++==-----------------------------------==========-----------------------==++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++================================================================================-----------------------------=====================================================+++++****************************************************************************************************:...............................:::::::-------------------------:=******+::=*************+++++++++++++++++++++++++++++++++++=+********+-------------------------------------------------------------------------------------------------------------===++++++++++++++++++++++++*****++=-:::::---=======+++++++++++++++++++++++++++++++++++++++++++*************++++***************************************************************************************************************************************************########################################*****************************************************###################*+**#################################################################################################################################################**********************************************************************************************************************************************************************************************########################################################################################################***************#########******+++++++++++++++++++++++++++++==========-----------------------===++++******++==---::::::::::::::::::----------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::------------------=#%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#*##############***********######################################################################################################******************************************************################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################*
****************************************************************************************************************************************************************************************************************************************************************************************************+++++++++++++++++++++++++++=================================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=============================================================================================================+++==+=======================================+++++++++++++++++++********************************************************************+++**#%%%%%%%%%%%%%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##**+++++++++++++++++++++++++++++++++++++++++++*#%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###%%%%%%%%%%%%#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########%%%%%%####################################################################*************+++++++++++++++++++++++++==--------------------------------==========------------------------=+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==============================================================================------------------------------===================================================+++***++***************************************************************************************************=................................::::::-------------------------:=****+*+::-+*+********+++++++++++++++++++++++++++++++++++++=++********=--------------------------------------------------------------------------------------------------:::::-----===++++++++++++++++===+++++*****+==-::::::--==================================+++++++++++++++++************++++***************************************************************************************************************************************************########################################*****************************************************####################***#################################################################################################################################################**********************************************************************************************************************************************************************************************##########################################################################################################************############***************+++++******++++++++++=========---------------------===++++*****+++==--::::::::::::::::::::---------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::------------------=#%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#*###############**********########################################################################################################****************************************************################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################*
***************************************************************************************************************************************************************************************************************************************************************************************************+++++++++++++++++++++++++++==================================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===========================================================================================================================================================++++++++++++++++++++***************************++++++++*******************************#%%%%%%%%%%%%%%@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###***++++++++++++++++++++++++++++++++++++++++++++++++**#%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#########%%%%%%########################################################################***********+++++++++++++++++++++++++===----------------------------===========------------------------=+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++============================================================================-------------------------------=================================================+++++**++**************************************************************************************************#**-...............................:::::::----------------------:-:-****+**-::+++***++++++++++++++++++++++++++++++++++++++++++==+********+-------------=====================================================-----------------------------:::::::::----====++++++++++==========++++****+=--::::::--=======================================++++++++++++++*********++++****************************************************************************************************************************************************#######################################*******************************************************###################***#################################################################################################################################################**********************************************************************************************************************************************************************************************#########*************#####################################################################################***********###############**************************+++++++++==========------------------====+++******++==--::::::::::::::::::::---------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::------------------=#%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%*################*********#########################################################################################################*****************************************************##############################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################*
***************************************************************************************************************************************************************************************************************************************************************************************************++++++++++++++++++++++++=====================================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===========================================================================================================================================================+++++++++++++++++++++++++*******************++++++++++++++++**********************##%%%%%%%%%%%@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##****++++++++++++++++++++++++++++++++++++++++++++++++++++++++**#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#########%%%%%%######################################################################************#**++++==+++++++++++++++++++++==-------------------------============-----------------------==+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===========================================================================------------------------------=================================================++++***********************************************************************************************************+................................:::::::---------------------:::-***+**+=::=+**+++++++++++++++++++++++++++++++++++++++++++++=+*********=------==============================================================---------------------:::::::::::::::----========================+++***++=--::::::---========================================++++++++++++++*******++++****************************************************************************************************************************************************#######################################*******************************************************###################***#################################################################################################################################################*********************************************************************************************************************************************************************************************#########*****************###################################################################################*********####################*************************+++++++++========-----------------====+++******++==--::::::::::::::::::::---------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::------------------=#%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%##################*******############################################################################################################***************************************************###############################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################
**************************************************************************************************************************************************************************************************************************************************************************************************+++++++++++++++++++++++=======================================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++============================================================================================================================================================++++++++++++++++++++++++++++++++**++++++++++++++++++++++++++++***************##%%%%%%%%%%%%%@@%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###****##%%%%%%####%%%%%%%%%%%%%%%%%%###*****************+++++++++++++++++++++++++++++++++++++++++++++++++++**#%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##########%%%%%%#########################################################################***************++++++++++++++++++++++++++==----------------------============------------------------==++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==========================================================================-------------------------------==============================================+++++++************************************************************************************************************=................................:::::::--------------------::::+**+*+++::-++*+++++++++++++++++++++++++++++++++++++++++++++=++********+---=======================================+++++++++++++++=============-----------------:::::::::::::::::----========================++++**++=--:::::::---=========================================+++++++++++++******++++****************************************************************************************************************************************************#######################################*******************************************************####################**#################################################################################################################################################******************************************************************************************************************************************************************************##*************########***************************###########################################################################********#########################***********************++++++++++======---------------====+++******++==--::::::::::::::::::::---------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-------------------#%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@###################******###############################################################################################################*************************************************##############################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################
**************************************************************************************************************************************************************************************************************************************************************************************************++++++++++===================================================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++============================================================================================================================================================++=+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********##%%%%%%%%%%%%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##***++++++++++*************##%%%####*****************************+**+++++++++++++++++++++++++++++++++++++++++++++++***#%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###########%%%%%%###########################################################################***************++++++++++++++++++++++++++==-------------------==========+==------------------------=++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=========================================================================--------------------------------============================================+++++**+**************************************************************************************************************:...............................:::::::-------------------:::::+*++*+*+:::+++++++++++++++++++++++++++++++++++++++++++++++++=+*********=-=======++++++++++++++++++++++++++++++++++++++++++++++++++++++++======----------------::::::::::::::::::---=========================+++**++=--::..:::---===========================================++++++++++++****+++++****************************************************************************************************************************************************#######################################*******************************************************####################**#################################################################################################################################################******************************************************************************************************************************************************************************###************#######*******************************########################################################################********#########%%#################************************++++++++=====--------------====+++*****+++==--::::::::::::::::::::---------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-------------------#%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#*#################******###############################################################################################################******************************************#******##############################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################
**************************************************************************************************************************************************************************************************************************************************************************************************++++++++=====================================================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==========================================================================================================================================================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*++***#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##**++++++++++++++++++********************************************************+*+++++++++++++++++++++++++++++++++++++++++++**#%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###########%%%%%%%#############################################################################****************++++++++++++++++++++++++===----------------==========+====-----------------------=++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=======================================================================--------------------------------=====================================++==++++++++******************************************************************************************************************+................................:::::::-------------------::::+*++++++:::-+++*++++++++++++++++++++++++++++++++++++++++++++=++********+======+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++======------------:::::::::::::::::::::---=========================++++*++=--:....::----============================================+++++++++++**+++++****************************************************************************************************************************************************########################################********************************************************####################*#################################################################################################################################################******************************************************************************************************************************************************************************###************#####********************************##########################################################################*******########%%%%%##################***********************+++++++====--------------====+++*****+++==--::::::::::::::::::::---------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::------------------*%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%##########################################################################################################################################************************************************############################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################
*************************************************************************************************************************************************************************************************************************************************************************************************+++++++++====================================================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=========================================================================================================================================================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##*+++++++++++++++++++++++++***********************************************************+++++++++++++++++++++++++++++++++++++++++**##%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###########%%%%%%###############################################################################*****************++++++++++++++++++++++++==---------------===================================--==+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=======================================================================-----------------------------=============================+++++++++++++++++++++*********************************************************************************************************************-................................:::::::-----------------:::::+*++++++-:::+++++++++++++++++++++++++++++++++++++++++++++++++=+*********+==++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++====------------:::::::::::::::::::::---=========================+++++++=--:....:::----===========================================++++++++++++++++++****************************************************************************************************************************************************########################################********************************************************####################*#################################################################################################################################################******************************************************************************************************************************************************************************##**************####********************************###########################################################################******#########%%%%####################***********************++++++===---------------===+++*****+++==--::::::::::::::::::::---------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::------------------*%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#############################################################################################################################################********************************************#############################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################
*************************************************************************************************************************************************************************************************************************************************************************************************+++++++++====================================================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=======================================================================================================================================================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##***++++++++++++++++++++++++++++++++***********************************************************+++++++++++++++++++++++++++++++++++++++**#%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##########%%%%%%#################################################################################*******####*******+++++++++++++++++++++++===-----------========================================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=======================================================================----------------------------=-=======================++++++++++++++++++++**************************************************************************************************************************#*:................................:::::::----------------:::::++++++++-..:=++++++++++++++++++++++++++++++++++++++++++++++++=++*********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++====----------:::::::::::::::::::::::---========================+++++++=--:....:::-----===========================================+++++++++++++++++****************************************************************************************************************************************************########################################********************************************************######################################################################################################################################################################******************************************************************************************************************************************************************************##**************************************************###########################################################################******#########%%%%%#####################***********************+++++===--------------===++++****+++==--::::::::::::::::::::---------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::------------------*#%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%##############################################################################################################################################******************************************##############################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################
*************************************************************************************************************************************************************************************************************************************************************************************************++++++++=====================================================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++======================================================================================================================================================++++++++++++++++++++++++++++++++++++*++++++++++++++++++++++++*#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##****++**+++++++++++++++++++++++++++++++*************************************************************++++++++++++++++++++++++++++++++++++++**#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#########%%%%%%%#############################################################################################*********++++++++++++++++++++++=========-=========================================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++======================================================================---------------------------=======================+++++++++++++++++++++*******************************************************************************************************************************=.................................::::::::--------------:::::=+++++++=...-+++++++++++++++++++++++++++++++++++++++++++++++++=+*********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++====---------:::::::::::::::::::::::----===============---=====+++++++=--:.....::------===========================================+++++++++++++++*****************************************************************************************************************************************************######################################%*********************************************************######################################################################################################################################################################********************************************************************************************************************************************************************************************************************************##############################################################################******########%%%%%%######################**********************++++===--------------===++++*****++==--::::::::::::::::::::---------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::----------------*#%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%################################################################################################################################################****************************************##############################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################
**************************************************************************************************************************************************************************************************************************************************************************************************++++++++====================================================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++====================================================================================================================================================+++++++++++++++++++++++++++++++++++**++++++++++++++++++++++*#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#****+*********++++++++++++++++++++++++++++++++*************************************************************++++++++++++++++++++++++++++++++++++*#%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##########%%%%%%##################################################################################################**###***+++++++++++++++++++++==============================================+==++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=====================================================================-------------------------=================+++++++++++++++++++++++++************************************************************************************************************************************-................................:::::::::-------------:::::=*+++++++:..:+++++++++++++++++++++++++++++++++++++++++++++++++=+*********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++====---------:::::::::::::::::::::::----========-----------=====++++++==-:.....::------============================================++++++++++++++*****************************************************************************************************************************************************#######################################*********************************************************######################################################################################################################################################################*******************************************************************************************************************************************************************************************************************************###################################################################**##########*****#########%%%%%%%#########################*******************+++===--------------====+++*****++==--::::::::::::::::::::---------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::----------------*#%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#################################################################################################################################################*************************************###############################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################
**************************************************************************************************************************************************************************************************************************************************************************************************++++++++===================================================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===================================================================================================================================================+++++++++++++++++++++++++++++++++++**+++++++++++++++++++++#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#*******************+++++++++++++++++++++++++++++++***************************************************************+++++++++++++++++++++++++++++++++*#%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%############%%%%%%##############################################################################################****######*****+++++++++++++++++++++========================================++++===++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=======================================================================---------------------=========+++++++++++++++++++++++++++++*+***********************************************************************************************************+++*+************************+.................................::::::::::---------:::::::=*+++++++:...=+++++++++++++++++++++++++++++++++++++++++++++++++=+*********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++====--------:::::::::::::::....::::------------------------====++++++==-:.....::-------=============================================+++++++=++++*****************************************************************************************************************************************************#######################################**********************************************************#####################################################################################################################################################################**************************************************************************************************************************************************#***************************************************************************###################################################################*****########*****#########%%%%%%%%##########################*****************+++===--------------====+++*****++==--::::::::::::::::::::---------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---------------+#%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%####################################################################################################################################################**********************************###############################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################
**************************************************************************************************************************************************************************************************************************************************************************************************+++++++++++================================================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==================================================================================================================================================+++++++++++++++++++++++++++++++++++**+++++++++++++++++++*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%**************************+++++++++++++++++++++++++++++***************************************************************++++++++++++++++++++++++++++++++*#%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%############%%%%%%%#########################################################################################################*****++++++++++++++++++++++==========================+++=======++++++===++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=======================================================================--------------============++++++++++++++++++++++++++***********************************************************************************************************************++************************=................................::::::::::::::---:::::::::=*+++++++:...=+++++++++++++++++++++++++++++++++++++++++++++++++=++********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++====-------:::::::::::::........:::------------------------====++++++==-::....::--------=============================================++++++++++******************************************************************************************************************************************************#######################################**********************************************************#####################################################################################################################################################################**************************************************************************************************************************************************####***********************************************************************###################################################################*******########*############%%%%%%%%############################***************+++===---------------===+++*****++==--::::::::::::::::::::---------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---------------+#%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%######################################################################################################################################################********************************###############################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################
***************************************************************************************************************************************************************************************************************************************************************************************************++++++++++================================================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==================================================================================================================================================+++++++++++++++++++++++++++++++++++**++++++++++++++++++#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#*********************************+++++++++++++++++++++++++***************************************************************+++++++++++++++++++++++++++++++*#%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#############%%%%%%###########################################################################################################*****++++++++++++++++++++++++===================++++++++++++++++++++===+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=======================================================================--------------==========+++++++++++++++++++++++***************************************************************************************************************+++**********+++**********************#*:................................:::::::::::::::::::::::::-*+++++++-...-++++++++++++++++++++++++++++++++++++++++++++++++++=++********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++====-------:::::::::::..........:::------------------------====+++++++=-::....:::-------===============================================+++=+=++******************************************************************************************************************************************************#######################################**********************************************************#####################################################################################################################################################################************************************************************************************************************************************************#######**********************************************************************##################################################################********#####################%%%%%%%%###############################*************++===---------------===+++*****++==--::::::::::::::::::::---------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---------------+#%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#########################################################################################################################################################*****************************###############################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################
***************************************************************************************************************************************************************************************************************************************************************************************************+++++++++++===============================================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++============================================================================================================================================+++++++++++++++++++++++++++++++++++++++**++++++++++++++++*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*************************************++++++++++++++++++++++++++******************************************************************+++++++++++++++++++++++++++*#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#############%%%%%%###########################################################################################################*****+++++++++++++++++++++++++++===============++++++++++++++++++++++==++++++++++++++++++++++++++++====++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++======================================================================-------===========++++++++++++++++++********************************************************************************************************************++************+++++******+**************#*#+................................:::::::::::::::::::::::::-++++++++=...:+++++++++++++++++++++++++++++++++++++++++++++++++++++*********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++====-------:::::::::............:::-------------------------===+++++++=-::....:::-------===============================================++====++*****************************************************************************************************************************************************########################################**********************************************************#####################################################################################################################################################################***********************************************************************************************************************************************###**######******************************************************************#################################################################**********####################%%%%%%%%%###################################*********+++===--------------===+++*****++==--::::::::::::::::::::---------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---------------+#%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%##########################################################################################################################################################************************##################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################
******************************************************************************************************************#####****************************************************************************************************************************************************************************+++++++++++===============================================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=========================================================+++++++===========================================================================+++++++++++++++++++++++++++++++++++++++**++++++++++++++*#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#****************************************++++++++++++++++++++++++++******************************************************************+++++++++++++++++++++++++++#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@%%@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%@%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#############%%%%%%%############################################################################################################******+++++++++++++++++*****+++++==============+++++++++++++++++++++++++++++++++++++++++++++++++==========+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===========================================================================---=======++++++++++++++***********************************************************************************************************************+++++++*********+++++++***********************#*-...............................:::::::::::::::::::::::::-++++++++=....=++++++++++++++++++++++++++++++++++++++++++++++++++++*********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=====-------::::::::..............::-------------------------===+++++++=--:....:::-------=====================================================++*****************************************************************************************************************************************************#######################################***********************************************************#####################################################################################################################################################################************************************************************************************************************************************************##########*************************************************************##################################################################**************###################%%%%%%%%%%######################################*******+++====------------===+++*****++==---:::::::::::::::::::----------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---------------+#%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%###########################################################################################################################################################***********************##################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################
+++***************************************************************************************************************############******************************************##**************************************************************************************************************************+++++++++++==============================================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++========================================================++++++++++++++++++++++++===========================================================+++++++++++++++++++++++++++++++++++++++**+++++++++++++#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#**********************************************++++++++++++++++++++++++++*******************************************************************++++++++++++++++++++++%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@%@@@%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@%%%%%%%%%%%%%%%%@%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###############%%%%%%%##############################################################################################################******+++++++++*****++++*****+++==============+++++++++++++++++++++++++++++++++++++++++++++++============++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++========+++++++===================================================================+++++++++++************************************************************************************************************++************+++++++++++****++++++++++************************#*:..............................:::::::::::::::::::::::::-+++++++++....=+++++++++++++++++++++++++++++++++++++++++++++++++++++*********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=====-------:::::::...............::------------------------====+++**++==-::...:::-------====================================================+++*****************************************************************************************************************************************************#######################################***********************************************************#####################################################################################################################################################################**************************************************************************************##*********************************************************#########************************************************************##############################################################********************###############%%%%%%%%%%%%%########################################******+++=====----------===+++*****++===--:::::::::::::::::::----------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---------------=#%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%###############################################################################################################################################################*******************##################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################
++++**************************************************************************************************************##############**************************************####***************************************************************************************************************************+++++++++++=============================================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=====================================================+++++++++++++++++++++++++++=========================================================+++++++++++++++++++++++++++++++++++++++**+++++++++++*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*****************************************************++++++++++++++++++++++++********************************************************************++++++++++++++++++#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%################%%%%%%#################################################################################################################*****+++****+***++***++*******++=============+++++++++++++++++++++++++++++++++++++++++++++++=======++=++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=============================================================+++++++++++***************************************************************************************************************++++********+++++++++++++++++++++++++++*****+**+**************#*#=..............................::::::::::::::::::::::::::+++++++++.. .-+++++++++++++++++++++++++++++++++++++++++++++++++++++*********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=====--------::::::...............:::------------------------====+++**+++=-::....::-------====================================================++++***************************************************************************************************************************************************########################################***********************************************************#####################################################################################################################################################################***********************************************************************************#########****************************************************###########********************************************************###############################################################**********************#############%%%%%%%%%%%%%%%##########################################*****++++========---====++++*****+++==--::::::::::::::::::-----------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---------------=#%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%###############################################################################################################################################################******************##################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################
+++++**************************************************************************************************************###############***********************************#####***************************************************************************************************************************++++++++++++============================================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==================================================+++++++++++++++++++++++++++++++++=====================================================+++++++++++++++++++++++++++++++++++++++**++++++++++#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#+++++++**+***********************************************+++++++++++++++++++++++++*******************************************************************++++++++++++++#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%################%%%%%%%##################################################################################################################*******************************++==========++++++++++++++++++++++++++++++++++++++++++++++++=====++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=========================================================+++++++++++*****************************************************************************************************************+++++++++++++++++++++++++++++++++++++++**********************#***#-.............................::::::::::::::::::::::::::+++++++++.. .-++++++++++++++++++++++++++++++++++++++++++++++++++++++*********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=======--------:::::................:::------------------------===++++**+++=--:....::--------===================================================+++++**************************************************************************************************************************************************########################################************************************************************###################################################################################################################################################################***********************************************************************************###########************************************************################****************************************#####*****##################################################################***********************############%%%%%%%%%%%%%%%%############################################*****+++++============+++*******++==---:::::::::::::::::-----------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---------------=#%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%################################################################################################################################################################*****************##################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################
+++++++************************************************************************************************************################*********************************######***************************************************************************************************************************+++++++++++++===========================================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=========================+++====================+++++++++++++++++++++++++++++++++++++++++++++++========================================+++++++++++++++++++++++++++++++++++++++**++++++++*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*+++++++++++++************************************************+++++++++++++++++++++++*********************************************************************++++++++++#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##################%%%%%%%#####################################################################################################################*************++**************++++=======+++++++++++++++++++++++++++++++++++++++++++++++===+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++======================================================++++++++++++************************************++++++********************************************************++***************+++++++++++++++++++++++++++++++++++++++*****+***+***********#**#**.............................::::::::::::::::::::::::::+++++++++: .:++++++++++++++++++++++++++++++++++++++++++++++++++++++*********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++=========---------:::::................:::------------------------===++++**+++==-::...::--------===================================================+++++**************************************************************************************************************************************************########################################************************************************************###################################################################################################################################################################***********************************************************************************###########************************************************#################************************************##############################################################################************************###########%%%%%%%%%%%%%%%%%%############################################******+++++++======++++********++===--:::::::::::::::::-----------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---------------=#%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#################################################################################################################################################################************#**##################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################
+++++++++***********************************************************************************************************#################*******************************######****************************************************************************************************************************+++++++++++++==========================================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=======================+++++++++================+++++++++++++++++++++++++++++++++++++++++++++++++======================================+++++++++++++++++++++++++++++++++++++++**+++++++#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*+++++++++++++++****+++********************************************++++++++++++++++++++***********************************************************************++++++*%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###################%%%%%%%#######################################################################################################################******************************+++++=+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===================================================++++++++++++************************************+++++++++*******************************************************++**************++++++++++++++++++++++++++++++++++++++++*********+**********#*****#=............................::::::::::::::::::::::::::+++++++++- .:++++++++++++++++++++++++++++++++++++++++++++++++++===++*********++++++++++++++++++++++++++++++++++++++++++++++++++++=============---------:::::................:::------------------------===++++**+++==-::...::--------===================================================+++++*************************************************************************************************************************************************#########################################************************************************************###################################################################################################################################################################************************************************************************************###########**********************************************#####################********************************#############################################################################**************************###########%%%%%%%%%%%%%%%%%%###############################################*******++++++++++++*********+++==---::::::::::::::::-----------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---------------=*%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%###################################################################################################################################################################*************##################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################
+++++++++++**********************************************************************************************************#################*****************************#######****************************************************************************************************************************++++++++++++++=========================================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=====================++++++++++++++============++++++++++++++++++++++++++++++++++++++++++++++++++======================================+++++++++++++++++++++++++++++++++++++++**++++++#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*+++++++++++++++++++++++++**********************************************++++++++++++++++*************************************************************************+++*%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@%@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###################%%%%%%%###########################################################################################################################******************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==============================================++++++++++++++*************************************+++++++++++*******************************************************+++**********++++++++++++++++++++++++++++++++++++++++++*******++*************#*****:...........................::::::::::::::::::::::::::+++++++++=....+++++++++++++++++++++++++++++++++++++++++++++++======++*********+++++++++++++++++++++++++++++++++++++++++++++++++===============----------:::::................:::------------------------===++++***+++=-::...:::-------==================================================++++++*************************************************************************************************************************************************########################################*************************************************************###################################################################################################################################################################*************************************************************************************##########**********************************************#######################****************************##############################################################################***************************###########%%%%%%%%%%%%%%%%%%%################################################*********+++++++***********++===---:::::::::::::::-----------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::----------------*%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%####################################################################################################################################################################**#*********##################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################
++++++++++++***********************************************************************************************************#################***************************#######**************************************************************************************************************************+******+++++++++++=====================================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==================+++++++++++++++++++====++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===================================++++++++++++++++++++++++++++++++++++++++*+++++#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*++++++++++++++++++++++++++++++++*******************************************++++++++++++*****************************************************************************%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@%@@%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@%%%%@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%@@@%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######################%%%%%%%#############################################################################################################################****+***************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++============================++++++++++++++++++++++++++++*************************************++++++++++++++********************++********************************++++********+++++++++++++++++++++++++++++++++++++++++++++***************************............................:::::::::::::::::::::::::+++++++++=....=+++++++++++++++++++++++++++++++++++++++++++==========++*********++++++++++++++++++++++++++++++++++++++++++++++===============------------:::::................::-------------------------===++++***+++=--:...:::--------=================================================+++++++************************************************************************************************************************************************########################################*************************************************************###################################################################################################################################################################**************************************************************************************#######************************************************########################************************#####################################%%%%%%%%%##################################*****************************##########%%%%%%%%%%%%%%%%%%%%###################################################***********************+++==----:::::::::::::------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::----------------*%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%####################################################################################################################################################################***************##############################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################
++++++++++++************************************************************************************************************################****************************######**********************************************************************************************************************************+++++++++++====================================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===================================++++++++++++++++++++++++++++++++++++++++*++++#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*++++++++++++++++++++++++++++++++++++********************************************+++++++*****************************************************************************%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@%%@@@@%@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@%%%@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########################%%%%%%%###############################################################################################################################**********************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==================++++++++++++++++++++++++++++*******************************++++****+++++++++++++++********************+++*******************************+++++****+++++++++++++++++++++++++++++++++++++++++++++++++*************************#=...........................:::::::::::::::::::::::::++++++++++....=+++++++++++++++++++++++++++++++++++++++++============++**********++++++++++++++++++++++++++++++++++++++++++=================-------------:::::................::-------------------------===++++***+++==-::..:::--------=================================================+++++++************************************************************************************************************************************************########################################*************************************************************###################################################################################################################################################################**************************************************************************************#######***********************************************##########################***********************#################################%%%%%%%%%%%%#################################******************************###########%%%%%%%%%%%%%%%%%%%%#######################################################********************+++==----::::::::::::-------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---------------*#%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#####################################################################################################################################################################***************#############################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################
+++++++++++++*************************************************************************************************************################**************************######************************************************************************************************************************************++++++++++++=================================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++================================+++++++++++++++++++++++++++++++++++++++*+++*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*++++++++++++++++++++++++++++++++++++++++++++************************************************************************************************************************#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#########################%%%%%%%##################################################################################################################################*************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==============++++++++++++++++++++++++++++*********************************++++++++++++++++++++++++*******************+++++*******************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********************#*:..........................:::::::::::::::::::::::::+++=++++++....=++++++++++++++++++++++++++++++++++++++================++*********+++++++++++++++++++++++++++++++++++++++=================----------------:::::...............:::-------------------------===+++++**+++==-:::.:::---------================================================++++++++***********************************************************************************************************************************************########################################*************************************************************###################################################################################################################################################################************************************************************************************#########***********************************************###########################********************##############################%%%%%%%%%%%%%%%%##################################******************************###########%%%%%%%%%%%%%%%%%%%%%####################################################################******+++===----::::::::::--------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---------------*#%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%######################################################################################################################################################################***************############################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################
+++++++++++++++************************************************************************************************************###############***************************#####************************************************************************************************************************************+++++++++++++==============================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===============================+++++++++++++++++++++++++++++++++++++++**+*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#++++++++++++++++++++++++++++++++++++++++++++++++********************************************************************************************************************#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#########################%%%%%%%%#####################################################################################################################################******************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===========+++++++++++++++++++++++++++++*********************************+++++++++++++++++++++++++*******************+++++*******************+***********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******+***************#+...........................::::::::::::::::::::::::+++=++++++:...-++++++++++++++++++++++++++++++++++++==================+++*********++++++++++++++++++++++++++++++++=+===================------------------:::::...............:::------------------------=====++++++++++=--::::::---------================================================++++++++***********************************************************************************************************************************************########################################*************************************************************##################################################################################################################################################################************************************************************************************##########***********************************************############################****************###########################%%%%%%%%%%%%%%%%%%%%%%################################********************************##########%%%%%%%%%%%%%%%%%%%%%%%%#####################################################################****+++===----::::::::---------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---------------+#%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%######################################################################################################################################################################***************############################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################
++++++++++++++++*************************************************************************************************************##############**************************####***************************************************************************************************************************************++++++++++++++==========================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==============+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++============================++++++++++++++++++++++++++++++++++++++++*+*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#++++++++++++++++++++++++++++++++++++++++++++++++++++****************************************************************************************************************#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%@@@@%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###########################%%%%%%%%########################################################################################################################################************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++====++++++++++++++++++++++++++++++++++***********************************++++++++++++++++++++++++++*******************+++++*******************++**********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***********************=..........................::::::::::::::::::::::::+++==+++++-...-+++++++++++++++++++++++++++++++++======================++**********++++++++++++++++++++++++++========================--------------------:::::...............:::------------------------=====++++++++++=--::::::---------================================================++++++++**********************************************************************************************************************************************#########################################*************************************************************##################################################################################################################################################################************************************************************************************#########***********************************************##############################*************#########################%%%%%%%%%%%%%%%%%%%%%%%%%%###############################*******************************############%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######################################################****+++===-----:::::----------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--------------+#%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#######################################################################################################################################################################**************############################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################
++++++++++++++++++************************************************************************************************************#############***************************###***************************************************************************************************************************************++++++++++++++========================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=============+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=========================++++++++++++++++++++++++++++++++++++++++++**#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*+++++++++++++++++++++++++++++++++++++++++++++++++++++++************************************************************************************************************#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%############################%%%%%%%%#############################################################################################################################################*********************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===+++++++++++++++++++++++++++++++++************************************++++++++++++++++++++++++++++*******************+++++********************+***********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****+**+************#***:.........................:::::::::::::::::::::::-+++==+++++-...-+++++++++++++++++++++++++++++++=========================++*********++++++++++++++++++++++++========================----------------------:::::..............:::-------------------------=====++++++++++=--::::::----------===============================================++++++++**********************************************************************************************************************************************####################################*#**#*************************************************************##################################################################################################################################################################*************************************************************************************########***********************************************###############################*********##########################%%%%%%%%%%%%%%%%%%%%%%%%%%%%###############################****************************##############%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####################################################****+++===-----:::------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--------------+#%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@########################################################################################################################################################################************#############################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################
++++++++++++++++++*************************************************************************************************************############****************************#******************************************************************************************************************************************++++++++++++=====================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++============++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==========+=====+++++++++++++++++++++++++++++++++++++++++++++*#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******************************************************************************************************##@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@%#%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%############################%%%%%%%%################################################################################################################################################********************************************************************+++++++**********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**************************************++++++++++++++++++++++++++++++******************++++++********************++**********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****+**+**************#*+..........................::::::::::::::::::::::-+++==+++++=...-+++++++++++++++++++++++++++++===========================+++*********++++++=+====================================-------------------------::::::.............:::-------------------------=====++++++++++=--::::::----------==============================================+++++++++**********************************************************************************************************************************************####################################*#**#*************************************************************##################################################################################################################################################################***************************************************************************************######***********************************************################################*****#############################%%%%%%%%%%%%%%%%%%%%%%%%%%%%#################################*******************####################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####################################################****+++===-------------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--------------+#%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%###########################################################################################################################################################################*#****###############################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################
++++++++++++++++++**************************************************************************************************************###########***********************************************************************************************************************************************************************++++++++++++==================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===========++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++======+++++++++++++++++++++++++++++++++++++++++++++++++++++#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****************************************************************************************************##@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@%#*#%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##############################%%%%%%%%###################################################################################################################################################*****************************************************************++++****************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****++++++++++++++++++++++++++++++++++++++++++++++****************************************+++++++++++++++++++++++++++++++******************++++++*****************#**++**********++++++++++++++++++++++++++++++++++++++++++++++++++++++++*++*******+**************#***#-.........................::::::::::::::::-------+++==+++++=::::++++++++++++++++++++++++++===============================++*********++========================================--------------------------:::::::............:::--------------------------======++++++++===--:::::----------==============================================+++++++++*********************************************************************************************************************************************#################********########*******+#*************************************************************##################################################################################################################################################################***************************************************************************************######***********************************************##################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%########################################*********######################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####################################################***+++===------------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-------------=#%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%###########################################################################################################################################################################*####################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################
++++++++++++++++++****************************************************************************************************************##########***********************************************************************************************************************************************************************+++++++++++==================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===========+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*************************************************************************************************#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%@@%%%%%%@@@@@@@@@@@@%@@%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%@@%@@@@%%#*#%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##############################%%%%%%%%#####################################################################################################################################################**************************************************************+*********************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********************************************++++++++++++++++++++++++++++++++*************#***+++++++********************+++*********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******+***************##**#*:.......................:::::::::::::-----------+*+==++++++:::-++++++++++++++++++++++++==================================+++*******++=======================================----------------------------:::::::..........::::--------------------------=======+++++++===--::::::----------=============================================+++++++++*********************************************************************************************************************************************################*************#***********#*************************************************************##################################################################################################################################################################**************************************************************************************##****************************************************##################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##############################***##################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####################################################***+++===-----------------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-------------=#%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%############################################################################################################################################################################*###################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################
+++++++++++++++++++****************************************************************************************************************#########************************************************************************************************************************************************************************+++++++++++=================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===========++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********************************************************************************************#%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%@@@@@@@@@@@@@@@@%@@%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%@@@@@%%#**#%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###############################%%%%%%%%#######################################################################################################################################################*************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***************************************************+++++++++++++++++++++++++++++++******************++++++*******************#*+++*********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****************#***#****#*#+.......................:::::::::---------------**+==++++++----+++++++++++++++++++++======================================++++******+=====================================-------------------------------:::::::.......:::::---------------------------=================--::::::----------=============================================+++++++++*********************************************************************************************************************************************#############****************************#*************************************************************##################################################################################################################################################################*************************************************************************************##*****************************************************###################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%##############################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######################################################***+++====--------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-------------=#%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################
+++++++++++++++++++*****************************************************************************************************************########*************************************************************************************************************************************************************************+++++++++++================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==========+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***************************************************************************************#%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%@%@@@@@@@@@@@@@@@@@@@@@@%%%%%@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%@@@@@%#*++#%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%################################%%%%%%%%###########################################################################################################################################################**************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******************************************************++++++++++++++++++++++++++++++++************#**#**+++++********************#**+++********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***************#***#******##-.....................:::::::-------------=====**+==++++++====+++++++++++++++++++=========================================++++++++++==================================-------------------::::-----------:::::::::::.:::::::----------------------------================--::::::----------=============================================+++++++++*********************************************************************************************************************************************###########******************************#*************************************************************##################################################################################################################################################################********************************************************************************************************************************************###################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######################################################***++++===------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::------------=#%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################
+++++++++++++++++++******************************************************************************************************************#######*************************************************************************************************************************************************************************+++++++++++===============++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=========+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***********************************************************************************#%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@%@@@@@@@@@@@@@@@@@@@@@@%%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%@%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%@@@@@@%#**++#%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#################################%%%%%%%%%#######################################################################################################################################################################**************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**************************************************************++++++++++++++++++++++++++++++++**********#******++++++********************#**+++*********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******************#*###*#***:.................::::::::----------==========**+==++++++====++++++++++++++++==============================================+++++++===----===========================-------------------::::::-----------:::::::::::::::::-----------------------------================---:::::----------==============================================++++++++********************************************************************************************************************************************###########*****************************+***************************************************************##################################################################################################################################################################**********************************************************************************************************************************++++++****###################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####################################################****+++====--------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::------------=*#%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################
+++++++++++++++++++*******************************************************************************************************************#######*******************************######************************************************************************************************************************************+++++++++++++===========+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=========+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******************************************************************************#%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#####%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%@@@@@%#***++*%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##################################%%%%%%%%####################################################################################################################################################################%%%%%%%%%%%%#####################***###########*****************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**************************************************************************+++++++++++++++++++++++++++++++++****************++++++**********************#*+++*********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***************##***#*#***#+.............::::::::::---------=============**+==++++++=====+++++++++++=============================================================-----=======================---------------------:::::::-----------::::::::::::::-------------------------------================---:::::-----------=============================================++++++++********************************************************************************************************************************************##########******************************+***************************************************************#################################################################################################################################################################********************************************************************************************************************************++++++++++***####################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%############################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######################################################****++++====----------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--------------*#%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################
+++++++++++++++++++********************************************************************************************************************##########********************#######################***************************************************************************************************************************+++++++++++++==========+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++========+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***********************************************************************##@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#########%%%@%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@%%@%%%%%%%%@@@@@@@@@@@@@@@@@@@@%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%@@@@%#***+++*%%%@@%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###################################%%%%%%%%###############################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######*#######**********+++++++*****************************************************************************************************************************++++++++++++++++++++++++++++++++*****************+++++**#********************#*+++*********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*************#****##**#**=.......::::::::::::--------=================***===+++++=====+++++++=================================================================-----======================-----------------------:::::::-----------::::::::::::---------------------------------================--:::::-----------============================================+++++++++********************************************************************************************************************************************#########*******************************+***************************************************************#################################################################################################################################################################*****************************************************************************************************************************++++++++++++++**################%###################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%########################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######%################################################****+++====---------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-----------------*#%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################
+++++++++++++++++++*********************************************************************************************************************###############################################################################*************************************************************************************************++++++++++++=========++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++========+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********************************************************************#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#######*#%%%#******###%%@@@@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@%#***++++*%%%@@%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####################################%%%%%%%%####################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###########****************************************************************************************************************************************++++++++++++++++++++++++++++++++*****************++++++**#********************#*++++********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*************#*#*#*##*#**:..::::::::::::---------====================***===+++++======++======================================================================-----====================------------------------::::::::------------::::::--------------------------------------================--::::-----------============================================++++++++********************************************************************************************************************************************#########********************************+***************************************************************#################################################################################################################################################################**************************************************************************************************************************+++++++========++***#############%%%%##################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%#####################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%################################################****++++====--------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-----------------------------*#%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################
+++++++++++++++++++*********************************************************************************************************************###################################################################################*********************************************************************************************++++++++++++=========++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=======+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***************************************************************#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@########*###***********##%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@%%%%%%%%@%%%@@@@@@@@@@@@@@@@@@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%@@@@%***++++++%%%@@%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######################################%%%%%%%#######################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###########***************************************************************************************************************************************+++++++++++++++++++++++++++++++++************#***++++++************************#**+++********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********#*****#**#*#+:::::::::-----------==================+====***+==+++++=-=--==========================================================================-----==================---------------------------::::::---------------------------------------------------------===============--::::-----------===========================================+++++++++********************************************************************************************************************************************#########*******************************++***************************************************************#################################################################################################################################################################************************************************************************************************************************+++++++====----===+***#############%%%%%#################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%#################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%################################################*****+++=====--------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::------------------------------+#%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################
++++++++++++++++++**************************************************************************************+++++++++++*********************######################################################################################************++++*+*************************************************************************++++++++++++++=++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++========++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++************************************************************#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%########*****************#%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@%%%%%%%%%%%@@@@@@@@@@@@@@@@%@@@%%%@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@%@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%@@%@@@%***+++++++#%%@@%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##########################################%%%%%%############################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%################**************************************************************************************************************************************+++++++++++++++++++++++++++++++++***************+++++++***#********************#**+++*********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***********#*##**##*#**=::::-----------===================++++++=+***===++++++----===========================================================================----================-----------------::---------:::::::::--------------------------------------------------------==============---:::-----------===========================================++++++++********************************************************************************************************************************************##########*******************************++***************************************************************#################################################################################################################################################################*********************************************************************************************+++++++++****************++++++====--------==++*#############%%%%%%%#############################*****###############%%%%%%%%%%%%%%%%%%%%%%%%%%###########################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###############################################****++++====--------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--------------------------------+#%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################
++++++++++++++++++**********************************************************************************+***++++++++++++*********************######################################################################################***********++++++**************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++========+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********************************************************%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#########******************%%#%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@%%%@@%@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%@@@@@@@@%#**++++++++#%%@@%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###########################################%%%%%%#########################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##########****###**************************************************************************************************************************************++++++++++++++++++++++++++++++++*********#***#*+++++++*************************#**+++*********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********##***##*#*#**-----------====================+++++++++=+***===++++++----============================================================================----==============----------------::::---------:::::::::--------------------------------------------------------===============---::------------==========================================++++++++********************************************************************************************************************************************#########********************************++***************************************************************###############################################*#################################################################################################################*******************************************************************************************+++++++++++++*************+++++====----------==+**#############%%%%%%#############################*******##############%%%%%%%%%%%%%%%%%%%%%%%%%%######################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###############################################*****++++=====--------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--------------------------------+#%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################
++++++++++++++++++********************************************************************************++++++++++++++++++++*******************#######################################################################################***********+++++**************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=======+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%++++++++++++++++*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****************************************************%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#########******************#**#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%@@@@@@@@@@@@@@@@@@@%%%@@%%@@%%@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%@%@@@@@%#*++++++++++#%%@@%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%############################################%%%%%%######################################################################################################################################################################################################################################################**##*##*******************************************************************************************************************************+++++++++++++++++++++++++++++++++**********###*++++++++**************************#*++++********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***+*****#**##**#**##+-----==================++++++++++++++++++**+===++++++--::-============================================================================------========--------------::::::::::------:::::::::::------------------------------------------------------=================-----------------==========================================++++++++********************************************************************************************************************************************########*********************************++***************************************************************##############################################*+################################################################################################################******************************************************************************************+++++++++++++++++*********+++++=====-----------==+**#############%%%%%#########################*************#############%%%%%%%%%%%%%%%%%%%%%%%%%##################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###############################################*****++++======-------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---------------------------------+#%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################
++++++++++++++++++*******************************************************************************++++++++++++++++++++++++++++++**********#########################################################################################*********+++++**************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++========++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#++++++++++++++++*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++************************************************%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#########*********************#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%@@@@@@@@@@@@@@@@@%@@@@%@@@%%@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%@@@@@#*+++++++++++#%%@@%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#############################################%%%%%%##############################################################################################################################################################################################################################################################*****************************************************************************************************************************++++++++++++++++++++++++++++++++*******##*##**++++++++***************************#**++++*******+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*+********######*****+-====================+++++++++++++++++++**+====+++++-:::-==============================================================================-------==----------------::::::::::::----::::::::::::--------------------------------------========--------==================----------------=========================================++++++++*********************************************************************************************************************************************########*********************************++***************************************************************##############################################*+################################################################################################################*****************************************************************************************++++++++++++++++++++*****+++++=====------------==++**#############%%%######################*******************############%%%%%%%%%%%%%%%%%%%%%%%%%%#########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###############################################*****+++++=====--------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::----------------------------------=#%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%###############################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################
++++++++++++++++++************+++***************************************************************++++++++++++++++++++++++++++++++++*******##########################################################################################*********+++++**************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=======++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*++++++++++++++++*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******************************************%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@##########*********************#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@@@@@@@@@@@@@@@@@@@@%%%%@%%@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@#*++++++++++++#%%@%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#############################################%%%%%%%##########################################################################################################################################################################################################################################################*##*######**********************************************************************************************************************++++++++++++++++++++++++++++++++******#***#**+++++++++****#*************************++++********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********##*##**#**#*==============++++++++++++++++++++++++++**+====+++++-:::-===============================================================================----------------------::::::::::::::----::::::::::::--------------------------------------==================================----------------=========================================++++++++*********************************************************************************************************************************************########*********************************++***************************************************************##############################################*+################################################################################################################****************************************************************************************+++++========+++++++++++++++++====------------===++**#####################################*********************############%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%################################################*****+++++=====--------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::------------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::----------------------------------=#%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%###############################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################
++++++++++++++++++***********++++++*************************************************************++++++++++++++++++++++++++++++++++++*****###########################################################################################*********++++**************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=======+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*************************************%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%##########*********************%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%@@@@@%*+++++++++++++*%%@%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#############################################%%%%%%%%#####################################################################################################################################################################################################################################################################********************************************************************************************************************+++++++++++++++++++++++++++++++*******#*##**+++++++++********************************+++********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********##*##*#*###**========+++++++++++++++++++++++++++++++**+====+++++-:::-================================================================================--------------------::::::::::::::::---:::::::::::----------------------=-=====-----========================================---------------========================================+++++++++********************************************************************************************************************************************#########*********************************++***************************************************************##############################################+*################################################################################################################***************************************************************************************+++++==========+++++++++++++++=====-------======+++**##################################**************************###########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#################################################*****+++++======-------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-----------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-----------------------------------=#%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%###############################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################
++++++++++++++++++**********++++++++************************************************************++++++++++++++++++++++++++++++++++++*****############################################################################################********++++**************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++========++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********************************%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%##########********************#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@%*++++++++++++++*%@@%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#############################################%%%%%%%%######################################################################################################################################################################################################################################################**##############******************************************************************************************************************++++++++++++++++++++++++++++++++********##**+++++++++****#****************************+++********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********##*#**#*#*+++=+++++++++++++++++++++++++++++++++++*++====+++++=:::-=================================================================================-----------------::::::::::::::::::::::::::::::::---------------------=====================================================----------------=======================================+++++++++********************************************************************************************************************************************########*********************************+++***************************************************************##############################################+*################################################################################################################**************************************************************************************+++++====----=====++++++++++++==============++++++***##############################********************************##########%%%%%%%%%%%%%%%%######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##################################################*****+++++======--------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---------------------:::::::::::::::::::::::::::::::::::::::::::::::::::::------------------------------------=*%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%###############################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################
++++++++++++++++++**********+++++++++***********************************************************+++++++++++++++++++++++++++++++++++******#############################################################################################*******++++**************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++========++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***************************#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%##########***************#****%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@%*+++++++++++++++*%@@%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#############################################%%%%%%%%%################################################################################################################################################################################################################################################*###****##*##********#*****************************************************************************************************************+++++++++++++++++++++++++++++++*****#*###**+++++++++*****#**********************#******++********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********#######*#*#*++++++++++++++++++++++++++++++++++++=+*++====+++++=:::-===================================================================================--------------::::::::::::::::::::::::::::::::-----------------------=====================================================---------------=======================================++++++++********************************************************************************************************************************************#########*********************************+++***************************************************************##############################################+#################################################################################################################****+********************************************************************************++++++===------=====+++++++++++========++++++++******##############################**********************************##########%%%%%%%%%%%%%%##########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###################################################*****+++++======--------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-------------------------::::::::::::::::::::::::::::::::::::::::::::::::-------------------------------------=*%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%###############################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################
++++++++++++++++++**********+++++++++++********************************************************++++++++++++++++++++++++++++++++++++*****###############################################################################################******++++***************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=======+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***********************@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@##########****************%****@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@%%@@@@@@@@@%@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@#+++++++++++++++++%@%@%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##############################################%%%%%%%%%####################################################################################################################################################################################################################################################*+*##**#******************************-...=***************************************************************************************+++++++++++++++++++++++++++++++*****####*+++++++++++*#*********************************++********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********#########****+++++++++++++++++++++++++++++++++++++**+====+++++=:::-=====================================================================================-----------:::::::::::::::::::::::::::::::::---------------------==================================================++====--------------======================================++++++++*********************************************************************************************************************************************#########*********************************++****************************************************************################################################################################################################################################################*#**********************************************************************************++++++===-------====+++++++++++++++++++++++********###############################*************************************##########%%%%%%%%%%%%%############%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####################################################*****++++++======--------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::----------------------------::::::::::::::::::::::::::::::::::::::::::::--------------------------------------*%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%###############################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################
++++++++++++++++++**********++++++++++++*******************************************************++++++++++++++++++++++++++++++++++++*****################################################################################################******+++***************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=======++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*++++++++++*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++************++****%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@##########****************%***#@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@#++++++++++++++++++%@%@%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##############################################%%%%%%%%%%###################################################################################################################################################################################################################################################*****##*******************************+. .+************************************************************************************+++++++++++++++++++++++++++++++*******##**++++++++++************************************+++*******+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********#########*#**++++++++++++++++++++++++++++++++++++*++====+++++=:::-======================================================================================--------:::::::::::::::::::::::::::::::::::---------------------==================================================+++===---------------====================================+++++++++********************************************************************************************************************************************##########*********************************++****************************************************************###############################################################################################################################################################******+*******+**********************************************************************++++++===------====+++++++++++++++++**********###################################*************************************############%%%%%%%%%%%#############%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####################################################*****++++++======---------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::------------------------------::::::::::::::::::::::::-------::::::::::--------------------------------------*%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%###############################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################
++++++++++++++++++**********++++++++++++*******************************************************++++++++++++++++++++++++++++++++++++*****################################################################################################*******+++***************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=======+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%++++++++++**++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*+*##*%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%##########***************##***%@@@@@@@@@@%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%@@%@@@@@%%%%%%@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@%+++==++++++++++++++%@@@%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###############################################%%%%%%%%%%####################################################################################################################################################################################################################################################***#**#******************************=. .-***********************************************************************************++++++++++++++++++++++++++++++******##**++++++++++++*#*#********************************+++*******++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********###########*++++++++++++++++++++++++++++++++++++*++=====+++++::::=======================================================================================-----:::::::::::::::::::::::::::::::::::::---------------------==================================================++++===--------------====================================++++++++*********************************************************************************************************************************************##########*********************************++****************************************************************###############################################################################################################################################################*********+++**************************************************************************+++++====---=====++++++***************#########################################**************************************############%%%%%%%%%%%###############%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######################################################******+++++======----------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--------------------------------:::::::::::::::::::--------------------------------------------------------*#%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%###############################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################
++++++++++++++++++**********+++++++++++++*****************************************************++++++++++++++++++++++++++++++++++++******################################################################################################*******+++****************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=======++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#++++++++++#*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*++%%*%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%##########***************#****%@@@@@@@@@@%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@%+======+++++++++++++#@@@%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%################################################%%%%%%%%%%##################################################################################################################################################################################################################################################**##***#*******************************:.. :+*****#***************************************************************************++++++++++++++++++++++++++++++*****##*+++++++++++++*##**********************************+++*******++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********######*###**+++++++++++++++++++++++++++++++++=+*+======+++++::::========================================================================================---:::--:::::::::::::::::::::::::::::::::---------------------==================================================++++===--------------===================================++++++++**********************************************************************************************************************************************##########*********************************++****************************************************************###############################################################################################################################################################******#******++************************************************************************++++++=======++++++*************###########################################*****************************************##############%%%%%%%%%###############%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########################################################*****++++++======----------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::---------------------------------::::::::::::::::--------------------------------------------------------+#%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%###############################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################
+++++++++++++++++***********++++++++++++++****************************************************++++++++++++++++++++++++++++++++++++*****#################################################################################################*******+++*****************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=======++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*+++++++++**++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++%%*%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@###########***************#****@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@%@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@*+=======++++++++++++#@@@%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#################################################%%%%%%%%%%################################################################################################################################################################################################################################################*###**##********************************+. . . .=*******************************************************************************++++++++++++++++++++++++++++++****###*+++++++++++++*##************************************+++******++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********#########*##*++++++++++++++++++++++++++++++++=+*+======+++++::::==========================================================================================-:::::-::::::::::::::::::::::::-::::::---------------------===================================================+++++===--------------=================================++++++++**********************************************************************************************************************************************###########*********************************++****************************************************************###############################################################################################################################################################******************************************************************************************++++++++++++*********##################################################******************************************##############%%%%%%%%%%#############%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#########################################################******++++++======-----------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-----------------------------------::::::::::::--------------------------------------------------------+#%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%##############################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################
+++++++++++++++++***********++++++++++++++****************************************************++++++++++++++++++++++++++++++++++++*****#################################################################################################******++++******************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++========+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%++++++++++*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#@*#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%###########***************#***#@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%@@@%%@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%@@@@@@@@@%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@*+========++++++++++++#@@@%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##################################################%%%%%%%%%%##################################################################################################################################################################################################################################################*##***********************************= . ...-******************************************************************************++++++++++++++++++++++++++++++**###**+++++++++++++**#**************************************++******+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********########*#**++++++++++++++++++++++++++++++++=+*+======+++++::::-==========================================================================================--:::::::::::::::::::::::::------::----------------------====================================================+++++===--------------================================++++++++***********************************************************************************************************************************************##########**********************************++****************************************************************###############################################################################################################################################################*****+****************************************************************************************+++*********######################################################********************************************##############%%%%%%%%%%###########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########################################################******++++++========-----------:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-------------------------------------:::::::::--------------------------------------------------------+#%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%##############################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################
+++++++++++++++++***********+++++++++++++++***************************************************++++++++++++++++++++++++++++++++++++*****##################################################################################################*****+++++******************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=========++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#+++++++++*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++%#*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%###########*******************%@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%@@@@@@@@@@%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@#=========+++++++++++++*%@@%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###################################################%%%%%%%%%%###############################################################################################################################################################################################################################################**###**#*********************************- .. . .:****************************************************************************++++++++++++++++++++++++++++++**#***++++++++++++++**#***************************************++******+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********########*#**+++++++++++++++++++++++++++++++=+*+======+++++::::-============================================================================================-::-::::::::::::::::::::-------------------------------====================================================++++++===-------------================================++++++++**********************************************************************************************************************************************###########*********************************+++****************************************************************##############################################################################################################################################################********+*********************************************************************************************###########################################################********************************************##############%%%%%%%%%%%%######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#########################################################*******++++++=======------------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::----:-------------------====---------------::::---------------------------------------------------------=#%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%##############################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################
+++++++++++++++++***********++++++++++++++++**************************************************++++++++++++++++++++++++++++++++++++****###################################################################################################*****++++++******************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=========+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#*%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@############*******************@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@#+=========+++++++++++++*%@@%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###################################################%%%%%%%%%%########################################################################################################################################################################################################################**#######################**##***********************************: . . .:+#*************************************************************************+++++++++++++++++++++++++++++**#**++++++++++++++++**##**#***********************************+++*****++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********########*##*++++++++++++++++++++++++++++++=+*+======+++++-:::-=============================================================================================--:::::::::::::::::::::-------------------------------====================================================++++++===-------------===============================++++++++***********************************************************************************************************************************************###########*********************************+++****************************************************************##############################################################################################################################################################***+***+**++********************************************************************#############***###############################################################**********************************************##############%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##########################################################*******+++++++=======-----------::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--------------------------=========-----------------------------------------------------------------------=#%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%##############################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################
+++++++++++++++++**********++++++++++++++++++*************************************************+++++++++++++++++++++++++++++++++++*****###################################################################################################*****++++++*******************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=========+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**+%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%###########********************@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@%@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%@@@@@@%%%@@@@@@@@@@%%%%@@@@@@@@@%%%%%%%%@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@%+==========+++++++++++++*%@@%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##################################################%%%%%%%%%%%#####################################################################################################################################################################################################################################################***********************************:. ... .+************************************************************************+++++++++++++++++++++++++++++**#**++++++++*++++++*********************************************++*****+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***********##*##*##**#*++++++++++++++++++++++++++++++=+*+======+++++-:::-===============================================================================================-::::::::::::::::::::------------------------------=====================================================++++++===------------===============================+++++++++**********************************************************************************************************************************************############*********************************+++***************************************************************###############################################################################################################################################################*******+******************************************************************###################################################################################************************************************##############%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###########################################################*******++++++++========---------::::::::::::::::::::::::::::::::::::::::::::::::::::::::--::----------------------------------===========-------------------------------------------------------------------=#%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%##############################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################
+++++++++++++++++**********++++++++++++++++++************************************************++++++++++++++++++++++++++++++++++++*****###################################################################################################*****+++++++******************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=========++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*+*%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@############********************@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@%%%@@@@@@@@@@%%%%@@@@@@@@@%%%%%%%@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@%+===========++++++++++++++%@@%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###################################################%%%%%%%%%%%####################################################################################################################################################################################################################################################************************************=. .. ...+**********************************************************************+++++++++++++++++++++++++++++**#*+++++++***++++++**********************************************++*****++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***********######*##*#*+++++++++++++++++++++++++++++=+*+======+++++-:::-=================================================================================================-:::::::::::::::::-------------------------------=====================================================++++++===--------===================================++++++++***********************************************************************************************************************************************############*********************************+++***************************************************************###############################################################################################################################################################*******************************************************************##########################################################################################************************************************##############%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#############################################################********++++++++========---------:::::::::::::::::::::::::::::::::::::::::::::::::::::------------------------:---------------============----------------------------------------------------------------=*%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%##############################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################
+++++++++++++++++**********++++++++++++++++++************************************************+++++++++++++++++++++++++++++++++++******###################################################################################################*****+++++++*******************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==========+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%############********************@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@%%@%%@@@@@@@@@@@%%%%%@@@@@%%%%%%%@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@*============++++++++++++++%@%%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####################################################%%%%%%%%%%%##################################################################################################################################################################################################################################################**********************************#***+: . . .=********************************************************************+++++++++++++++++++++++++++++*#*++++++++**+++++++***********************************************++*****+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***********##*##*##*##*++++++++++++++++++++++++++++=+*+======+++++-:::-==================================================================================================--:::::::::::::::-------------------------------=====================================================+++++===--------===================================+++++++++***********************************************************************************************************************************************###########*********************************+++****************************************************************###############################################################################################################################################################*************************************************************################################################################################################************************************************##############%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%################################################################********++++++++=======--------::::::::::::::::::::::::::::::::::::::::::::::::---------------------------------------------==============------------------------------------------------------------=*%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%##############################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################
+++++++++++++++++***********++++++++++++++++++***********************************************+++++++++++++++++++++++++++++++++++*****###################################################################################################*****+++++++++*******************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++========+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%############*******************#@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%%@%%%@@@@@@@@@@@%%%%%%@@@%%%%%%@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@#=======-====+++++++++++++++#@%%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#%##################################################%%%%%%%%%%%##################################################################################################################################################################################################################****#####**####################****************************************: .. . .=******************************************************************+++++++++++++++++++++++++++++***+++++++***+++++++************************************************++*****+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===++++++++++++**********######*##**#*+++++++++++++++++++++++++++=+*+======+++++-:::-====================================================================================================--:::::::::::::-------------------------------======================================================+++===------=====================================+++++++++***********************************************************************************************************************************************############*********************************+++**********************************************************++++++##############################################################################################################################################################********************************************************######################################################################################################*************************************************############%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###################################################################*********+++++++======--------:::::::::::::::::::::::::::::::::::::::::::---------------------------------------------------==============------------------------==-------------------------------=*%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%##############################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################
+++++++++++++++++***********+++++++++++++++++++**********************************************+++++++++++++++++++++++++++++++++++*****###################################################################################################*****+++++++++********************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++========++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#############*******************#@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@%%%%%@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%%%@@@@@@@@@%@%%%%%%%@@%%%%%@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@#+=====---====+++++++++++++++#@%%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##################################################%%%%%%%%%%%################################################################################################################################################################################################################************######################*********************************#*****=. . . .=*****************************************************************+++++++++++++++++++++++++++***++++++++***+++++****************************************************++*****+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++======++++++++++***********##*#######**+++++++++++++++++++++++++++=+*+======+++++-::::======================================================================================================--::::::::::-------------------------------============================================================-----======================================+++++++++***********************************************************************************************************************************************#############*********************************+++**********************************************************++++++##############################################################################################################################################################***********************************************###############################################################################################################*************************************************############%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####################################################################*********+++++++======--------:::::::::::::::::::::::::::::::::::::::-------------------------------------:::--------------===============---------------------=====----------------------------=*#%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%##############################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################
+++++++++++++++++***********++++++++++++++++++++*********************************************++++++++++++++++++++++++++++++++++******###################################################################################################*****+++++++++*********************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++======+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%############********************%@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@%%%%%%%@@@@@@@@@@@@@@@%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%@@@@@@@@%%%%%%%%%%%%%%%%@@@@@@@@@@@@@%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@%+=====----====+++++++++++++++#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##################################################%%%%%%%%%%%##########################################################################################################################################################################################################****************#**####################**************************************#*+. . .=***************************************************************+++++++++++++++++++++++++++*#*++++++++**+++++******************************************************++*****++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=======++++++++++************###*##*##*#*++++++++++++++++++++++++++=+*+======+++++=::::========================================================================================================---:::::---------------------------------===========================================================--========================================++++++++++************************************************************************************************************************************************############**********************************++**********************************************************+++++++##############################################################################################################################################################***************************************#######################################################################################################################**************************************************###########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######################################################################**********++++++======-------:::::::::::::::::::::::::::::::::::------------------------------------------:::::------------===============-------------------=========-----------------------=+#%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%##############################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################
+++++++++++++++++***********++++++++++++++++++++**********************************************++++++++++++++++++++++++++++++++******####################################################################################################*****++++++++++**********************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=====++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#############********************%@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%@@@@@@%%%%%%%%@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%@@%%@@@@@@@@%%%%%%%%%%%%%%@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@%+=====-----====+++++++++++++++*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##################################################%%%%%%%%%%%#####################################################################################################################################################################################################********************#***###################******************************************:. . .=*************************************************************++++++++++++++++++++++++++*#*++++++++***++++********************************************************++*****++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==========+++++++++*************#*####**#*#*+++++++++++++++++++++++++=+++======+++++=::::===================================================================================================-=====----:::--------------------------------=====================================================================================================++++++++++************************************************************************************************************************************************#############*********************************+++*********************************************************++++++++##############################################################################################################################################################**********************************############################################################################################################################***************************************************#########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#########################################################################*********++++++======-------:::::::::::::::::::::::::::::::---------------------------------------------::::::-----------================------------------==========--------------------=+#%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%##############################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################
+++++++++++++++++***********++++++++++++++++++++**********************************************++++++++++++++++++++++++++++++++******####################################################################################################*****++++++++++**********************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++====+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#############********************@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%@@@%%%%%%%%%@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%@@@@@@@@%%%%%%%%%%%%@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@*====------====++++++++++++++++*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###################################################%%%%%%%%%%%%###################################################################################################################################################################################################********************##**####################******************************************=. .. .=***********************************************************+++++++++++++++++++++++++***+++++++++**+++++*********************************************************+++****+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++============++++++++*************###**##***##+++++++++++++++++++++++++=+++======+++++=::::============================================================================================================------------------------------------=====================================================================================================+++++++++*************************************************************************************************************************************************#############*+*******************************+++*********************************************************++++++++##############################################################################################################################################################*****************************#################################################################################################################################***************************************************#########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#############################################################################********++++++=====-------::::::::::::::::::::::::::::------------------------------------------------:::---:----------=================----------------=============-----------------+#%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#############################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################
+++++++++++++++++***********++++++++++++++++++++**********************************************++++++++++++++++++++++++++++++++******####################################################################################################*****+++++++++++***********************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#############********************@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%%%%%%%%%@@@@@@@@@@@@@@@%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%@@@@@@@@@@%@%%%%%%%%%%%%@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%@@@@@#+====------====++++++++++++++++*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###################################################%%%%%%%%%%%%################################################################################################################################################################################################****************************###################******************************************=. .=*********************************************************++++++++++++++++++++++++****++++++++***+++++***********************************************************+++**+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++============+++++++***************####**##*#*++++++++++++++++++++++++=**=======+++++=::::-=============================================================================================================----------------------------------===================================================================================================++++++++++*************************************************************************************************************************************************#############**********************************+++********************************************************++++====+#############################################################################################################################################################**************************#####################################################################################################################################************************************************###########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###############################################################################********++++++====----------:::::::::::::::::::::::------------------------------------------------::::::-------------==================---------------================-----------=+#%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#############################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################
++++++++++++++++************++++++++++++++++++++***********************************************+++++++++++++++++++++++++++++++******####################################################################################################*****+++++++++++***********************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#############*********************@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@%%%%%%%%%%@@@@@@@@@@@@@%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@%%%%%%%%%%%%%@@@@@@@@@@%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%@@@@@%*====-------===+++++++++++++++++*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####################################################%%%%%%%%%%%%#################################################################################################################################################################################################**************************####################******************************************+: . .+*******************************************************+++++++++++++++++++++++*#**++++++++***++++++************************************************************+++***+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++============+++++++*************###########**+++++++++++++++++++++++=*+=======++++++::::-===============================================================================================================-------------------------------===================================================================================================++++++++++**************************************************************************************************************************************************#############**********************************++*********************************************************+++=====+#############################################################################################################################################################**********************########################################################################################################################################***********************************************############%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##################################################################################********+++++=====------------::::::::::::::::-----------------------------------------------------:::----:----------===================-------------====================-------+#%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#############################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################
++++++++++++++++************++++++++++++++++++++************************************************++++++++++++++++++++++++++++++******####################################################################################################*****+++++++++++************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#############*********************@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%%%%%%%%%%%@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@%%%%%%%%%%%%%%%%@@@@@@%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@%#+===-------====+++++++++++++++++*#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####################################################%%%%%%%%%%%%##################################################################################################################################################################################################***************************#################********************************************- .+*****************************************************++++++++++++++++++++++*##*++++++++***++++++++************************************************************+++***+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++============+++++++**************#########*##*++++++++++++++++++++++=*+=======++++++::::-==================================--------=======================================================================----------------------------===================================================================================================++++++++++**************************************************************************************************************************************************#############***********************************++********************************************************++++======#############################################################################################################################################################******************############################################################################################################################################**********************************************############%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######################################################################################******+++++=====--------------------:::::---------------------=-------------------------------------:::::----------===================------------========================-=#%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#############################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################
++++++++++++++++**************++++++++++++++++++***************************************************++++++++++++++++++++++++++******#####################################################################################################*****++++++++++++***********************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#############**********************@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%%%%%%%%%%%@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%@@@#*===--------====+++++++++++++++++*#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######################################################%%%%%%%%%%%%#################################################################################################################################################################################################****************************##################*******************************************=.. :+***************************************************++++++++++++++++++++*****++++++++++++++++++++*************************************************************+++***++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++============++++++***************#######*##*#+=+++++++++++++++++++=+*+=======++++++::::-=================================----------=========================================================================-------------------------==================================================================================================++++++++++**************************************************************************************************************************************************##############*+********************************+++********************************************************++++=====+#############################################################################################################################################################*************################################################################################################################################################*******************************************###############%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##%%%%%%%%%#####%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###########################################################################################******+++++======---------------------------------------========----------------------------------:-:::::---------====================----------=========================#%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#############################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################
++++++++++++++++**************++++++++++++++++++******************************************************+++++++++++++++++++++++******#####################################################################################################*****++++++++++++***********************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#############**********************@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%@@%*+==--------=====+++++++++++++++++*#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######################################################%%%%%%%%%%%%#################################################################################################################################################################################################****************************#################********************************************+... :**************************************************+++++++++++++++++++***#*++++++++++++++++++++***************************************************************+++***++++++++++++++++++++++++++++++++++++++++++++++++====+++++++++++============+++++****************########*##*++++++++++++++++++++=+*+=======++++++::::-================================------------===========================================================================----------------------=================================================================================================++++++++++***************************************************************************************************************************************************#############**+*+******************************+++********************************************************++++=====+#############################################################################################################################################################******######################################################################################################################################################*****************************************##################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##%%%%%%###########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##############################################################################################******+++++========--------------------------------===========------------------------------------::::::---------=====================---------=======================*%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#############################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################
+++++++++++++++***************++++++++++++++++++**********************************************************+++++++++++++++++++******#####################################################################################################*****++++++++++++************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#############**********************@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%*===---------====++++++++++++++++++**%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######################################################%%%%%%%%%%%%%######################################################################################################################################*****#####################################################*************************#**#################********************************************+:.. -************************************************++++++++++++++++++****#**++++++++++++++++++++***************************************************************+++**+++++++++++++++++++++++++++++++++++++++++++++++=======+++++++++++===========+++++****************############*+++++++++++++++++++=+*+=======++++++::::-===============================---------------============================================================================-------------------================================================================================================++++++++++***************************************************************************************************************************************************##############*+*++*+****************************+++********************************************************++++=====*########################################################################################################################################################################################################################################################################################################################**********************************########################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%############%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##%##################################################################################################*******++++++========--------------------------===============----------------------------------:::::::----------=======+++++==========-------=====================*%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#############################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################
++++++++++++++****************++++++++++++++++++****************************************************************+++++++++++++******#####################################################################################################*****+++++++++++++***********************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#############***********************@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%#=------:----=====++++++++++++++++++**#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########################################################%%%%%%%%%%%%%####################################################################################################################################********###################################################******************************#################**********************************#*********: =**********************************************+++++++++++++++++********+++++++++++++++++++*****************************************************************++++*+++++++++++++++++++++++++++++++++++++++++++============+++++++++++===========+++++****************#####*##*#*#*++++++++++++++++++=+*+=======++++++:::::===========================--------------------===============================================================================--------------===============================================================================================++++++++++****************************************************************************************************************************************************##############**+*+*******************************++*********************************************************+++++==++*######################################################################################################################################################################################################################################################################################################################*******************************##########################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###########################################################################################################********+++++++============-----------------=================----------------------------------:::::------------=======+++++++==========================+++++===*%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#############################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################
++++++++++++++****************++++++++++++++++++******************************************************************++++++++++*******#####################################################################################################*****+++++++++++++************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#############***********************@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@#+------:-:---====+++++++++++++++++++**#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##########################################################%%%%%%%%%%%%##################################################################################################################################**********##################################################*******************************#################********************************************-. .+*******************************************++++++++++++++++++********++++++++++++++++++*******************************************************************++++*++++++++++++++++++++++++++++++++++++++++++==============+++++++++++===========++++*****************########*#*#++++++++++++++++++=+*+=======++++++:::::==========================---------------------====================================================================================--------===============================================================================================++++++++++*****************************************************************************************************************************************************##############*++***+**************************+**++*********************************************************+++++++++####################################################################################################################################################################################################################################################################################################################*******************************##########################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##################################################################################################################********++++++++++============----------===================-----------------------------------:----------------======+++++++++=====================+++++++++*%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#############################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################
+++++++++++*******************++++++++++++++++++*********************************************************************++++++*******#####################################################################################################*****++++++++++++++************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#############************************%@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@%#=:----::-----====+++++++++++++++++++**#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##########################################################%%%%%%%%%%%%###################################################################################################################################*##*****#*##*#############################################******************************#*#################********************************************=. .******************************************+++++++++++++++++*******+++++++++++++++++++********************************************************************+++++*++++++++++++++++++++++++++++++++++++++++=================+++++++++++==========++++*****************############*+=+++++++++++++++=+*+=======++++++:::::=======================-------------------------=========-==========-====================================================================================================================================================================++++++++++*****************************************************************************************************************************************************##############*+++++******************************+*+**********************************************************++++++++###################################################################################################################################################################################################################################################################################################################***************************##########################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#########################################################################################################################**********++++++++++====================================----------------------------------------::-----------======++++++++++===================++++++++*%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#############################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################
++++++++++********************++++++++++++++++++**********************************************************************++++********#####################################################################################################*****++++++++++++++************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#############************************#@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@#*-:---:::-----====+++++++++++++++++++**#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###########################################################%%%%%%%%%%%%##################################################################################################################################**#*******+*##############################################********************************##################******************************************#*+. :***************************************+++++++++++++++++*******+++++++++++++++++++**********************************************************************+++++*+++++++++++++++++++++++++++++++++++++====================++++++++++++==========++++*****************############*++++++++++++++++=+++=======++++++:::::=======================-------------------------========================================================================================================================================================================================++++++++++******************************************************************************************************************************************************#############**+++++******************************+++***********************************************************+++++++################################################################################################################################################################################################################################################################################################################**************************##########################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##############################################################################################################################************+++++++++=================================-----------------------------------------------------======+++++++++++=================+++++++*%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#############################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################
******************************++++++++++++++**************************************************************************************#####################################################################################################*****++++++++++++++************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@##############*************************@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@%#+::::::::----=====+++++++++++++++++++**#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%############################################################%%%%%%%%%%%%%###############################################################################################################################**********++**#*###########################################**********************************#################********************************************+. =#***********************************++++++*++++++++**********+++++++++++++++++****#********************************************************************++++++++++++++++++++++++++++++++++++++++++======================++++++++++++==========++++*****************############*==++++++++++++==+++=======++++++:::::-======================-------------------------=======================================================================================================================================================================================++++++++++******************************************************************************************************************************************************##############*++++++******************************++**************************************************************+++**###############################################################################################################################################################################################################################################################################################################*********************###########################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######################################################################################################################################***********++++++++=============================-------------------------------------------------------======++++++++++++================+++++*#%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#############################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################
*******************************+++++++++++++**************************************************************************************#####################################################################################################*****++++++++++++++************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%##############*************************%@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%##=:::::::-----=====+++++++++++++++++++***%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%############################################################%%%%%%%%%%%%%#############################################################################################################################**********++++*#*###########################################**********************************##################*********************************************:.+#*******************************++++++++++++++++************++++++++++++++***************************************************************************+++++++++++++++++++++++++++++++++++++++++=========================++++++++++++==========+++*****************##########*##+=++++++++++++==*++=======++++++:::::-==================--==-------------------------========-============================================================================================================================================================================++++++++++********************************************************************************************************************************************************#############*+++++++****************************+*++*******************************************************************###############################################################################################################################################################################################################################################################################################################*****************###########################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#%####################################################################################################################################################***********++++++=========================----------------------------------------------------------=======+++++++++++++==============++++#%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#############################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################
*******************************++++++++++++**************************************************************************************######################################################################################################*****++++++++++++++************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@###############*************************#@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@%#*-::::::-----=====+++++++++++++++++++++**%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#############################################################%%%%%%%%%%%%%###########################################################################################################################***********+++++*#*###########################################***********************************##################********************************************::********************************+++++++++++++****************+++++++++*******************************************************************************+++++++++++++++++++++++++++++++++++++++++==========================++++++++++++=========++++*****************##########*#*+=+++++++++++==*++=======++++++-::::-================-----------------------------=-========-==========================================================================================================================================================================++++++++++**********************************************************************************************************************************************************############*+++++++++***************************+*++*******************************************************************##############################################################################################################################################################################################################################################################################################################************#############################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#############################################################################################################################################################*********+++++++=====================-------------------------------------------------------------======+++++++++++++++===========+++#%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#############################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################
*******************************+++++++++++***************************************************************************************######################################################################################################*****++++++++++++++************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%##############***************************%@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@%%#+-::::::-----====++++++++++++++++++++++**%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#############################################################%%%%%%%%%%%%%##########################################################################################################################***********+++++**############################################***********************************##################*********************************************--********************************************************************************#*******************************************************************++++++++++++++++++++++++++++++++++++++++============================++++++++++++=========+++******************##########*#*+=++++++++++==*++=======++++++-::::-==============---------------------------------========-====-====================================================================================================================================================================++++++++++**********************************************************************************************************************************************************#############*+++++++++***************************++++*******************************************************************##############################################################################################################################################################################################################################################################################################################******################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#################################################################################################################################################################********++++++++=================---------------------------------------------------------------======++++++++++++++++========+++#%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#############################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################
*******************************+++++++++*****************************************************************************************######################################################################################################*****++++++++++++++************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%##############***************************#@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%#=-:::::-----=====++++++++++++++++++++++**%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##############################################################%%%%%%%%%%%%%########################################################################################################################************++++++*#**#########################################*************************************##################********************************************=+**************************************************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++============================++++++++++++==========++*******************#######*##*#*+++++++=====+*++=======++++++-::::-============-----------------------------------========-====---================================================================================================================================================================+++++++++++***********************************************************************************************************************************************************############*++++++++++***************************+++*******************************************************************#################################################################################################################################################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######################################################################################################################################################################********++++++++=============------------------------------------------------------------------=====++++++++++++++++++++==+++#%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#############################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################
*******************************+++++++++******++*********************************************************************************######################################################################################################*****++++++++++++++************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@###############****************************%@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*=-:::::-----====+++++++++++++++++++++++**%%%%%%%%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###############################################################%%%%%%%%%%%%%#######################################################################################################################*************++++++****########################################**************************************#################*******************************************#*+**************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++==============================++++++++++++=========+++******************############*+++++++=====+*+++======++++++-::::-=====-=====------------------------------------========-====:.:-==============================================================================================================================================================+++++++++++************************************************************************************************************************************************************###########**++++++++++************************++++++*******************************************************************########################################################################################################################################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#########################################################################################################################################################################********++++++++==========--------------------::::::::----------------------------------------======++++++++++++++++++++++*%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%#############################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################
*******************************+++***********************************************************************************************######################################################################################################*****+++++++++++++*************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%##############*****************************#@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#+=-::::-----=====+++++++++++++++++++++++**%%%%%%%%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###############################################################%%%%%%%%%%%%%#####################################################################################################################******#***#****+++++*#**##########################################*************************************##################**********************************************************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++===============================++++++++++++=========++*******************#############++=+==+====+*++=======++++++-::::-======-----------------------------------------===--===-===--..::-============================================================================================================================================================++++++++***************************************************************************************************************************************************************###########*+++++++++++***********************+++++++*******************************************************************###################################################################################################################################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########################################################################################################################################################################********+++++++=========----------------::::::::::::::---------------------------------------======++++++++++++++++++++*%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%##############################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################
*******************************+++**********************************************************************************************#######################################################################################################*****+++++++++++++*************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%##############******************************%@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#==-:::------=====+++++++++++++++++++++++**%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%################################################################%%%%%%%%%%%%#####################################################################################################################*******##**#****+++++*#**############*############################**************************************#################*********************************************************************************************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++================================++++++++++++=========+++*****************#############*++=++=+===+*++=======++++++-::::-===--=------------------------------------------==--=====-=--::.::-==-=======================================================================================================================================================++++++++****************************************************************************************************************************************************************##########**+++++++++++***********************+++++++*******************************************************************###############################################################################################################################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###########################################################################################################################################################################********+++++++========------------:::::::::::::::::::--------------------------------------======++++++++++++++++++*%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%##############################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################
*******************************++***********************************************************************************************#######################################################################################################*****+++++++++++++**************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@###############******************************#@@@@@@@@@@@@@@@@%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#%*==-:::------====++++++++++++++++++++++++**%%%%%%%%%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##################################################################%%%%%%%%%%%%###################################################################################################################********#*#*#****+++++#*+**##########*############################***************************************##################*******************************************************************************************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++================================+++++++++++++=========++******************#############*=+=+=====+*+++======++++++-::::-===---------------------------------------------=========-==-:..::::-=======================================================================================================================================================+++++++*******************************************************************************************************************************************************************#########*++++*+++++++++*********************++++++********************************************************************#########################################################################################################################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###############################################################################################################################################################################********++++++=======-----------::::::::::::::::::::---------------------------------------======+++++++++++++++*%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%##############################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################
********************************************************************************************************************************#######################################################################################################*****+++++++++++++**************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%###############*******************************#@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###===::-------=====++++++++++++++++++++++++**%%%%%%%%%%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###################################################################%%%%%%%%%%%###################################################################################################################*******+*#**#**#**++++*#*+#*#######################################****************************************################******************************************************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++=================================+++++++++++++========+++******************############*+=+=+====++++++=====++++++-::::-=-=-----------------------------------------------=======-===-:::..::======================================================================================================================================================+++++++********************************************************************************************************************************************************************#*######*+++++++++++++++****************+***+++++++********************************************************************####################################################################################################################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##########################################################################################################################################################################********++++++=======--------:::::::::::::::::::::----------------------------------------======+++++++++++++*%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%###############################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################
********************************************************************************************************************************#######################################################################################################*****+++++++++++++**************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@################********************************%@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##%*==-.:-------=====+++++++++++++++++++++++++*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####################################################################%%%%%%%%%%%#################################################################################################################*******#*+*#***#**#*++++*#+*########################################*****************************************#################****************************************************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++==================================++++++++++++=========+++*****************###########*#*+=======+++++++====++++++-::::-=-=-=---------------------------------------------===========-::..:::-====================================================================================================================================================+++++++***********************************************************************************************************************************************************************######*+++++++++++++++++++************+++++++++++********************************************************************################################################################################################################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#############################################################################################################################################################################********++++++======--------::::::::::::::::::::-----------------------------------------=======++++++++++*#%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%###############################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################
*******************************************************************************************************************************########################################################################################################*****+++++++++++++**************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%################*********************************%@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%@@@%%%%%%%%%%%%%%%%%%@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###%===:.:------=====++++++++++++++++++++++++++*%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####################################################################%%%%%%%%%%##*#############################################################################################################********#*+*#*#***#**++++#*+*########################################*****************************************################****************************************************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++==================================+++++++++++++=========++******************#############*+======+++++++====++++++-::::-=-=-=---------------------------------------------=========-=-:::::::-===--====================================================================================================================================---=======+++++++*************************************************************************************************************************************************************************#####**+++++++++++++++++++***********+++++++++++********************************************************************##############################################################################################################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#################################################################################################################################################################################*******++++++=====--------:::::::::::::::::::-------------------------------------------======++++++++*#%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%###############################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################
*******************************************************************************************************************************########################################################################################################*****+++++++++++++**************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%################*********************************#%@@@@@@@@@@@@@@@@@%@%%%%%%%%%%@@@@@%%%%%%%%%%%%%%%%%%@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####%*---.:-------====+++++++++++++++++++++++++++*%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######################################################################%%%%%%%#%%###############################################################################################################*********#*++##*##*#*++++*#*+*########################################*****************************************#################**************************************************************************************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++==================================+++++++++++++=========++******************#############*+=====*++++++====++++++-:::::=-=-----------------------------------------------============:::.::.-=====--================================================================================================================================-::--======++++++++************************************************************************************************************************************************************************#####*+++++++++++++++++++++**********+++++++++++*********************************************************************############################################################################################################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########################################################################################################################################****###################################********+++++=====-------:::::::::::::::::----------------------------------------------======++++++#%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%###############################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################
*******************************************************************************************************************************########################################################################################################*****+++++++++++++**************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#################***********************************%@@@@@@@@@@@@@@@@@@@@@@@%%%%@@@@@@%%%%%%%%%%%%%%%%%%@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####%=--:.:------=====+++++++++++++++++++++++++++*%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########################################################################%%%%##%%%##############################################################################################################*******#**#*++*##**#**++++*#++########################################******************************************################****************************++********************************************************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++===================================+++++++++++++========++******************##############+=====*++++++====++++++-:::::=-=-----------------------------------------------====-=======-.:.::.:==-=----=============================================================================================================================-::::-=====+++++++++************************************************************************************************************************************************************************######*+++*++*+++++++++++++++********++++++++++++********************************************************************#############################################################################################################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######################################################################################################################################*******###################################*******+++++=====--------:::::::::::::::----------------------------------------------=======++++#%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%###############################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################
******************************************************************************************************************************########################################################################################################******++++++++++++***************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#################************************************%@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@%%%%%%%%%%%%%%%%%@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%@@@@@%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####%*:::.::------=====+++++++++++++++++++++++++++#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###############################################################################%%%##*###########################################################################################################**********#*++*##***#*++++#*+*#####*##############################************************************************##############****************************=********************************************************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++====================================+++++++++++++========++******************###########*#*+====*+++++++=++++++++-:::::-------------------------------------------------=============-.::.:::=-=-=-.:--=========================================================================================================================-:::::--====+++++++++*************************************************************************************************************************************************************************#####*+++++++++++++++++++++++++**++++++++++++++++********************************************************************############################################################################################################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#################################################################################################################################***********##################################********++++=====-------:::::::::::::-------------------------------------------------=======+*%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%###############################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################
******************************************************************************************************************************########################################################################################################******++++++++++++***************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%################**************************************%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####%=:::.:------=====++++++++++++++++++++++++++++#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###############################################################################%%%%######*######################################################################################################*******##*#**++*##*****+++*#*+*#####*#############***###***********##**********************************************##############**************************#*-*#*****************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++===================================++++++++++++++=======++++****************############*#*====*++++++++++++++++-:::::-------------------------------------------------=============-:::::.:-==-=-::::--======================================================================================================================-::::::--===++++++++++************************************************************************************************************************************************************************#####**+++++++++++++++++++++++++++++++++++++++++++********************************************************************############################################################################################################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%################################################################################################################################************###################################*******+++++=====------:::::::::::----------------------------------------------------=====*%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%###############################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################
******************************************************************************************************************************########################################################################################################******++++++++++++***************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#################***************************************%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######::::::------====+++++++++++++++++++++++++++++#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###############################################################################%#%%%############################################################################################################********#**#**++**##*##*+++*#++*###*########*#*********##########*###***********************************************##############***************************+-******************************************************************************************************+***********************************************++++++++++++++++++++++++++++++++++++++++++++====================================++++++++++++++=======+++******************######*#*#**#*==+*++++++++++++++++::::::--=---------------------------------------------===============::.::.:-=====:::::---===================================================================================================================-:::::::-===++++++++++*************************************************************************************************************************************************************************#####*+++++++++++++++++++++++++++++++++++++++++++*********************************************************************##########################################################################################################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####%%########################################################################################################################*************####################################******+++++====--------::::::--------------------------------------------------------==+#%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%###############################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################
******************************************************************************************************************************########################################################################################################*****++++++++++++****************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%################*****************************************%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####+:::::------=====+++++++++++++++++++++++++++++#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#################################################################################%%%%############################################################################################################***********##*++***##*#**++#*+*#*#*###******#**++++++****#########**************************************************##############***************************--*****************************************************************************************************+***********************************************+++++++++++++++++++++++++++++++++++++++++++++====================================++++++++++++++======+++******************###########**#+=++++++++++++++++++::::.:--=--------------------------------------------================-:.::::-=-===-:::::-----================================================================================================================-::::::--===++++++++++************************************************************************************************************************************************************************######*+++++++++++++++++++++++++++++++++++++++++++*********************************************************************##########################################################################################################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###%%###########################################################################################################################************#####################################******+++++====---------------------------------------------------------------------+#%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%###############################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################
******************************************************************************************************************************########################################################################################################*****++++++++++++****************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#################******************************************%@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%@@@@@@@@@%%%%%%%%%%%%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####=:::::-----=====++++++++++++++++++++++++++++++#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####################################################################################%%###########################################################################################################*********#***#*+++*##**#*++*#++*#*#*##*******+++++++++++*****##**#***************************************************#############****************************:=**#*************************************************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++=====================================+++++++++++++=======++++*****************######*#**#*#*+++++++++++++*+++++::::.:--=-------------------------------------------=================-:::.:::=-===-:::::---::--==============================================================================================================--:::::--==++++++++++*************************************************************************************************************************************************************************#####*++++++++++++++++++++++++++++++++++++++++++++*********************************************************************#######################################################################################################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###########################################################################################################################*************#####################################******+++++====------------------------------------------------------------------=#%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%###############################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################
******************************************************************************************************************************########################################################################################################*****++++++++++++****************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#++#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#################*******************************************%@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%@@@@@@@@@%%%%%%%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####*:::::------=====++++++++++++++++++++++++++++++#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####################################################################################%%##*#######################################################################################################***********#****+++*###***++**+*#**********++++++++++++++****##**#****************************************************#############***************************=.=*********************************************************************++++++++**********************************************************************++++++++++++++++++++++++++++++++++++++++*+++++====================================++++++++++++++======+++++****************#########*##*#*++++++++++++*+++++::::.:--=---------------------------------------------================:::::.:====-=:::::---::::--=======================================================================================================++===--:::::--==++++++++++************************************************************************************************************************************************************************######*+*+++++++++++++++++++++++++++++++++++++++++**********************************************************************#########################################################################################################################################################*##########################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%############################################################################################################################*************#####################################******++++======--------========----------------------------------------------=#%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%###############################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################
*****************************************************************************************************************************#########################################################################################################*****++++++++++++****************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++##++#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@##################********************************************%@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%@@@@@@@@%%%%%%%%%%%%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####+:::::-----=====+++++++++++++++++++++++++++++++%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######################################################################################%%#########################################################################################################************#*#**+++*#**#**++#*+*#*++++++++++++++++++++++++***##**#****************************************************#############***************************-.+***************************************************************+++++++++++++++********************************************************************++++++++++++++++++++++++++++++++++++++++*+++++=====================================++++++++++++++======+++++****************####*#*##*##*#*+++++++++++*+++++::::.:--=---------------------------------------------==============--:.:::::-===-=-::::---::::::--===================================================================================================++++===---:::--===++++++++++************************************************************************************************************************************************************************#####*++++++++++++++++++++++++++++++++++++++++++++*********************************************************************##########################################################################################################################################################*#######################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##########################################################################################################################************#######################################******+++++=====================-------------------------------------------=*%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%###############################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################
*****************************************************************************************************************************#########################################################################################################*****++++++++++++****************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*%*++%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@##################*********************************************#@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%@@@@@@@@%%%%%%%%%%%%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####*+:::::----=====++++++++++++++++++++++++++++++++%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######################################################################################%%#########################################################################################################***#*******#**#**+++*###*#*+*#++#*+++++++++++++++++++++++++*****##*****************************************************#############****************#**********..+***********************************************************+++++++++++++++++++*******************************************************************+++++++++++++++++++++++++++++++++++++++++++++++=====================================++++++++++++++=====+++++********************#**####*#*#*+++++++++**+*+++::::.:--=----------------------------------------------===============-::::::-=-===-::::---:::::::--================================================================================================+++++++===---:---==+++++++++++***********************************************************************************************************************************************************************######*++++++++++++++++++++++++++++++++++++++++++++*********************************************************************#########################################################################################################################################################******#################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########################################################################################################################***********########################################******+++++===================-------------------------------------------*#%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#*#############################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################
*****************************************************************************************************************************#########################################################################################################*****+++++++++++*****************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++%#+++%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#################***********************************************#%@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%@@@@@@@@@%%%%%%%%%%%%@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####**-::::----=====+++++++++++++++++++++++++++++++*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######################################################################################%%%########################################################################################################************####**+++*###*#*+*#++#*++++++++++++++++++++++++++**##***##***##**********************************************############**************************=.:*********************************************************++++++++++++++++++++++******************************************************************+++++++++++++++++++++++++++++++++++++++**+++++++===-=================================++++++++++++++=====+++++**********************########*++++++++++**++++::::::----------------------------------------------=================--:.::::-=-===-::::---:::::::-----==========================================================================================+++++++++++==-------==+++++++***************************************************************************************************************************************************************************#####*+++++++++++++++++++++++++++++++++++++++++++++*********************************************************************#########################################################################################################################################################************##########################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########################################################################################################################**********#########################################*******++++++==================---------------------------------------*#%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@###############################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################
*****************************************************************************************************************************#########################################################################################################*****+++++++++++*****************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#@*++*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#################*************************************************#%@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%@@@@@@@@@%%%%%%%%%%%%@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###***--:::---======+++++++++++++++++++++++++++++++*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########################################################################################%%%#####**################################################################################################************#####**+++*#####**#*+*#*+++++++++++++++++++++++++++**#**#**###*********#**##*********#***********************############*************************#*: -********************************************************++++++++++++++++++++++******************************************************************+++++++++++++++++++++++++++++++++++++++*++++++++=====================================+++++++++++++++====++++++***********************####**#*+=++++++*****++::::::----------------------------------------------==================-:.::::-=-===-::::---:::::::-----=========================================================================================++++++++++++==-------==+++++++**************************************************************************************************************************************************************************######*++++++++++++++++++++++++++++++++++++++++++++**********************************************************************########################################################################################################################################################**************########################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####%%####################################################################################################################*******###########################################*******+++++++=================------------------------------------+#%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@###############################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################
*****************************************************************************************************************************#########################################################################################################*****+++++++++++*****************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*@%+++#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#################****************************************************#%@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%@@@@@@@@%%%%%%%%%%%%%%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###***---::---=====++++++++++++++++++++++++++++++++*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########################################################################################%%%#######################################################################################################************#####*++++*#####**#*+*#++++++++++++++++++++++++++++***#**##**#********#*******#*****#*************************##########***************************+..-******************************************************+++++++++++++++++++++++*******************************************+**********************++++++++++++++++++++++++++++++++++++++**+++++++++=====================================+++++++++++++++====++++++**************************####*+++++++*****++::::::----------------------------------------------================-=--.:::::======-::::--:::::::-----=======================================================================================+++++++++++++++==-----===+++++****************************************************************************************************************************************************************************#####**++++*+++++++++++++++++++++++++++++++++++++++**********************************************************************########################################################################################################################################################+***************######################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#%%%#########################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######################################################################################################################*****#############################################********+++++++================---------------------------------+#%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%##############################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################
*****************************************************************************************************************************#########################################################################################################*****+++++++++++*****************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#@#+++%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#################*****************************************************#@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%@@@@@@@@@%%%%%%%%%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####***--::---======++++++++++++++++++++++++++++++++*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######################################################################################%%%%#####################################################################################################*************#####*++++**##*#***++#*++++++++++++++++++++++++++++******************#*#*+++****#****************************###########***************************- .=*****************************************************+++++++++++++++++++++++*******************************************+*********************+++++++++++++++++++++++++++++++++++++*****++++++++======================================++++++++++++++=====++++++*************************##*##*++++++*****+=::::::---------------------------------------------=================-==-::::::===-==-:::::::::::::-----======================================================================================++++++++++++++++==-----===+++++***************************************************************************************************************************************************************************######*+++++++++++++++++++++++++++++++++++++++++++++*********************************************************************########################################################################################################################################################*+++***************####################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%############################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##############################################################################################################################################################################********+++++++===============-------------------------------+#%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%##############################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################
*****************************************************************************************************************************#########################################################################################################*****+++++++++++*****************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++%@+++*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@################******************************************************#@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%@@@@@@@@@%%%%%%%%%%%%%%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###**#+--::---=====+++++++++++++++++++++++++++++++++#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######################################################################################%%%##*##################################################################################################*************#####*++++**####***+*#++++++++++++++++++++++++++++++**#***#*********#*#**+++**#*#**#**************************#########****************++++*******+. .+****************************************************++++++++++++++++++++++++****************+++**********************+**********************+++++++++++++++++++++++++++++++++++++*******+++++++======================================++++++++++++++====+++++++**************************#*#**+++++*****+=-:::::--=-----------------------------------------==================-=--::::::-==-==-:::::::::::::-----=====================================================================================++++++++++++**+++==-----==++++++**************************************************************************************************************************************************************************######*++++*++++++++++++++++++++++++++++++++++++++++**********************************************************************########################################################################################################################################################+++++*****************#################################################################################################################%%%%%%%%%%%%%%%%%%%%%########%%%#######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#############################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#%%%%#############################################################################################################################################################################******+++++++=================--------------------------=#%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%##############################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################
*****************************************************************************************************************************#########################################################################################################*****+++++++++++****************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*@#+++%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%***#############******************************************************#@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%@@@@@@@@%%%%%%%%%%%%%%%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###**#=-:.---=====++++++++++++++++++++++++++++++++++#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########################################################################################%%#####################################################################################################*************###*#*++++**####*#*+*#+++++++++++++++++++++++++++++++**#**#**********#**++++*#**#*****************************######****************++++++********=. :+*#*************************************************+++++++++++++++++++++++++++++***********+++**********************+**********************++++++++++++++++++++++++++++++++++++**********+++++======================================+++++++++++++++====++++++++************************##*##+++++******=-:::::--=-----------------------------------------==================-=-=::::::-======-::::::::::::-----=====================================================================================++++++++++*****++===----===+++++**************************************************************************************************************************************************************************#####**++*++++++++++++++++++++++++++++++++++++++++++**********************************************************************#######################################################################################################################################################*++++*******************##################################################################################################################%%%%%%%#################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#############################################################################################################################################################################********+++++++==================---------------------=*%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%##############################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################
*****************************************************************************************************************************#########################################################################################################*****+++++++++++****************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#@*++*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%***############*******************************************************#@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@%%%%%%%%%%%%%%%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####***=-::---====+++++++++++++++++++++++++++++++++++#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##########################################################################################%#######################################################################################################***********######++++**####***+#*+++++++++++++++++++++++++++++++**************#****+++****##******************************###***************++++++++*********: .:**************************************************+++++++++++++++++++++++++++++++**********+++*********************+***********************+++++++++++++++++++++++++++++++++++************+++++========---===========================+++++++++++++++====+++++++***************************##*++++******=-:::::-==-----------------------------------------===================-==-:::::-======-::::::::::::-----====================================================================================+++++++++*******+++==----===++++**************************************************************************************************************************************************************************######*+++*++++++++++++++++++++++++++++++++++++++++++******************************************************************###########################################################################################################################################################+++++*****************###############################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%#############################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##############################################################################################################################################################################********+++++++=================-------------------=*%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%##############################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################
*****************************************************************************************************************************#########################################################################################################*****++++++++++*****************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++%#+++%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#***############***********************#%%*****************************#@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%@@@@@@@%%%%%%%%%%%%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####**=-.:--=====+++++++++++++++++++++++++++++++++++#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######################################################################################**##%######################################################################################################*************#*##**++++*###*#*+*#+++++++++++++++++++++++++++++++++**#*********#**#*++++*#**#**********************************************++++++++++*********+...-*************************************************++++++++++++++++++++++++++++++++********++++*********************+***********************++++++++++++++++++++++++++++++++++*************+++++=======----============================+++++++++++++++===++++++++*************************#**#*+++******=-:::::-==-----------------------------------------===================-=--::::::=====--::::::::::::-----==================================================================================+++++++++**********++==----===++++**************************************************************************************************************************************************************************#####*+++++++*+++++++++++++++++++++++++++++++++++++++**************************************************************##############################################################################################################################################################*++++*****************################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%##################################################%%%%#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##################################################################################################################################################################################*******+++++++================-----------------=*%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%##############################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################
*****************************************************************************************************************************#########################################################################################################*****++++++++++*****************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*@+++*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%################***********************%@@*****************************%@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%@@@@@@%%%%%%%%%%%%%%%%%%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####**+=:.--=====++++++++++++++++++++++++++++++++++++#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######################################################################################****#####*###*############################################################################################*************#####**++++*#*###*+#*+++++++++++++++++++++++++++++++++***#**###**#**#*++++*#***********************************************+++++++++++++*********-...=*************************************************+++++++++++++++++++++++++++++++********+++++********************+***********************+++++++++++++++++++++++++++++++++***************++=++===-=-==-:=============================+++++++++++++++===+++++++***************************#***++******=-:::::-===------------------------------------========================-==::::::======-::::::::::::-----==================================================================================+++++++************++==----===++++*************************************************************************************************************************************************************************######*++++++++++++++++++++**++++++++++++++++++++++++************************************************************#################################################################################################################################################################*+++****************####################################################################################################################################################################%%%%%%%%%%%%%%%%%%######################################################%%%%%%#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#########%%%%##%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#%####################################################################################################################################################################################*******+++++++=================-------------=*#%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#**###########################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################
*****************************************************************************************************************************#########################################################################################################*****++++++++++*****************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++##+++%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#################**********************#@@@****************************%@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%@@@@@@%%%%%%%%%%%%%%%%%%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####**+=::-======++++++++++++++++++++++++++++++++++++%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######################################################################################***+*####################################################################################################***************##*##**+*++*##*##**#*++++++++++++++++++++++++++++++++++**##**#***#*#**++++*#*##******************************************++++++++++++++*********+....+*#*#*****************************************+++++++++++++++++++++++++++++++++++*******+++++*******************+***********************++++++++++++++++++++++++++++++++++***************+++++=======-=::==-===-=====================+++++++++++++++====+++++++****************************#**+*****+=-:::::-====-==--------------------------------========================-==::::::--=====-:::::::::::-----================================================================================++++++++*************++==----===++++*************************************************************************************************************************************************************************#####**++++++++++++++++++++**++++++++++++++++++++++++********************************************************#####################################################################################################################################################################*+******************#####################################################################################################################################################################%%%%%%%%%%%%#%%##########################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###############%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######################################################################################################################################################################################*******+++++++================-----------=+#%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#***##########################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################
*****************************************************************************************************************************#########################################################################################################*****++++++++++*****************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*++++++*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#+++*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%###################**********************%@@@#**************************#@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@%%%%%%%%%%%%%%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####**+=:-======++++++++++++++++++++++++++++++++++++*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######################################################################################**++*##################################################################################################*****************#*###*+++++*##*#***#+++++++++++++++++++++++++++++++++++**#**###*##*#*+++++#*#*******************************************++++++++++++++**********=...:*********************************************+++++++++++++++++++++++++++++++++++*******++++********************+***********************+++++++++++++++++++++++++++++++++*****************++++=-=-=-==--.:============================+++++++++++++++===+++++++****************************##*******+---::::-====-======---------------------------=========================-==-:::::--=====-:::::::::::-----===============================================================================++++++++**************++==----===++++************************************************************************************************************************************************************************######*++++++++++++++++++++***+*++++++++++++++++++++++***************************************************###############%%%%######################################################################################################################################################*******************###########################################################################################################################################################################%%######################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##############%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######################################################################################################################################################################################********++++++=========================+#%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#****###########################################################################################################################################################################################################################################################################################################################################################################################################################################################################################**********####################################################################################################################################################################################
****************************************************************************************************************************##########################################################################################################*****++++++++++*****************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*++++++*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**+++@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%####################**********************%@@@%**************************%@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@%%%%%%%%%%%%%%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####**==:-=====+++++++++++++++++++++++++++++++++++++*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########################################################################################****###################################################################################################*****************#####*++*++*##*#**#*++++++++++++++++++++++++++++++++++++*#**##**#*##*++++*#*********************************************++++++++++++++**********:.. -**#*****************************************+++++++++++++++++++++++++++++++++++******+++++********************+***********************+++++++++++++++++++++++++++++++++******************++++-========: -=-===-=====================++++++++++++++++===+++++++****************************##******+---::::-=============-------------------------============================-:::::--=====-:::::::::::-----=============================================================================++++++++*****************+==----===++++************************************************************************************************************************************************************************#####**+*+++++++++++++++++****+*++++++++++++++++++++++*************************************************##############%%%%%%%######################################################################################################################################################******************#####################################################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###%%%%%%####%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######################################################################################################################################################################################********++++++======================+#%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#*****#######################################################################################################################################################################################################################################################################################################################################################################################################################################################################################******************###############################################################################################################################################################################
****************************************************************************************************************************#########################################################################################################******++++++++++*****************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#++++++*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%@@@@@@%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%######################**********************@@@@%*************************%@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@%%%%%%%%%%%%%%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####**+=--====++++++++++++++++++++++++++++++++++++++*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##########################################################################################**####################################################################################################*****************#####*++*++*#**#**#*++++++++++++++++++++++++++++++++++++*#**##***##*+++++*#********************************************+++++++++++++++*********=....=*******************************************+++++++++++++++++++++++++++++++++++******+++++*******************+************************++++++++++++++++++++++++++++++++*******************++++-:======-=..-===========================++++++++++++++++==++++++++****************************##*****+---::::-==============------------------------=============================:::::-=-=====:::::::::::----============================================================================+++++++++******************+==----===++++***********************************************************************************************************************************************************************#####**++++++++++++++++++++***++++++++++++++++++++++++*************************************************###########%%%%%%%%%%%######################################################################################################################################################****************###########################################################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#########################################################################################################################################################################################********+++++++===================#%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#*****######################################################################################################################################################################################################################################################################################################################################################################################################################################################################################***********************###########################################################################################################################################################################
****************************************************************************************************************************#########################################################################################################******++++++++++*****************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#++++++#+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#=#%--=+*%@%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#########################**********************@@@@@#***********************#@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@%%%%%%%%%%%%%%%%%%%%@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####**++======++++++++++++++++++++++++++++++++++++++*%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###########################################################################################*#####################################################################################################*****************#####*+++++*###***#++++++++++++++++++++++++++++++++++++**#**#**#**#*+++++*#********************************************++++++++++++++**********-....+******************************************++++++++++++++++++++++++++++++++++++****++++++*******************+************************++++++++++++++++++++++++++++++++********************+++=.:====-=--..-=-=========================++++++++++++++++=+++++++++****************************#*****=----:::================----------------------==============================-:::::=====-=-::::::::::----==========================================================================++++++++++*******************++==---===++++**********************************************************************************************************************************************************************######*++*+++++++++++++++++****++++++++++++++++++++++++************************************************#########%%%%%%%%%%%%%#######################################################################################################################################################***************#############################################################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##%%%%%#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########################################################################################################################################################################################********+++++++================*%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#*****######################################################################################################################################################################################################################################################################################################################################################################################################################################################################################*************************#########################################################################################################################################################################
****************************************************************************************************************************#########################################################################################################******++++++++++*****************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#++++++*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%=.:#%:...:=%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@%###########################*********************#@@@@@#**********************#@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@%%%%%%%%%%%%%%%%%%%%@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####***++====+++++++++++++++++++++++++++++++++++++++#%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##########################################################################################*########################################################################################################****************##*##*++*++*#*#**#*++++++++++++++++++++++++++++++++++++*##**#****#*+++++***********************************************++++++++++++++*********+... .****#*************************************++++++++++++++++++++++++++++++++++++****++++++******************++************************+++++++++++++++++++++++++++++++*********************++++: -====-=-- :-==-========================++++++++++++++++++++++++++****************************#****=-----::=================-------------------================================-:::::-====-=-:::::::::-----========================================================================+++++++++++********************++==---===++++**********************************************************************************************************************************************************************#####**++++++++++++++++++++****++*+++++++++++++++++++++************************************************######%%%%%%%%%%%%%%%%#######################################################################################################################################################*#*************################################################################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##%%%%##%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#########################################################################################################################################################################################*******++++++==============*%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#******#####################################################################################################################################################################################################################################################################################################################################################################################################################################################################################***************************#######################################################################################################################################################################
****************************************************************************************************************************#########################################################################################################*****+++++++++++*****************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++====++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#++++++*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%+:.::#%::::.:*%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@%###########################*********************#@@@@@%**********************%@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@%%%%%%%%%%%%%%%%%%%%@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####****+++==++++++++++++++++++++++++++++++++++++++++#%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##########################################################################################*###################################################################################################*#####****************#####*++**+*#*#**#*+++++++++++++++++++++++++++++++++++*#***##*#**#++++++***********************************************+++++++++++++**********-....:*****************************************+++++++++++++++++++++++++++++++++++****+++++++***************#**+*************************++++++++++++++++++++++++++++++*********************+*+++= -=======: :============================++++++++++++++++++++++++++***************************##***=-----::=================------------------============================-===-=:::::-=-=====:::::::::-----=====================================================================++++++++++++**********************++==---===++++*********************************************************************************************************************************************************************######*++++++++++++++++++++****+++*+++++++++++++++++++++************************************************#####%%%%%%%%%%%%%%%%%#######################################################################################################################################################******##***####################################################################################################################################################################################################################################################################%#######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##%%%%######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###########################################################################################################################################################################################******+++++=============*%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#******#####################################################################################################################################################################################################################################################################################################################################################################################################################################################################################****************************######################################################################################################################################################################
****************************************************************************************************************************#########################################################################################################*****+++++++++++*****************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=========++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%*:..:.:#%::::::*%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@############################*********************%@@@@@@*********************%@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@%%%%%%%%%%%%%%%%%%%%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####****+++++++++++++++++++++++++++++++++++++++++++++#%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########################################################################################***###################################################################################################******##**#************#####*++*++*#****#++++++++++++++++++++++++++++++++++++#**##**#****++++++#*#**#*#***************************************+++++++++++++**********... .=****************************************+++++++++++++++++++++++++++++++++++****+++++++*****************++************************+++++++++++++++++++++++++++++++***********************++++: .-=======. -===========================++++++++++++++++++++++++++*****************************#**=-----::====-============---------------==================================-==-::::-=======:::::::::-----===================================================================+++++++++++++***********************++==---===++++********************************************************************************************************************************************************************######**++++++++++++++++++++****+*+++*++++++++++++++++++*************************************************#####%%%%%%%%%%%%%%%%%########################################################################################################################################################**********################################################################################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##########################################################################################################################################################################################****+++++============+#%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#******#####################################################################################################################################################################################################################################################################################################################################################################################################################################################################################*****************************#####################################################################################################################################################################
****************************************************************************************************************************#########################################################################################################*****+++++++++++*****************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++============++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#-.::::.:%%::.::=#%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@%############################*********************%@@@@@@#*******************%@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@%%%%%%%%%%%%%%%%%%%%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####****+++++++++++++++++++++++++++++++++++++++++++++%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#########################################################################################***#################################################################################################*******#*##**#*************####*++*+**##****+++++++++++++++++++++++++++++++++++*#*****#****++++++*#**##*#***************************************++++++++++++++*********=... .+*********#*****************************+++++++++++++++++++++++++++++++++++****++++++******************+*************************+++++++++++++++++++++++++++++++***********************++++=. .-=-====- ====-=======================++++++++++++++++++++++++++*******************************==-----:=================-----===============================================-::::-=-=====-::::::::-----================================================================++++++++++++++*************************++==---===++++********************************************************************************************************************************************************************######*++++++++++++++++++++*****++++**++++++++++++++++++**************************************************####%%%%%%%%%%%%%%%%%########################################################################################################################################################*********#################################################################################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#########################################################################################################################################################################################****++++============+#%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#******#####################################################################################################################################################################################################################################################################################################################################################################################################################################################################################******************************####################################################################################################################################################################
****************************************************************************************************************************#########################################################################################################*****+++++++++++*****************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***********************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*##%%@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%=:..::::.:%%:::+%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@%###########################**********************%@@@@@@%*****************#%@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@%%%%%%%%%%%%%%%%%%%%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####****++++++++++++++++++++++++++++++++++++++++++++*%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#########################################################################################**###################################################################################################***+***#*##*##*************####**+++**##**#*++++++++++++++++++++++++++++++++++*#***#**#**#*++++++*#*#*#*****************************************++++++++++++++*********: ....**#************************************+++++++++++++++++++++++++++++++++++***+++++++*****************++*************************++++++++++++++++++++++++++++++**************************+++- :=====-=- .-===========================+++++++++++++++++++++++++*****************************#**=------==================---================================================-:::::=-=====-::::::::-----=============================================================++++++++++++++++**************************++==---===++++*******************************************************************************************************************************************************************######**+++++++++++++++++++******++++**+++++++++++++++++***************************************************####%%%%%%%%%%%%%%%%#########################################################################################################################################################*********##################################################################################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######################################################################################################################################################################################***++++============+#%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#******#####################################################################################################################################################################################################################################################################################################################################################################################################################################################################################********************************##################################################################################################################################################################
***************************************************************************************************************************##########################################################################################################*****+++++++++++*****************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***********************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++======================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%+:.::..:::.:%%::*%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@%###########################**********************%@@@@@@@%***************#%@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@%%%%%%%%%%%%%%%%%%%%%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####****++++++++++++++++++++++++++++++++++++++++++++*%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#########################################################################################*##################################################################################################*#**++++*##*##*#**************#**#*******##***+++++++++++++++++++++++++++++++++++*#*****#**#*+++++++****#******************************************+++++++++++++++*******=. ...:***************************************++++++++++++++++++++++++++++++++++**++++++++*****************++*************************+++++++++++++++++++++++++++++***************************++++. :-=-====: :===========================++++++++++++++++++++++++++*******************************+=-----===================================================================--=:::::-=======::::::::-----==========================================================+++++++++++++++++****************************++==---==++++********************************************************************************************************************************************************************#####**+++++++++++++++++++******+++++**+++++++++++++++++***************************************************####%%%%%%%%%%%%%%%%#########################################################################################################################################################********###*###############################################################################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####################################################################################################################################################################################***++++==============#%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#*******####################################################################################################################################################################################################################################################################################################################################################################################################################################################################################*********************************#################################################################################################################################################################
***************************************************************************************************************************##########################################################################################################*****+++++++++++*****************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===========================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#-.::.::::.:.-%%-+%@%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@%%%%@@@@@############################**********************%@@@@@@@@%#************%@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@%%%%%%%%%%%%%%%%%%%%%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######***++++++++++++++++++++++++++++++++++++++++++++#%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#########################################################################################################################################################################################*###***+++++**####*##**************##*#**+****##*#*++++++++++++++++++++++++++++++++++*##****#***#*++++++*#*#********************************************+++++++++++++++*******:.....=***#**********************************+++++++++++++++++++++++++++++++++***++++++++*****************+*************************++++++++++++++++++++++++++++++****************************+++- -====-=-. -===========================++++++++++++++++++++++++++****************************#**+=----====================================================================-=-::::-=======-:::::::----=========================================================++++++++++++++++++*************************#****+===--==++++********************************************************************************************************************************************************************#####*++++++++++++++++++++******++++***+++++++++++++++++****************************************************###%%%%%%%%%%%%%%%##############################################################################################################################################################****##***###############################################################################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##################################################################################################################################################################################***++++==============*%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#*******####################################################################################################################################################################################################################################################################################################################################################################################################################################################################################*********************************#################################################################################################################################################################
***************************************************************************************************************************##########################################################################################################*****+++++++++++*****************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++============================================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%=..:.::::.::..=%%+%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@%%%%%@@@@@############################**********************%@@@@@@@@@@%#********%@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@%%%%%%%%%%%%%%%%%%%%%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######***++++++++++++++++++++++++++++++++++++++++++++#%%%%%%%%%%%%##%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%############################################################################################################################################################################################***+++++++++*######***************#*##*******##*#*++++++++++++++++++++++++++++++++++*#****#*#*#*+++++++*##*********************************************++++++++++++++++*****+......+#************************************+++++++++++++++++++++++++++++++++**+++++++++****************++*************************+++++++++++++++++++++++++++++*********************##******++++. -======- -===========================++++++++++++++++++++++++++*******************************=----======================================================================-::::-=======-::::::-----====================================================+++++++++++++++++++++***************************#****++==-====+++*******************************************************************************************************************************************************************#####**++*+++*++++++++++++*******++++**++++++++++++++++++****************************************************####%%%%%%%%%%%%%%##############################################################################################################################################################***###***################################################################################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###############################################################################################################################################################################***+++===============*%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#*******####################################################################################################################################################################################################################################################################################################################################################################################################################################################################################**********************************################################################################################################################################################################
***************************************************************************************************************************##########################################################################################################*****+++++++++++*****************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===================================================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@*:.::..:::.::::.+%%#%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@%%%%%%@@@@@############################**********************%@@@@@@@@@@@@@%%%%%%@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@%%%%%%%%%%%%%%%%%%%%%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######***++++++++++++++++++++++++++++++++++++++++++++#%%%%%%%%%%%%##%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########################################################################################################################################################################################*****++++++++++++*###**#***************#####******#*#*++++++++++++++++++++++++++++++++++****#*#***##*+++++++************************************************++++++++++++++++*****- ....:*#***********************************++++++++++++++++++++++++++++++++++*++++++++****************++**************************++++++++++++++++++++++++++++*********************###******++++= .-==-===- .-=-========================+++++++++++++++++++++++++++*******************************=---======================================================================-:::::=======-::::::-----============================================+++++++++++++++++++++++++++****************************##****++=======+++******************************************************************************************************************************************************************######*++++++++++++++++++++*******++*+**+++++++++++++++++*****************************************************####%%%%%%%%%%%%%%##############################################################################################################################################################***###***#################################################################################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%############################################################################################################################################################################**+++===============+#%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#*******####################################################################################################################################################################################################################################################################################################################################################################################################################################################################################**********************************################################################################################################################################################################
***************************************************************************************************************************##########################################################################################################*****++++++++++******************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=====================================================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*%@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@#=.:::.:.:..:.:.::*%%%%%%%%%#%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@%%%%%%@@@@@@############################**********************%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######***++++++++++++++++++++++++++++++++++++++++++++#%%%%%%%%%%%%#*%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####################################################################################################################################################################################*******+++++++++++++++*######***************#####******###*++++++++++++++++++++++++++++++++++***#****#**#+++++++*#*#*********************************************+++++++++++++++++++*+......-************************************+++++++++++++++++++++++++++++++++++++++++++****************++**************************++++++++++++++++++++++++++++*******************#####*******++++: :-======. :-==========================+++++++++++++++++++++++++++*******************************=--===============================================================-=======-::::-=======::::::-----==================================+++++++++++++++++++++++++++++++++********************************##****++=======+++******************************************************************************************************************************************************************#####**+*+++++++++++++++++*******+*+*+**+++++++++++++++++*****************************************************####%%%%%%%%%%%%%%##############################################################################################################################################################***###***#################################################################################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###########################################################################################################################################################################***+++==============+#%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%*******####################################################################################################################################################################################################################################################################################################################################################################################################################################################################################***********************************###############################################################################################################################################################
***************************************************************************************************************************##########################################################################################################*****++++++++++******************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++============================================================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#@@@@@@@@@@@@@@@@@@@@%%@@@@@@@+:.:::::::.::::::.:#%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@%%%%%%@@@@@@%#############%#############**********************%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######***++++++++++++++++++++++++++++++++++++++++++++%%%%%%%%%%%%%#*#%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####################################################################################################################################################################################*****+++++++++++++++++++*#####*****************####******##**+++++++++++++++++++++++++++++++++*##*#*#*#**#*+++++++*#***********************************************++++++++++++++++++++-......=***********************************++++++++++++++++++++++++++++++++++++++++*++****************+**************************++++++++++++++++++++++++++++*******************######*******++++=. :======= -===========================++++++++++++++++++++++++++*******************************+-========================================================================-::::-=======-:::::----=============================+++++++++++++++++++++++++++++++++++++*********************************####***++=======++++****************************************************************************************************************************************************************#####***++++++++++++++++++*********+****++++++++++++++++++****************************************************#####%%%%%%%%%%%%%#######################################################################################################################################################################################################################################################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##########################################################################################################################################################################***+++++============+#%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%*******####################################################################################################################################################################################################################################################################################################################################################################################################################################################################################***********************************###############################################################################################################################################################
***************************************************************************************************************************##########################################################################################################*****++++++++++******************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==============================================================+++++++++++++++++++++++++++++++++++++++++++++++++++++++*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*%@@@@@@@@@@@@@@@@@@@%%@%@@@#-:.:..:::.::.::.::::#%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@%%%%%%%@@@@@@%############%@#############**********************%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######***++++++++++++++++++++++++++++++++++++++++++++%%%%%%%%%%%%%#*#%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####################################################################################################################**###########**##############################################****##*++++++++++++++++++++++*####******************###********#*++++++++++++++++++++++++++++++++++*#**##****#*+++++++**#**++++++++*************************************+++++++++++++++++++=.......+**********************************+++++++++++++++++++++++++++++++++++++++++++***************++**************************+++++++++++++++++++++++++++******************#########*******++++- -======- -==========================++++++++++++++++++++++++++++******************************+========================================================================-::::-=======-:::::----===================++++++++++++++++++++++++++++++++++++++++++++***********************************#####***++=======++++****************************************************************************************************************************************************************#####**+++++++++++++++++++*********+***+++++++++++++++++++****************************************************#####%%%%%%%%%%%%%#######################################################################################################################################################################################################################################################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########################################################################################################################################################################****++++++++========#%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%*******####################################################################################################################################################################################################################################################################################################################################################################################################################################################################################************************************##############################################################################################################################################################
***************************************************************************************************************************##########################################################################################################*****++++++++++******************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==================================================================+++++++++++++++++++++++++++++++++++++++++++++++++++#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++@@@@@@@@@@@@@@@@@@@@%%%@@%*::::::.::::::::.:::::%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@%%%%%%%%@@@@@@@###########%@@#############**********************%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######***+++++++++++++++++++++++++++++++++++++++++++*%%%%%%%%%%%%%#**%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####################################################################################################################***#########################################################**+***#**++++++++++++++++++++++*####******************####******##*+++++++++++++++++++++++++++++++++*#**#***#**#*+++++++*##*+++++++++**************************************++++++++++++++++++-......:**********************************++++++++++++++++++++++++++++++++++++++++++***************++***************************++++++++++++++++++++++++++*****************############******+++++: .-======: .====-======================++++++++++++++++++++++++++++******************************+========================================================================-:::-=======-::::----==============++++++++++++++++++++++++++++++++++++++++++++++++*************************************#####***++=======++++***************************************************************************************************************************************************************#####**+++++++++++++++++++*********+****+++++++++++++++++++****************************************************#####%%%%%%%%%%%%#######*################################################################################################################################################################################################################################################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######################################################################################################################################################################*******+++++++=====*%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%********###################################################################################################################################################################################################################################################################################################################################################################################################################################################################################************************************##############################################################################################################################################################
***************************************************************************************************************************##########################################################################################################*****++++++++++******************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===================================================================++++++++++++++++++++++++++++++++++++++++++++++++++#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++%@@@@@@@@@@@@@@@@@@%%%@@#-:..::.::::::..:.::::::%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@%%%%%%%%%%@@@@@@%##########@@@#############**********************%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######***+++++++++++++++++++++++++++++++++++++++++++*%%%%%%%%%%%%%***#%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####################################################################################################################****####*****#######*########################################**+++**##**+++++++++++++++++++++*####******************####******##*+++++++++++++++++++++++++++++++++**#****#**#*++++++++*#**++++++++**************************************+++++++++++++++++++.......=***#*****************************++++++++++++++++++++++++++++++++++++++++++***************++**************************+++++++++++++++++++++++++++****************#############*******++++=. .=======. .===========================+++++++++++++++++++++++++++*******************************========================================================================-::::=======--:::----=========++++++++++++++++++++++++++++++++++++++++++++++++++****************************************#####****++======++++**************************************************************************************************************************************************************######*+++++++++++++++++++*********+*****+++++++++++++++++++***************************************************#####%%%%%%%%%%%%%######**################################################################################################################################################################################################################################################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######################################################################################################################################################################*********+++++===*%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%*********##################################################################################################################################################################################################################################################################################################################################################################################################################################################################################*************************************#############################################################################################################################################################
***************************************************************************************************************************##########################################################################################################*****++++++++++******************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++========================================================================+++++++++++++++++++++++++++++++++++++++++++++%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*@@@@@@@@@@@@@%%@@@%%%%+::::::::.::..:::.::.::::%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@%%%%%%%%%%%%@@@@@@@#########%@@@#############**********************%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######***+++++++++++++++++++++++++++++++++++++++++++#%%%%%%%%%%%%%***#%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####################################################################################################################****####******###############################################****++***#**+++++++++++++++++++++*###********************##*******##*++++++++++++++++++++++++++++++++*##********#*+++++++**#*+++++++++**************************************++++++++++++++++++-.......+#*******************************++++++++++++++++++++++++++++++++++++++++++**************++***************************++++++++++++++++++++++++++**************#################*******++++- :=======. :===--======================+++++++++++++++++++++++++++*******************************=======================================================================-::::-=======-::----========++++++++++++++++++++++++++++++++++++++++++++++++*******************************************#######***++======+++***************************************************************************************************************************************************************#####***+*+++++++++++++++****************+++++++++++++++++++**************************************************######%%%%%%%%%%%%#######*##*##############################################################################################################################################################################################################################################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#########################################################################################################################################################################*******+++++*#%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%*********##################################################################################################################################################################################################################################################################################################################################################################################################################################################################################*************************************#############################################################################################################################################################
***************************************************************************************************************************##########################################################################################################*****++++++++++******************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===========================================================================++++++++++++++++++++++++++++++++++++++++++%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#@@@@@@@@@@@@%*%@%%%#-:::::::::::::::::::.:::::%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@%%%%%%%%%%%%%@@@@@@@%#######%@@@@#############**********************%@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######***+++++++++++++++++++++++++++++++++++++++++++#%%%%%%%%%%%%%****%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#########%%%%#######################################################################################################*****##********################################################**#*****##**++++++++++++++++++++*###***********************+++***##*++++++++++++++++++++++++++++++++**##*#**#*#*++++++++*##*+++++++++**************************************++++++++++++++++++: .....:*#******************************++++++++++++++++++++++++++++++++++++++++++**************++***************************+++++++++++++++++++++++++*************####################*******++++:.. .-======- -==========================+++++++++++++++++++++++++++*******************************+=======================================================================-:::-=======-::----=====+++++++++++++++++++++++++++++++++++++++++++++++***********************************************#######***++======+++**************************************************************************************************************************************************************######*+++*++++++++++++++****************+++++++++++++++++++**************************************************#######%%%%%%%%%%%%#######*##*##############################################################################################################################################################################################################################################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%############################################################################################################################################################################*******++*#%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%*********##################################################################################################################################################################################################################################*###############################################################################################################################################################################################################################################*************************************#############################################################################################################################################################
***************************************************************************************************************************##########################################################################################################*****++++++++++******************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++============================================================================++++++++++++++++++++++++++++++++++++++++*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#@@@@@@@@@@@@*=#%%*:..::.:::::::.:::..::::::.:%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@%%%%%%%%%%%%%%@@@@@@@@@%%%%%@@@@@@#############**********************%@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######***+++++++++++++++++++++++++++++++++++++++++++%%%%%%%%%%%%%%****#%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#########%%%%%%######################################################################################################*****##*********######**########################################*##******##*+++++++++++++++++++**###*********************+++++***##*+++++++++++++++++++++++++++++++**#**#*****#*++++++++*#*++++++++++*************************************++++++++++++++++++-.......-*#****************************++++++++++++++++++++++++++++++++++++++++++**************++***************************++++++++++++++++++++++++++************######################******++++=.....=======: -=--=======================+++++++++++++++++++++++++++*******************************+======================================================================-:::-=======--:----====+++++++++++++++++++++++++++++++++++++++++++****************************************************#######***++======+++**************************************************************************************************************************************************************#####*+*+*+++++++++++++++***************++++++++++++++++++++************************************************#######%#%%%%%%%%%%%########**################################################################################################################################################################################################################################################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###########################################################################################################################################################################*******#%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%********##################################################################################################################################################################################################################################***##############################################################################################################################################################################################################################################**************************************############################################################################################################################################################
***************************************************************************************************************************##########################################################################################################*****++++++++++******************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++============================================================================++++++++++++++++++++++++++++++++++++++++*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=#@@@@@@@@@@@*::*#::::::::::::::::::::::=:::.:%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@#############*********************#@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######***+++++++++++++++++++++++++++++++++++++++++++%%%%%%%%%%%%%#****#%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########%%%%%%%######################################################################################################*****#*#********####*****#####################################*##*##########**++++++++++++++++++**##********************+++++++***#*++++++++++++++++++++++++++++++++****#*#*#***++++++++*##*+++++++++++************************************++++++++++++++++++:.......+*****************************++++++++++++++++++++++++++++++++++++++++++*************+++***************************+++++++++++++++++++++++++************########################*******+++-....:=======. .-::-=======================+++++++++++++++++++++++++++*******************************+=====================================================================-:::-========------====+++++++++++++++++++++++++++++******************************************************************#######***++======+++*************************************************************************************************************************************************************#####*+**++*+++++++++++++***************+++++++++++++++++++++**********************************************########%%%%%%%%%%%%%%########**################################################################################################################################################################################################################################################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#############################################################################################################################################################################****#%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%********##################################################################################################################################################################################################################################***##############################################################################################################################################################################################################################################**************************************############################################################################################################################################################
***************************************************************************************************************************##########################################################################################################*****++++++++++******************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=============================================================================+++++++++++++++++++++++++++++++++++++++*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==*%@@@@@@@@@*::##::::::::::::::::::::.=+:::::%%%%%%%%%%#%%%%%%%%%%%%%%@@@@@@@%%%%%%%%%%%%#+%%@@@@@@@@@@@@@@@@@@@@############**********************@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######***++++++++++++++++++++++++++++++++++++++++++*%%%%%%%%%%%%%#*****%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######%%%%%%%%%%%#####################################################################################################*****#***********##*#*****##########%########################*###############**++++++++++++++++++**##********************++++++++*##*+++++++++++++++++++++++++++++++*#*******###*++++++++*#**++++++++++++**********************************++++++++++++++++++=.......:**#*#************************++++++++++++++++++++++++++++++++++++++++++*************++****************************+++++++++++++++++++++++*************##########################*****+**++:....-======- ...:-=======================+++++++++++++++++++++++++++*******************************+=====================================================================-:::========-:---====++++++++++++++++++++++*+***********************************************************************########***+++=====++++***********************************************************************************************************************************************************######**+++*++++++++++++++***************++++++++++++++++++++*********************************************#########%%#%%%%%%%%%%%%####################################################################################################################################################################################################################################################################################################################################################################################################################################################%######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###########################################################################################################################################################################%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%********################################################################################################################################################################################################################################******#############################################################################################################################################################################################################################################***************************************###########################################################################################################################################################
***************************************************************************************************************************#########################################################################################################******++++++++++******************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=============================================================================+++++++++++++++++++++++++++++++++++++++*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==-+%@@@@@@@%=::##:::::::::::::::::::::#-::::-%%%%%%%%%%#%%%%%%%%%%%%%%@@@@@@%%%%%%%%%%%%%=.@@%@@@@@@@@@@@@@@@@@@@###########**********************%@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######***++++++++++++++++++++++++++++++++++++++++++*%%%%%%%%%%%%%#*****#@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######%%%%%%%%%%%#####################################################################################################*****************##*#***+**#####*#############################################***+++++++++++++++++**##*******************++++++++*###*++++++++++++++++++++++++++++++****##***#*#*++++++++*##*++++++++++++***********************************++++++++++++++++++: .... .-#*#*************************+++++++++++++++++++++++++++++++++++++++++**************++***************************++++++++++++++++++++++++*************###########################*******++=.....-======- :-::=-=====================+++++++++++++++++++++++++++********************************+====================================================================-:::-=======-----===++++++++++++++++++******************************************************************************########***+++=====++++**********************************************************************************************************************************************************######***+++++++++++++++++***************+++++++++++++++++++++******************************************##########%%%%%%%%%%%%%%%%############################################################################################################################################################################################################################################################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########################################################%%%%%%%%%%########################################################################################################%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%********################################################################################################################################################################################################################################******#############################################################################################################################################################################################################################################***************************************###########################################################################################################################################################
***************************************************************************************************************************#########################################################################################################******++++++++++******************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=============================================================================+++++++++++++++++++++++++++++++++++++++#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==--=%@@@@@%+:.-%+:::::::::::::::::::.+#::::.=%%%%%%#%%%#%%%%%%%%%%%%%@@@@@@%%%%%%%%%%%%%#. %@@@@@@@@@@@@@@@@@@@@@##########**********************#@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######***++++++++++++++++++++++++++++++++++++++++++#%%%%%%%%%%%%%#*****#%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####%%%%%%%%%%%%%####################################################################################################******************##*#******#####**#####################**#################*#####***++++++++++++++++**##*******************++++++++*###+++++++++++++++++++++++++++++++*#*###**#*##*++++++++###*++++++++++++***************#*******************++++++++++++++++*=........+##***********************#*+++++++++++++++++++++++++++++++++++++++++*************++****************************+++++++++++++++++++++++*************#############################*******++=....:=======: .--::=======================+++++++++++++++++++++++++++********************************====================================================================-:::-========---====+++++++++++++***********************************************************************************########****++=====++++**********************************************************************************************************************************************************#####**++++++++++++++++++****************+++++++++++++++++++++************************************################%%%%#%%%%%%%%%%%####################################################################################################################################################################################################################################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%#######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####################################################%%%%%%%%%%%%#######################################################################################################%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%*********###############################################################################################################################################################################################################################******#############################################################################################################################################################################################################################################***************************************###########################################################################################################################################################
***************************************************************************************************************************#########################################################################################################******++++++++++******************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++****#####**********************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==============================================================================++++++++++++++++++++++++++++++++++++++#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==--:=#%%*-:.::+#-::::::::::::::::::::#=::::.*%%%%%%###%#%%%%%%%%%%%%%@@@@@%%%%%%%%%%%%%%+ %@@@@@@@@@@@@@@@@@@@@@########***********************#@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######***++++++++++++++++++++++++++++++++++++++++++#%%%%%%%%%%%%%#******%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######%%%%%%%%%%%%####################################################################################################*******************#*#******#####+*#########################################*######***+++++++++++++++**#********************+++++++***#*++++++++++++++++++++++++++++++*#####*****#*++++++++*##*++++++++++++++*************#********************++++++++++++++++*-.......:**#**#*******************#*+++++++++++++++++++++++++++++++++++++++++*************+*****************************+++++++++++++++++++++++*************##############################*******++:....:=====-=. :--:-=======================+++++++++++++++++++++++++++*******************************+====================================================================-::-========---===+++++++++++**************************************************************************************########****+++====++++*********************************************************************************************************************************************************######*++++++++++++++++++****************+++++++++++++++++++++****************************########################%%%%##%%%%%%%%%%################################################################################################################################################################################################################################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%#######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#################################################%%%%%%%%%%%%%%%######################################################################################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%*********##############################################################################################################################################################################################################################********############################################################################################################################################################################################################################################****************************************##########################################################################################################################################################
***************************************************************************************************************************#########################################################################################################******+++++++++*******************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++***#########*******************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===============================================================================+++++++++++++++++++++++++++++++++++++#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==--:::::::::::##::::::::::::::::::::+%:::::.#%%%%%#########%%%%%%%%%%@@@@@%%%%%%%%%%%%%%: %@@%@%%@@@@@@@@@@@@@@@%######************************%@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######***+++++++++++++++++++++++++++++++++++++++++*%%%%%%%%%%%%%%*******#%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######%%%%%%%%%%%%####################################################################################################****************************#####++*#####**##########***######**######################***+++++++++++++**#********************++++*++**#*+++++++++++++++++++++++++++++++*#**##**####*++++++++*##++++++++++++++**************#********************+++++++++++++*+++: ......+****#*******************#*++++++++++++++++++++++++++++++++++++++++*************++****************************+++++++++++++++++++++++*************################################******++=:....-======-..---:-======================++++++++++++++++++++++++++++*******************************+===================================================================-:::=========--===+++++++++************************************************************************************############****+++===+++++********************************************************************************************************************************************************######***++**++++++++++++*****************+++++++++++++++++++++**********************###########################%%%%%%###%%%%%%%%%%#############################################################################################################################################################*################################################################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%#######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#############################################%%%%%%%%%%%%%%%%%%#####################################################################################################%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%**********#############################################################################################################################################################################################################################********############################################################################################################################################################################################################################################****************************************##########################################################################################################################################################
***************************************************************************************************************************#########################################################################################################******+++++++++*******************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++***##########******************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===============================================================================+++++++++++++++++++++++++++++++++++++#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===--:::::::::.=##::::::::::::::::::::#*:.::.:%%%%%%###########%%%%%%%%@@@@%%%%%%%%%%%%%%+ %@@@@%%%@@@@@@@@@@@@@@%######***********************#@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######***+++++++++++++++++++++++++++++++++++++++++*%%%%%%%%%%%%%%********%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####%%%%%%%%%%%%%%####################################################################################################*****************************####++*#####*+++***########*#***###################*#######****+++++++++++**#***********************++++**#*++++++++++++++++++++++++++++++*#*###**##*#*++++++++*##*+++++++++++++***************##*******************+++++++++++++*+*=.......-#*#********************#**++++++++++++++++++++++++++++++++++++++++*************+*****************************++++++++++++++++++++++**************################################*******++-.....-======:.:-=---======================++++++++++++++++++++++++++++*******************************+==================================================================-:::-========-===+++++++++************************************************************************************#############****+++===+++++********************************************************************************************************************************************************######*++++++++++++++++++***************+++++++++++++++++++++++****************#################################%%%%%%###%%%%%%%%%###############################################################################################################################################################################################################################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######################################%%%%%%@@@@@@@@@@@%%%%%%####################################################################################################%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%*+********#############################################################################################################################################################################################################################*********###########################################################################################################################################################################################################################################****************************************##########################################################################################################################################################
***************************************************************************************************************************#########################################################################################################******+++++++++*******************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++****##########******************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++================================================================================++++++++++++++++++++++++++++++++++++%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===--::::::::::*%#:::::::::::::::::::=%-..::.-%%%%%%###########%%%%%%#%@@@%%%%%%%%%%%%%%#: .@@@@@%%%@@@@@@@@@@@@@@%######**********************#@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######***+++++++++++++++++++++++++++++++++++++++++#%%%%%%%%%%%%%#********%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###%%%%%%%%%%%%%%%####################################################################################################*****************************####*+**####*++++++++**##########**###########################***++++++++++*************************+*+++*#*+++++++++++++++++++++++++++++++**##*##*#*##*++++++++*#*+++++++++++++****************###******************++++++++++++++++-.......*##**#*****************#*++++++++++++++++++++++++++++++++++++++++*************+*****#***********************+++++++++++++++++++++++*************##################################*******++:.....======-..-==---======================++++++++++++++++++++++++++++*******************************+==================================================================-::-============++++++++************************************************************************************##############****++++==+++++*******************************************************************************************************************************************************######*+*+++++++++++++++****************++++++++++++++++++++++++************#####################################################################################################################################################################################################################################################################################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##################################%%%%%%@@@@@@@@@@@@@@@%%%%%###################################################################################################%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%*+*********############################################################################################################################################################################################################################**********##########################################################################################################################################################################################################################################****************************************##########################################################################################################################################################
***************************************************************************************************************************#########################################################################################################******+++++++++*******************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++****##########******************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==================================================================================++++++++++++++++++++++++++++++++++%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===--:::::::.:=###:::::::::::::::::::##:.::::=%%%%%%############%%%%%#%@@@%%%%%%%%%%%%%%+ :@@@@@%%%%@@@@@@@@@@@@@%######**********************%@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######***+++++++++++++++++++++++++++++++++++++++++#%%%%%%%%%%%%%#********#%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###%%%%%%%%%%%%%%%####################################################################################################*****************************###**++*#####*++++++++++++**#################################*##***+++++++++*************************+++++*#+++++++++++++++++++++++++++++++**#**##*####*+++++++++**+++++++++++++****************###**#***************+++++++++++*+++++.......=#*#*******************#*++++++++++++++++++++++++++++++++++++++++*************+**#**#********#**************+++++++++++++++++++++++************###################################*******++=......=====-:::-==---=====================++++++++++++++++++++++++++++********************************+=-===============================================================-::-============+++++++*************************************************************************************##############****++++==+++++*****************************************************************************************************************************************************+*######*+*+*+++++++++++++****************++++++++++++++++++++++++********########################################################################################################################################################################################################################################################################################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%################################%%%%%%@@@@@@@@@@@@@@@@@@%%%%###################################################################################################%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%*++********############################################################################################################################################################################################################################**********##########################################################################################################################################################################################################################################****************************************##########################################################################################################################################################
***************************************************************************************************************************#########################################################################################################******+++++++++*******************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++***###########******************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=====================================================================================+++++++++++++++++++++++++++++++%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===--:::::::::*##*::::::::::::::::::-%+.::::.*%%%%%#################%#+@@%%%%%%%%%%%%%%#:. -@@@@%%%%%@@@@@@@@@@@@@%######*********************#@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######**+++++++++++++++++++++++++++++++++++++++++#%%%%%%%%%%%%%#+********%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#%%%%%%%%%%%%%%%%%%###################################################################################################******************************####*++*#####*++++++++++++++++***########**######*#*###############**++++++++*************************+++++#*+++++++++++++++++++++++++++++++*#**#*####*#*+++++++++*++++++++++++++****************#*###****************++++++++++++++++-......:**#*#****##*#*******#*#*++++++++++++++++++++++++++++++++++++++++************+***#***#****##**#************++++++++++++++++++++++++***********#####################################******+++-.....:=====-:::-==--======================++++++++++++++++++++++++++++********************************+================================================================-::-===========+++++++************************************************************************************################*****++++++++++****************************************************************************************************************************************************+*######*+**++++++++++++++*#***************+++++++++++++++++++++++******############################**############################**#########################################################################################################################################################################################################################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###############################%%%%%@@@@@@@@@@@@@@@@@@@@%%%%###################################################################################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%*++*********#########################################################################################################################################################################################################################************##########################################################################################################################################################################################################################################*****************************************#########################################################################################################################################################
***************************************************************************************************************************#########################################################################################################******+++++++++*******************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++***############*****************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++======================================================================================++++++++++++++++++++++++++++++%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===--:::::::::###*::::::::::::::::::+%-.:::::#%%%%%#################%=:+%%#%%%%%%%%%%%%+.. +@@@@@%%%%%@@@@@@@@@@@@%######*********************%@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######**++++++++++++++++++++++++++++++++++++++++*%%%%%%%%%%%%%%#++*******#@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###################################################################################################******************************####*+++*####*+++++++++++++++++++++**#################**############****++++++************************+++++*#+++++++++++++++++++++++++++++++*#*##*####*#*+++++++++++++++++++++++++******************#******************+++++++++++++*+=.......+#*#*####**#*********#*++++++++++++++++++++++++++++++++++++++++*******#*****+***#*******####*****#*******++++++++++++++++++++++++************#####################################*******++=......-====-::---=---======================++++++++++++++++++++++++++++*******************************++===============================================================--:-===========++++++*************************************************************************************################*****++++++++++******************************************************************************************************************************************************#####***+*+++++++++++++*########*******+++++++++++++++++++++++++**###########################*****++*#*########*******************#########################################################################################################################################################################################################################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#############################%%%%%%@@@@@@@@@@@@@@@@@@@@@@%%%#######################################################################################%%%%########%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%#*++*********#########################################################################################################################################################################################################################************##########################################################################################################################################################################################################################################*****************************************#########################################################################################################################################################
***************************************************************************************************************************#########################################################################################################*****++++++++++*******************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++***############*****************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==========================================================================================++++++++++++++++++++++++++%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===--:::::::.-###=.:::::::::::.:::::%#.::::::#%%%%%################%#-.:#%%%%%%%%%%%%%%-.. *@@@@@%%%%%%%@@@@@@@@@@%######********************#@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######**++++++++++++++++++++++++++++++++++++++++*%%%%%%%%%%%%%%#++*******#%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####################################################################################################*******************************###*+++*#####*+++++++++++++++++++++++***##%%#####*##############**###***++++++***********************++++++#*+++++++++++++++++++++++++++++++**##*#*#**##*+++++++++++++++++++++++++*****************#*******************+++++++++++++++:......:*******##*#*****##**#*++++++++++++++++++++++++++++++++++++++++***********++***#*******######***********++++++++++++++++++++++++*************######################################******+++-......-===------==---======================+++++++++++++++++++++++++++********************************++===============================================================-::-==========++++++***********************************************************************************##################*****++++++++++***************************************************************************************************************************************************+*#####**+*+*++++++++++++*############****++*++++++++++++++++++++++*############%%%%########*********+=+***#**********************++*#########################################################################################################################################################################################################################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#############################%%%%%@@@@@@@@@@@@@@@@@@@@@@@%%%######################################################################################%%%%%########%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%#+++********##########################################################################################################################################################################################################################************###########################################################################################################################################################################################################################################****************************************#########################################################################################################################################################
***************************************************************************************************************************#########################################################################################################*****+++++++++********************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++***############*****************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++============================================================================================+++++++++++++++++++++++%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===--:::::::.+###:::::::::::::::::.-%+::.::::%%%%%%##################:.-##%%%%%%%%%%%%*... #@@@@@%%%%%%%%%@@@@@@@@%######********************%@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######**++++++++++++++++++++++++++++++++++++++++#%%%%%%%%%%%%%%*++********%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####################################################################################################*******************************#*#**++**####*++++++++++++++++++++++++++++**###########################***++++++*********************++++++**+++++++++++++++++++++++++++++++**#*####***#*++++++++++++++++++++++++++*****************#*******************++++++++++++++-.......=#**##**#**#********#*+++++++++++++++++++++++++++++++++++++++************+***###**#**##########*******+++++++++++++++++++++++++*************######################################*******+++:.....:====------==---=====================+++++++++++++++++++++++++++++****************************+**+================================================================-:-=========++++++************************************************************************************##################*****++++++++++**************************************************************************************************************************************************+*######*+*+++++++++++++++#############**#++++++++++++++++++++++++++###########%%%%%#######********+++++++*********++++++++++++++++++*#########################################################################################################################################################################################################################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#############################%%%%@@@@@@@@@@@@@@@@@@@@@@@@@%%%#######################################################################################%%%%#######%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%#*+++********##########################################################################################################################################################################################################################************###########################################################################################################################################################################################################################################****************************************#########################################################################################################################################################
***************************************************************************************************************************#########################################################################################################*****+++++++++********************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++***############*****************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==============================================================================================+++++++++++++++++++++%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===--::::::::####:::::::::::::::.::*%::::::::%%%%%##################+::*%%#%%%%%%%%%%%-... %@@@@%%%%%%%%%%@@@@@@@@%######*******************%@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######**++++++++++++++++++++++++++++++++++++++++#%%%%%%%%%%%%%%*+++*******#%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##%%%%%%%%%%%%%%%%%%%%#####################################################################################################*********************************#*++++*####*+++++++++++++++++++++++++++++++**###%#############**########**+++++********************+++++++*++++++++++++++++++++++++++++++++*#*####*#*##*+++++++++++++++++++++++++*****************#*********************++++++++*+++=........=****#**#*#*##***#**++++++++++++++++++++++++++++++++++++++++*****#*****+***####**#*###########*##****++++++++++++++++++++++++*************#######################################*******+++=......-====------==---=====================++++++++++++++++++++++++++++********************************+===============================================================-:-=========++++++************************************************************************************##################*****++++++++++**************************************************************************************************************************************************+*#####*++*++++*+++++++++#%##%%%####%#**##+++++++++++++++++++++++++*##########%%%%########*****++++++++++++********++++++++++++++++++#########################################################################################################################################################################################################################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%############################%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@%%##################################################################################################%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%#*++++*******##########################################################################################################################################################################################################################************############################################################################################################################################################################################################################################****************************************########################################################################################################################################################
***************************************************************************************************************************#########################################################################################################*****+++++++++********************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++**#############*****************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++================================================================================================+++++++++++++++++++%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===--::::::::###*:::::::::::::::::.##:::::::=%%%%%##################-.-#%%%%%%%%%%%%%#:... %@@@@@%%%%%%%%%@@@@@@@@%#######******************@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######**++++++++++++++++++++++++++++++++++++++++%%%%%%%%%%%%%%%*+++********%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####%%%%%%%%%%%%%%%%%%#####################################################################################################*********************************#*++++*#####*+++++++++++++++++++++++++++++++++**####%####################****++*******************+++++++++++++++++++++++++++++++++++++++++*######*#**#*++++++++++++++++++++++++++***************************************+++++++++++=.........-*#**#*##**###*##**+++++++++++++++++++++++++++++++++++++++*****#*****++**#*#####################**+++++++++++++++++++++++***************########################################********+++:......====--=----==---=====================++++++++++++++++++++++++++++********************************+========================================-======================--=========+++++*************************************************************************************##################*****++++++++++*************************************************************************************************************************************************+*#####*+*++*++++++++++++*%%%%%%%%%%%#**#%*+++++++++++++++++++++++++*#####################****+++++++++++++++******++++++++++++++++++*#######################################################################################################################################################################################################################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%############################%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@%%##################################################################################################%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%##+++++******###########################################################################################################################################################################################################################************############################################################################################################################################################################################################################################****************************************########################################################################################################################################################
***************************************************************************************************************************#########################################################################################################*****+++++++++********************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++***#############*****************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==================================================================================================+++++++++++++++*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===--:::::::=###=::::::::::::::::.:%*:::::::+%%%%%##################:.+%%#%%%%%%%%%%%=......%@@@@%%%%%%%%%%@@@@@@@@%#######*****************%@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######***++++++++++++++++++++++++++++++++++++++*%%%%%%%%%%%%%%%++++********#%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####%%%%%%%%%%%%%%%%%######################################################################################################************************************++++*####*+++++++++++++++++++++++++++++++++++***#####%####**########*####**********************+++++++++++++++++++++++++++++++++++++++++**#*#*#*#**##*++++++++++++++++++++++++++***************************************+++++++++++..........:*#*#*#*#*##*##***+++++++++++++++++++++++++++++++++++++++***********+**#######################***+++++++++++++++++++++++**************##########################################*******+++=......-====-=-----=---======================++++++++++++++++++++++++++++******************************+*+=======================================--=====================--=========++++*************************************************************************************###################******++++++++++***********************************************************************************************************************************************+**#####*+*++*+++++++++++*%%%%%%%%%%%%***##**+++++++++++++++++++++++*######################***++++++++*+++=+++*****+++++++++++++++++++#######################################################################################################################################################################################################################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##############%%%%%%%%%%%%%%%%%%%%%%%%%###########################%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%##################################################################################################%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%#*+++++*****###########################################################################################################################################################################################################################*************##############################################################################################################################################################################################################################################**************************************########################################################################################################################################################
***************************************************************************************************************************#########################################################################################################******++++++++********************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++***#############*****************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===================================================================================================+++++++++++++*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===--::::::.####::::::::::::::::::=%-.::::::*%%%%%#################*.:#%#%%%%%%%%%%%#:.....:@@@@@%%%%%%%%%%@@@@@@@@%#######*****************@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######***++++++++++++++++++++++++++++++++++++++*%%%%%%%%%%%%%%#+++++********%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######%%%%%%%%%%%%%%%%%#####################################################################################################*************************************++++*####*++++++++++++++++++++++++++++++++++++++****##############*##*######*******************++++++++++++++++++++++++++++++++++++++++++*#*#*#**#**#*+++++++++++++++++++++++++++**************************************+++++++++++...........-*##*#*#*#**##**+++++*+++++++++++++++++++++++++++++++++***#*******+***######################***+++++++++++++++++**+++++**************##########################################********+++-....::-=======---==---=====================++++++++++++++++++++++++++++*******************************+*+======================================--======================-=========++++************************************************************************************####################******++++++++++***********************************************************************************************************************************************+*#####*+*+*++++++++++++*%%%%%%%%%%%%#**#%#*++++++++++++++++++++++++*#####################****++++++****+++++++****+=++++++++++++++++*######################################################################################################################################################################################################################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###################%%%%%%%%%%%%%%%%%%%%%%########################%##%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#################################################################################################%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%##*+++++*****###########################################################################################################################################################################################################################*************##############################################################################################################################################################################################################################################**************************************########################################################################################################################################################
****************************************************************************************************************************########################################################################################################*****+++++++++********************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++**###############***************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=======================================================================================================++++++++#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===--:::::::####::::::::::::::::::#%::::::::#%%%%%#################=.+%%##%#%%%%%#%%+......=@@@@@%%%%%%%%%%@@@@@@@@@#######****************#@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######**++++++++++++++++++++++++++++++++++++++#%%%%%%%%%%%%%%#+++++********#@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####%%%%%%%%%%%%%%%%######################################################################################################**********************************#**++++*#####*++++++++++++++++++++++++++++++++++++++++****################**####******************++++++++++++++++++++++++++++++++++++++++++*#*###**#*****+++++++++++++++++++++++++++****************#*#**#*****************+++++*+++:...........+##*##*#*##***++++++++++++++++++++++++++++++++++++**+*****#*****+***######################***+++++++++++++++++***++++**************############################################*******+++=:...:::=======---===---=====================++++++++++++++++++++++++++++*********************************+=====================================-:======================--========+++*************************************************************************************####################******++++++++++**********************************************************************************************************************************************+**####**+++++++++++++++*#%%%%%%%%%%%#**#%%*+++++++++++++++++++++++++*####********#########****++++******++++++++*++++++++++++++++++++##################################################################################################################################################################################################################################################################################################################################################################################################%%################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######%%%#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##################%%%%%%%%%%%%%%%%%%%%%%############################%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%##################################################################################################%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%##*++++++*****##########################################################################################################################################################################################################################**************###############################################################################################################################################################################################################################################*************************************########################################################################################################################################################
****************************************************************************************************************************########################################################################################################*****+++++++++********************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++***###############***************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=======================================================================================================+++++++#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===--:::::.-###*::::::::::::::::::##::::::::#%%%%%#################-:#####%%%%%%%%%%-:.....*@@@@@%%%%%%%%%%@@@@@@@@@#######****************%@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######****++++++++++++++++++++++++++++++++++++#%%%%%%%%%%%%%%*+++++*********%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#%%%%%%%%%%%%%%%%%%%######################################################################################################**********************************#**++++*#####*+++++++++++++++++++++++++++++++++++++++++++******#####%%########********************+++++++++++++++++++++++++++++++++++++++++++*#*****#***#*++++++++++++++++++++++++++++**************************************+++++++++-...........:*####****###*+++++++++++++++++++++++++++++++++*++*++***##*****+***######################***++++++++++++++++**********************#############################################*******++++=...::--=============--======================++++++++++++++++++++++++++++******************************+**+====================================-:-===============================++*************************************************************************************#####################******++++++++++*********************************************************************************************************************************************++*####**++++++++++*+++++#%%%%%%%%%%%#***%%%*+++++++++++++++++++++++++***************########*************++++++=+++++++++++++++++++++*####################################################################################################################################################################################################################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######%%#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###################%%%%%%%%%%%%%%%%%%%%%%##########################%#%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%###################################################################################################%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%##*++++++*****############################################################################################################################################################################################################################************################################################################################################################################################################################################################################################************************************########################################################################################################################################################
*****************************************************************************************************************************#######################################################################################################*****+++++++++********************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++***###############***************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===========================================================================================================++%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===--:::::.=###+::::::::::::::::::%*:.::::::%%%%%%#################:=#####%%#%%%%%%*::.....#@@@@@@%%%%%%%%%@@@@@@@@@#######***************#@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######****+++++++++++++++++++++++++++++++++++*%%%%%%%%%%%%%%%*++++++********#@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######################################################################################################**********************************#**+++++*####*+++++++++++++++++++++++++++++++++++++++++++++*******######%########********************++++++++++++++++++++++++++++++++++++++++*###*******#*++++++++++++++++++++++++++++***************************************++++++++=............*###**#**##**+++++++++++++++++++++++++++++++++*+*++****#*********######################***++++++++++++++++***********************#############################################********++++-.:::--======================================+++++++++++++++++++++++++++***************************+++**+*+===================================-:-=============================++++*************************************************************************************#####################******+++++++++++********************************************************************************************************************************************+**####**+++++++++++++++*%%%%%%%%%%%#***%%%#*+*++*++++++++++++++++++++******+++++*****########************++++++++++++++++++++++++++++#####################################################################################################################################################################################################################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####################%%%%%%%%%%%%%%%%%%%%#########################%#%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%####################################################################################################%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%##**+++++*****################################################################################################################################################################################################################################*#########################################################################################################################################################################################################################################################************************************#######################################################################################################################################################
*****************************************************************************************************************************#######################################################################################################*****+++++++++********************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++***###############***************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===========================================================================================================*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===--::::::*###-::::::::::::::::.=%-::::::::%%%%%#################*:*########%#%%#%=.::...-%@@@@@@%%%%%%%%%@@@@@@@@@#######***************#@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####******++++++++++++++++++++++++++++++++++*%%%%%%%%%%%%%%%+++++++*********%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########################################################################################################*************************************+++++*#####++++++++++++++++++++++++++++++++++++++++++++++++*****#*#############**********************++++++++++++++++++++++++++++++++++++++*********#*#*++++++++++++++++++++++++++++***************************************++++++++............*#**###*#*#*+++++++++++++++++++++++++++++++++++**++**##*********######################***+****+++++++++++***********************##############################################********++++=::::--======================================++++++++++++++++++++++++++++*************************++++**+**+==================================-::-==========================+=++++*************************************************************************************#####################*******++++++++++*******************************************************************************************************************************************+**####**+++++++++++++++*%%%%%%%%%%%#***#%%%#++++++++++++++++++++++++++**+++++++++++****##########*********+++++++++++++++++++++++++++*#####################################################################################################################################################################################################################################################################################################################################################################%###############################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######################%%%%%%%%%%%%%%%%%%##########################%#%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%####################################################################################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%##*+++++******###########################################################################################################################################################################################################################################################################################################################################################################################################################################################################################***********************************#######################################################################################################################################################
******************************************************************************************************************************#####################################################################################################******+++++++++********************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++**#################**************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****+++++++++++++++++++===========================================================================================================#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===--::::::####::::::::::::::::::*%:::::::::%%%%%#################=-########%%#%%%#:::....=@@@@@@%%%%%%%%%%@@@@@@@@@#######***************%@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####******++++++++++++++++++++++++++++++++++#%%%%%%%%%%%%%%#++++++++********%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#########################################################################################################*************************************++++++#####*++++++++++++++++++++++++++++++++++++++++++++++++++********##########**************************+++++++++++++++++++++++++++++++++++++*********+++++++++++++++++++++++++++++***************************************+++++++:...........*##*######***+++++++++++++++++++++++++++++++*****+**##*****+****####################**********+++++++++*************************###############################################********++++-::---====+================+++++=============++++++++++++++++++++++++++++************************+++++*****+=================================--:-==========================++++++************************************************************************************######################*******++++++++++***************************************************************************************************************************************#**++*####*+*+*++++++++++++*%%%%%%%%%%%%***#%%%%*++++++++++++++++++++++++++++++++++++++++****###########*******+++++++++++++++++++++++++++######################################################################################################################################################################################################################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########################%%%%%%%%%%%%%%%%%############################%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#####################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%##***+++******############################################################################################################################################################################################################################################################################################################################################################################################################################################################################################***********************************#######################################################################################################################################################
******************************************************************************************************************************#####################################################################################################******++++++++*********************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++**#################**************++++++++++++++++++++++++++++++++++++++++++++++++++++++++********+++++++++++++++++++=========================================================================================================#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===--::::.=####::::::::::::::::::#%::::::::-%%%%%#################-+########%#%#%%+.::....+@@@@@@%%%%%%%%%%@@@@@@@@@#######**************#@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######******+++++++++++++++++++++++++++++++++%%%%%%%%%%%%%%%#++++++++*********%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########################################################################################################************************************#*++++++*####*+++++++++++++++++++++++++++++++++++++++++++++++++++++**********########****************************++++++++++++++++++++++++++++++++*********+++++++++++++++++++++++++++++++*********************************+***+++++++:..........-*#######*#*+*+++++++++++++++++++++++++++++*****++**##******+**#####################***********++++++++*************************################################################********++++=::--===+=++=============++++++++=============+++++++++++++++++++++++++++***********************+++++++**+**+================================---:-=======================+++++++++***********************************************************************************######################********++++++++***************************************************************************************************************************************##**+**####**++*++++++++++++%%%%%%%%%%%%****%%%%#++++++++++++++++++++++++++++++++++++++++++****##########*******++++++++++++++++++++++++++*#####################################################################################################################################################################################################################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########################%%%%%%%%%%%%%%%%#############################%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#####################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%##***********###########################################################################################################################################################################################################################################################################################################################################################################################################################################################################%%%%%%%%#%%########**********************************#######################################################################################################################################################
********************************************************************************************************************************###################################################################################################******++++++++*********************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++***##################*************+++++++++++++++++++++++++++++++++++++++++++++++++++++++**************++++++++++++++++======================================================================================================+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===--:::::*###*:::::::::::::::::-%#::::::::+%%%%%################*-###########%#%#-::::...*@@@@@@@%%%%%%%%%@@@@@@@@@#######**************#@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######*******+++++++++++++++++++++++++++++++*%%%%%%%%%%%%%%%*+++++++++*******#%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########################################################################################################************************************#*++++++*####*+++++++++++++++++++++++++===++++++++===========+++++++++***********######*******************************++++++++++++++++++++++++++++********+++++++++++++++++++++++++++++++++++*++*************************+++***++++++-..........=*#*#*#*##**++++++++++++++++++++++++++++++*****+***##*********#####################***********+++++++**************************#################################################********+++++-:--===+++++===+++======+++++++++=============+++++++++++++++++++++++++++**********************++++++++***+*++==============================---:-=====================+++++++++++***********************************************************************************#####################**********+++++++***********************************************************************************************************************************#####***+*####*+*++++++++++++++#%%%%%%%%%%%****#%%##*+*++*++++++++++++++++++++++++===++++++++++****###########******+++++++++++=++++++++++++++#####################################################################################################################################################################################################################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########################%%%%%%%%%%%%%%%%#############################%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#####################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%###**********#########################################################################################################################################################################################################################################################################################################################################################################################################################################################################%%%%%%%%%%%#%%########**********************************#######################################################################################################################################################
********************************************************************************************************************************###################################################################################################******++++++++*********************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++***##################*************+++++++++++++++++++++++++++++++++++++++++++++++++++++++*****************+++++++++++++++====================================================================================================+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===--::::-####*:::::::::::::::::-%*::::::::+%%%%%################*=##########%%#%*:::::...#@@@@@@%%%%%%%%%%@@@@@@@@@%######**************%@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######******+++++++++++++++++++++++++++++++*%%%%%%%%%%%%%%%*+++++++++******#%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######################################################################################################**************************************+++++++*####*+++++++++++++++++++======================================++*************######*****************************++++++++++++++++++++++++*********+++=++++++++++++++++++++++++++++++++++************************++++**++++++-..........=##*#*####*++++++++++++++++++++++++++++++*********##******+**######################*********++++++++***************************##################################################********+++++---==++++++===+++++++===+++++++++============++++++++++++++++++++++++++++*********************++++++++******++=============================-----==================+==+++++++++++***********************************************************************************#####################***********++++**********************************************************************************************************************************########*+***###***+**+++++++++++#%%%%%%%%%%#****######*++++*+*++++++++++++++++++++===++======+++++***############*****+++++++++++++++++++++++++*#####################################################################################################################################################################################################################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########################%%%%%%%%%%%%%%%%#############################%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#####################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%####*********#########################################################################################################################################################################################################################################################################################################################################################################################################################################################################%%%%%%%%%%%%#%##########**********************************######################################################################################################################################################
**********************************************************************************************************************************#################################################################################################******++++++++*********************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++***###################***********++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********************+++++++++++++==================================================================================================+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++====-:::::+####*:::::::::::::::::+%+::::::::*%%%%%################=*############%#=.:::.:..#@@@@@@%%%%%%%%%%@@@@@@@@@%#####***************@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######********+++*+++++++++++++++++++++++++#%%%%%%%%%%%%%%%++++++++++*****%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##############################%%%%%%%%%%%%%%%%%%%%%%%#####################################################################################################*************************************#*+++++++*####*++++++++++++++++===================-=====================================+++**######*****************************+++++++++++++++=+++********+++====++++++++++++++++++++++++++++++++************************+++++++++++-..........-*##*##*#**++++++++++++++++++++++++++++**++**+***##*********######################*********++++++*****************************###################################################********+++++=:===+++++++++=+++++++++=++++++++=============+++++++++++++++++++++++++++*********************+++++++++******++============================------==================+++++++++++++***********************************************************************************#####################********************************************************************************************************************************************############*+*+*####**++++++++++++++#%%%%%%%%%%#****######**++++++++++++++++++++++++++=+==+====+++++++****############*****+++++++=+++++++++++++++++####################################################################################################################################################################################################################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#########################%%%%%%%%%%%%%%%%##############################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#####################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%######################################################################################################################################################################################################################################################################################################################################################################################################################################################################################%%%%%%%%%%%%%%%##########**********************************######################################################################################################################################################
************************************************************************************************************************************###############################################################################################******++++++++*********************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++**####################**********+++++++++++++++++++++++++++++++++++++++++++++++++++++++*************************++++++++++++================================================================================================*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===--::::#####*:::::::::::::::::#%+::::::::#%%%%#################=###############:::::::..%@@@@@@%%%%%%%%%%@@@@@@@@@%####***************#@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########**********+*+++++++++++++++++++++++++%%%%%%%%%%%%%%%#+++++++++++***#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#########################################%%%%%%%%%%%%####################################################################################################**************************************#*+++++++*####*++++++++++++++====================================================================++**********************************++++++++++++=+********+=========++========++++++++++++++++++++++*********************+++++++++++-. .........***#**#**++++++++++++++++++++++++++***+***+****##*********#######################*******************************************####################################################*********+++++--==+++++++++++++++++++=++++++++++===========++++++++++++++++++++++++++++********************+++++++++*******++===========================------================++++++++++++++++**********************************************************************************#####################*****************************************************************************************************************************************###############*+***###**++++++++*+++++*%%%%%%######***********+++++++++++++++++++++++++++=++=+++++++++++*****#############****+++++++=++++=+++++++++++*####################################################################################################################################################################################################################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#########################%%%%%%%%%%%%%%%%##############################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%####################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%########################################################################################################################################################################################################################################################################################################################################################################################################################################################################################%%%%%%%%%%%%%%%##########**********************************######################################################################################################################################################
**************************************************************************************************************************************#############################################################################################******+++++++**********************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++**####################**********+++++++++++++++++++++++++++++++++++++++++++++++++++++++***************************++++++++++++==============================================================================================*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==--::::-#####+::::::::::::::::=%#+::::::::#%%%%#################=#############%+:::::::.:%@@@@@@%%%%%%%%%%%@@@@@@@@@####***************%@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##########************+++++++++++++++++++++++*%%%%%%%%%%%%%%%#+++++++++++**#%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######################*******#############################################################################################################################************************************###*+++++++*####**++++++++++++=======================================---=--=================================+++*****************************+++++++=+********+=+++++=======================+++++++++++++++******************+++++++++++-. . ......-***###**++++++++++++++++++++++++*******+*****#**********########################*******************************************#####################################################********+++++=-==+++++++++++++++++++++++++++++++===========++++++++++++++++++++++++++++*******************++++++++++********+===========================-----==============++++++++++++++++++*********************************************************************************######################***************************************************************************************************************************************##############%#*+++*###**++++++++++++++*#%#########***********+*++++++++++++++++++++++++++++++=+==+++++++*******############****++++++++++++++++++++++++#######################################################################################################################################################################################################################################################################################################################################################%%%%%%%######################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###########################%%%%%%%%%%%%%%%##############################%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%####################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%##########################################################################################################################################################################################################################################################################################################################################################################################################################################################################################%%%%%%%%%%%%%%%##########**********************************######################################################################################################################################################
****************************************************************************************************************************************###########################################################################################*******++++++**********************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++**#####################*********++++++++++++++++++++++++++++++++++++++++++++++++++++++*******************************+++++++++++============================================================================================#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==--::::+#####-::::::::::::::::+%%+::::::::#%%%%################**#############%-:::::::.:%@@@@@@%%%%%%%%%%%@@@@@@@@@####***************%@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###########*************++++++++++++++++++++++#%%%%%%%%%%%%%%%*++++++++++++*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##############***********************************############################################******#*****#####################################################************************************#*#*++++++++#####*+++++++++++====================================--====--============---==================---========+++*************************++++*******++=======++++================+==+++++++++++++++*****************+++++++++++- . ......=*#*#**++++++++++++++++++++++++*********+***#**********##########################*****************************************######################################################*********+++++===++++++++++++++++++++++++++++++++===========++++++++++++++++++++++++++++******************++++++++++++***+**++==========================------==========+++++++++++++++++++++*********************************************************************************#####################*************************************************************************************************************************************##############%%%%****+*##**++++++++++++++*########**********+++++++++++++++++++++++++++++++++++=+=+=++++++*********#############****+++++++++++++=++++++++*##################################################################################################################################################################################################################################################################################################################################################%%%%%%%%%%%%%%%##################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##############################%%%%%%%%%%%%%%###############################%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%####################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%##############################################################################################################################################################################################################################################################################################################################################################################################################################################################################################%%%%%%%%%%%%%%%%#########**********************************######################################################################################################################################################
******************************************************************************************************************************************#########################################################################################*******+++++***********************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++**#######################********+++++++++++++++++++++++++++++++++++++++++++++++++++++*********************************++++++++++===========================================================================================#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==--::::*#####:::::::::::::::::*#%=::::::::#%%%%################+##############*::::::::.-%@@@@@@%%%%%%%%%%%@@@@@@@@@%###**************#@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###########*************++++++++++++++++++++++%%%%%%%%%%%%%%%%+++++++++++++#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#########****************************+++++++++++++++++++++*******#################*********+++++++++++++++++++++****###########################################*************************************#*#**+++++++*####*++++++++++=============================================-================------===================--=======+++*****************************++===========++==================+++++++++++++++*****************++++++++++=. . . ......=**#**+++++++++++++++++++++++++******+***##**********###################################********************************#######################################################*********++++++==++++++++++++++++++++++++++++++++============+++++++++++++++++++++++++++******************++++++++++++*++**+**+==========================-----========++++++++++++++++++++++++********************************************************************************#####################***********************************************************************************************************************************##########%%%%%%%%%#**++*##**++++++++++++++**###************++++++++=++++++++++++++++++++++++++++++++++++++************############****++++++++++++=++++++++*################################################################################################################################################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%##############################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###############################%%%%%%%%%%%%%################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%####################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%###############################################################################################################################################################################################################################################################################################################################################################################################################################################################################################%%%%%%%%%%%%%%%%#########***********************************#####################################################################################################################################################
********************************************************************************************************************************************########################################################################################******+++++***********************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++**########################*******++++++++++++++++++++++++++++++++++++++++++++++++++++*************************************++++++++==========================================================================================#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==--::::######:::::::::::::::::*##-::::::::#%%%%################*#############%=::::::::.-@@@@@@@%%%%%%%%%%%@@@@@@@@@%###**************#@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%@%@@@%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%############*************++++++++++++++++++++*%%%%%%%%%%%%%%%#++++++++++++*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######*****************************+++++++++++++++++++++++++++++++++++++++++++++++++++++========================++++++**#######################################***************************************##*+++++++*####*+++++++++==========================================----======================--------=========-=========--======++************************++++++++==========================+++++++++++++++****************+++++++++++- .....:+**++*+++++++++++++++++++++++*******+*##**********####################################*******************************########################################################*********++++++==+++++++++++++++++++++++++++++++++===========++++++++++++++++++++++++++++*****************++++++++++++*++******+===========================---==+=+=++++++++++++++++++++++++++********************************************************************************#####################*******************************************************************************************************************************###########%%%%%%%%%%%#*++++*#**+++++++++++++++*********+++****+++=======++++++++++++++++++++++++++++++++++++***************############***+++++++++++==++=+*+++*##########################################################################################################################################################################################*####################################################################################################################################################%%%%%%%%%%@%%%%%%%%%%%%############################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######%%%#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%################################%%%%%%%%%%%%################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%####################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@%################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%########***********************************#####################################################################################################################################################
**********************************************************************************************************************************************######################################################################################******+++++**********************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++**#########################*******+++++++++++++++++++++++++++++++++++++++++++++++++++***************************************++++++++========================================================================================%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==--:::-#####*::::::::::::::::-###-::::::::#%%%################################:::::::::.=@@@@@@@%%%%%%%%%%%@@@@@@@@@%###**************%@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%@%@@@%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%############*************++++++++++++++++++++#%%%%%%%%%%%%%%%#++++++++++++%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########****************************++++++++++++++++++++++++++++++======================================================+++*#####################################***************************************##*++++++++*###**++++++========================================================-=====================----==========----------========++**************************+++++======================+++++++++++++++****************++++++++++++-. . ......+++++++*+++++++++++++*************+*#***********######################################*****************************##########################################################*********++++++=++++++++++++++++++++++++++++++++++===========+++++++++++++++++++++++++++******************+++++++++++++********+============================-==+=++++++++++++++++++++++++++++*******************************************************************************#####################*****************************************************************************************************************************############%%%%%%%%%%%%%*+*+*+*#*+++++++++++++++***+*++++++++***+==========++++++++++++++++++++++++++++++++++*******************############*+++++++++++==+++=+*+*##############################################################################################################################################################################################################################################################################################################################################%%%%%%%%@@@@@@@@@@%%%%%%%%%##########################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######%%%#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####################################%%%%%%%%%%%%################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%##%#################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@%################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%#########**********************************#####################################################################################################################################################
***********************************************************************************************************************************************#####################################################################################******+++++**********************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++**###########################*****++++++++++++++++++++++++++++++++++++++++++++++++++******************************************++++++++======================================================================================%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==--:::-#####+:::::::::::::::.=%##:::::::::#%%%##############################%*:::::::::.+@@@@@@@%%%%%%%%%%%@@@@@@@@@@###**************@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%@%@@@%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#############*************+++++++++++++++++++%%%%%%%%%%%%%%%%*+++++++++++#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######*****************+****+**+++++++++++++++++++++++++++++++=============================================================++*####################################**************************************##*++++++++*####*++++++===========================================================---------============================-====----=========+++***************************++++++++===========+==+++++++++++++++****************++++++++++++- .....++++++***++++++++****************+*#***********#######################################*****************************##########################################################*********+++++++++++++++++++++++++++++++++++++++++===========++++++++++++++++++++++++++++*****************+++++++++++++*********++=============================+=++++++++++++++++++++++++++++*******************************************************************************#####################**************************************************************************************************************************############%%%%%%%%%%%%%%%#*+*++***++++++++++++++++++++++++===+***+===========+++++++++++++++++++++++++++++++++**********************##########*++=++++++++++==+=+**###########*##################################################################################################################################################################################################################################################################################################################################%%%%%%%@@@@@@@@@@@@@@%%%%%%%%#########################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######%%%#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######################################%%%%%%%%%%%%################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%##%#################################################################################################@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################%%%%%%%%%%%%%#%%%#########**********************************#####################################################################################################################################################
******************************************************************************************************************************************************************##################################################################******+++++**********************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++**############################*****++++++++++++++++++++++++++++++++++++++++++++++++*********************************************+++++++====================================================================================+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===-:::+#####=:::::::::::::::.+###:::::::::#%%%###############################-:::::::::.+@@@@@@@@%%%%%%%%%%@@@@@@@@@@##**************%@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%@@@@%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%############**************++++++++++++++++++*%%%%%%%%%%%%%%%%+++++++++++*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########*********************+++++++++++++++++++++++++++++++++++==================================================================+**#################################**************************************###*++++++++*##***++++++========================================================-===-==--------=---===================----------======================++**************************+++++++++++++++++++++++++++****************+++++++++++++- .. =**++++**+++++++++*****************************########################################***************************############################################################********#*++++++++++++++++++++++++++++++++++++++++++==========++++++++++++++++++++++++++++****************+++++++++++++++******+**+============================+++++++++++++++++++++++++++++++*******************************************************************************###################***************************************************************************************#######*************************##############%%%%%%%%%%%%%%###*++**+**++++++++++++++*++++++======+***+============*+++++++++++++++++++++++++++++**************************##########*++++=++=+++==+==++*##########*****##############################################################################################################################################################################################################################################################################################################################%%%%%%@@@@@@@@@@@@@@@@@@@%%%%%%########################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##%#######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########################################%%%%%%%%%%%%############################%#%#%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#%##################################################################################################@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################%%%%%%%%%%%%%%%%#########**********************************#####################################################################################################################################################
********************************************************************************************************************************************************************************####################################################******+++++**********************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++**############################*******++++++++++++++++++++++++++++++++++++++++++++************************************************++++++++++================================================================================+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===-:::*#####-::::::::::::::::*###:::::::::#%%################################:::::::::::*@@@@@@@@%%%%%%%%%%@@@@@@@@@@#***************%@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%@@@@%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#############**************+++++++++++++++++#%%%%%%%%%%%%%%%#+++++++++++%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##################*******************+++++++++++++++++++++++++++++++++++======================================================================+**###############################****************************************##*++++++++*###**++++++================================================+++++=====--=--===------------================----------================-------===========+++***********************************++++++****************+++++++++++++- :+++++***+*++++++++****************************##########################################**************************############################################################**********++++++++++++++++++++++++++++++++++++++++++===========+++++++++++++++++++++++++++****************++++++++++++++++********++==================-=========++++++++++++++++++++++++++++++*******************************************************************************###################**************************************************************************************##########*****************##################%%%%%%%%%#########**++****+++++++++++++++++==========+***+============++++++++++++++++++++*++++++++******************************########*++++=+++++++++===++#########********##########################################################################################################################################################################*###############################################################################################################################################%%%%%@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%######################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##%%######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########################################%%%%%%%%%%%%############################%#%#%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#%##################################################################################################@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################%%%%%%%%%%%%%%%%#########**********************************#####################################################################################################################################################
***********************************************************************************************************************************************************************************#################################################******+++++**********************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++**#############################**********+++++++++++++++++++++++++++++++++++++++****************************************************++++++++++=============================================================================+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===-::-######:::::::::::::::::*#%#:::::::::##################################+.::::::::::*@@@@@@@@%%%%%%%%%%@@@@@@@@@@#**************#@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%@@@@%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#############**************+++++++++++++++++#%%%%%%%%%%%%%%%*++++++++++#@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###################******************+++++++++++++++++++++++++++++++++==========================================================================++*#*##*#########################****************************************##*+++++++++*##***+++++===============================================+++++++++==-==--====-----------==--============----------=============-----=====-----------==========++++***********************************************+++++++++++++- =*++*+***++++++++************+****************###########################################*************************##############################################################********#*++++++++++++++++++++++++++++++++++++++++++===========++++++++++++++++++++++++++****************+++++++++++++++++*********+================--=========++++++++++++++++++++++++++++++*******************************************************************************###################*************************************************************************************###############*############################################*****++**+*++++++++++++++++============****=============+++++++++++++++++++++++++*+************************+++******#######*+++++++++++++=====+*########***********#####################################################################################################################################################################*****############################################################################################################################################%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%#####################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########################################%%%%%%%%%%%%##############################%#%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%####################################################################################################@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################%%%%%%%%%%%%%%%%#########***********************************####################################################################################################################################################
**********************************************************************************************************************************************************+++*************************##############################################******++*++**********************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++**#############################*******************++++++++++++++++++++++++++++*******************************************************++++++++++++==========================================================================*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==--::=######:::::::::::::::::##%#:::::::::##################################-:::::::::::#@@@@@@@@%%%%%%%%%%@@@@@@@@@@%**************%@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%@@@%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##############**************+++++++++++++++*%%%%%%%%%%%%%%%%*+++++++++#@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###################********************++++++++++++++++++++++++++=================================================================================+*#############################****************************************##*+++++++++*###**+++++=============================================+++++++++++======-====-----========================--------================----===-================-==========+++*****************************************++++++++++**++- -+++*++**++*++++++****************************#############################################***********************###############################################################**********+++++++++++++++++++++++++++++++++++++++++++===========++++++++++++++++++++++++++***************++++++++++++++++++*********+===============--=======+++++++++++++++++++++++++++++++++******************************************************************************##################**************************************************************************************########################################################********+++*+++++++++++++++++++===========****==============++*+++++++++++++++++++++*************************+++++*******#######+++++++*+++=+=+=+=++########***************####********####################################################################################################################################################********###*###**********########################################################################################################################%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%####################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########################################%%%%%%%%%%%%%###############################%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%###################################################################################################@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################%%%%%%%%%%%%%%%%#########***********************************####################################################################################################################################################
*********************************************************************************************************************************************************+++++*******+++++++++++******************##################################******+**+***********************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++**##############################****************************++++++++++++++++***********************************************************+++++++++++=========================================================================*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==---:+######:::::::::::::::::###*:::::::::#################################*::::::::::::#@@@@@@@@%%%%%%%%%%@@@@@@@@@@%*************#@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%@@@%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##############**************+++++++++++++++#%%%%%%%%%%%%%%%%+++++++++*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#################*********************++++++++++++++++++++++====================================================================================++*#*#########################*****************************************#**+++++++++*##***+++++==========================================++++++++=========-====-------==-------================--------========================---=============================++++***+********************************+++++++++++*++- .+++++*+**++*++++++**********+***************################################################*********************################################################################*********#++++++++++++++++++++++++++++++++++++++++++++===========+++++++++++++++++++++++++****************+++++++++++++++++++********++=============--====++++++++++++++++++++++++++++++++++++******************************************************************************#################**************************************************************************************#####%%%%%#########################################********++++++++++++++++++++++++++++===========****+==============**+++++++++++++++++++++*#***********************++++++*******#######+++=+++*+++=+=+=+++=*######******************************################################################################################################################################################*****************************#####################################################################################################################%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%##################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%############%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%###################################################################################################@@@@@@@@@@@@@@@@@@@@@@@@@@@@@##################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################%%%%%%%%%%%%%%%%#########***********************************####################################################################################################################################################
********************************************************************************************************************************************************++++++******+++++++++++++++*********************############################******+*************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++***#############################***********************************+++++++++*************************************************************++++++++++++======================================================================#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==--:-#######:::::::::::::::::###+:::::::::################################%=::::::::::::%@@@@@@@@%%%%%%%%%%@@@@@@@@@@@*************%@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%@@@%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###############*************+++++++++++++++%%%%%%%%%%%%%%%%#++++++++*%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%################*****************++++++++++++++++++++++++=======================================================================================+**********##################********************************************+++++++++**#***+++++=====================================+++++++++=================-----------------==--===============--===================--=================================---====================++***********************+++++++***++-. =+++++++*++*+++++++*************************###################################################*****************###################################################################**********++++++++++++++++++++++++++++++++++++++++++++===========+++++++++++++++++++++++++***************++++++++++++++++++++******+**+============---===++++++++++++++++++++++++++++++++++++******************************************************************************################**************************************************************************************#####%%%%%%%%################################************+++++++++***+++++++++++++++++++==========****+==============+#*++++++++++++++++++++*###*********************+++++++********######+++=+==*+++++===++=++*#####********************************###########################################################################################################################################**********************************###################################################################################################################%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%#################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#############%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#%#################################################################################################@@@@@@@@@@@@@@@@@@@@@@@@@@@@@##################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################%%%%%%%%%%%%%%%%#########***********************************####################################################################################################################################################
*********************************************************************************************************************************************************+++++******++++++++++++++++++**+++++********************###################******+*************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++***#############################************************************+++++++*****************************************************************+++++++++++====================================================================#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==--:=######*:::::::::::::::::###=:::::::::#################################-::::::::::::%@@@@@@@@%%%%%%%%%%@@@@@@@@@@@************#@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%@@%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##############**************+++++++++++++*%%%%%%%%%%%%%%%%*++++++++%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##################*****************+++++++++++++++++++++==========================================================================================+**********################*********************************************++++++++++*#****++++================================++++++++++===========================---------------==========================================----------===========================--====================++*********************+++*+*++-.-++++++:-++++++++++++**********************#########################################################************####################################################################*********#++++++++++++++++++++++++++++++++++++++++++++============++++++++++++++++++++++++***************++++++++++++++++++++++***+***++===========---===+++++++++++++++++++++++++++++++++++++*****************************************************************************###############**************************************************************************************#####%%%%%%%%%%%%######################*************++++++++++++++++**+++++++++++++++++++=========****+==============++#*+++++++++++++++++++*###*********************++++++++********######*++=++=+++++++==+==+=+*###***********************************########################################################################################################################################************************************#################################################################################################################%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%###############################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#########%#%#%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%#%###############################################################################################@@@@@@@@@@@@@@@@@@@@@@@@@@@@@##################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################%%%%%%%%%%%%%%%%#########***********************************####################################################################################################################################################
*********************************************************************************************************************************************************++++******+++++++++++++++++++++++++++++++++****************################********************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++***##############################************************************++++++********************************************************************++++++++++================================================================+=#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==--:+######*:::::::::::::::::###-.::::::::################################*:::::::::::::%@@@@@@@@%%%%%%%%%%@@@@@@@@@@@************%@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%@@%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##############**************+++++++++++++#%%%%%%%%%%%%%%%%*+++++++#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#################*****************++++++++++++++++++++============================================================================================+***********#############**********************************************++++++++++******++++=========================+++++++++++==================================-------------======================================--=========-====================================================-======++*********************++=++++++=..+++++++++++++********************############################################################*****#########################################################################*********#*++++++++++++++++++++++++++++++++++++++++++++============++++++++++++++++++++++++**************++++++++++++++++++++++*********+==========---===+++++++++++++++++++++++++++++++++++++***************************************************************************#*###############*************************************************************************************#####%%%%%%%%%%%%%%###############************+++++++++++++++++++*+*++++++++++++++++++++++=======+****++==+=++=++++++++*#++++++++++++++++++++####*******************+++++++++++*******######*++=+++++++==+++==+==+*###*************************************#####################################################################################################################################*************************************################################################################################################################%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%###############################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#########%#%#%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%#%%%#############################################################################################@@@@@@@@@@@@@@@@@@@@@@@@@@@@@##################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################%%%%%%%%%%%%%%%%#########***********************************####################################################################################################################################################
************************************************************************************************************************************************************+******+++++++++++++++++++++++++++++++++++++++***********##############*********************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++***##############################************************************+++++***********************************************************************++++++++++============================================================+==+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===---*######*:::::::::::::::.-###::::::::::################################=:::::::::::::%@@@@@@@@%%%%%%%%%%%@@@@@@@@@@%**********#@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##############**************++++++++++++%%%%%%%%%%%%%%%%#+++++++#@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%################*****************+++++++++++++++++++==============================================================================================+************############********************************************#*+++++++++*#**#*++++==============++++++++++++++==============================================--------==============================================================================================================-===++*********************++++=. -+++++++++++*+*****************#############################################################################################################################################*********#+++++++++++++++++++++++++++++++++++++++++++++===========++++++++++++++++++++++++**************++++++++++++++++++++++++*********+========---===+++++++++++++++++++++++++++++++++++++****************************************************************************###############*********************************************************************************##########%%%%%%%%%%%#############*********++++++++++++++++++++++++++*++*++++++++++++++++++++++======++***++++++++++++++++++**+++++++++++++++++++*###*******************+++++++++++********######*+++++=++++++++++++==++*##***************************************###################################################################################################################################**************************************##############################################################################################################%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%#############################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######%##%#%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%#%%%%%##########################################################################################@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#########################################################################################################################################################################################################################%%%#####################################################################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%#########***********************************####################################################################################################################################################
************************************************************************************************************************************************************+******+++++++++++++++++++++++++++++++++++++++++++********#############*********************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++***##############################************************************+++++*************************************************************************+++++++++++++==========================================================+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===---#######*::::::::::::::::=###::::::::::################################:.::::::::::::%@@@@@@@@%%%%%%%%%%%@@@@@@@@@@%**********%@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##############**************+++++++++++*%%%%%%%%%%%%%%%%*++++++*%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%################*****************++++++++++++++++++===============================================================================================++*************#########*********************************************#*++++++++++*****+++++=====+++++++++++++++========================================================-------===============================================================================================================-====+++******************++. .++++++++++++****************###############################################################################################################################################***********++++++++++++++++++++++++++++++++++++++++++++============++++++++++++++++++++++++*************+++++++++++++++++++++++++*********+=======----==++++++++++++++++++++++++++++++++++++++***************************************************************************##############**************************************************************************###################%%%%%%%##########**********+++++++++++++++++++++++++++++**++**++++++++++++++++++++++++++=++****++++++++++++++++++**++++++++++++++++++**##*******************++++++++++++********#######++++++++++++++++++==+++*******************************************###############################################################################################################################****************************************##############################################################################################################%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#############################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######%####%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%#########################################################################################@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#########################################################################################################################################################################################################################%%%#####################################################################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%#########***********************************####################################################################################################################################################
******************************************************************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++*****#############*********************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++***##############################************************************+++++****************************************************************************++++++++++++=======================================================++%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===---#######+::::::::::::::::+###::::::::::###############################*::::::::::::::%@@@@@@@@%%%%%%%%%%%@@@@@@@@@@@*********#@@@@@@@@@@@@@%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##############**************+++++++++++#%%%%%%%%%%%%%%%%*+++++*%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#################*****************++++++++++++++++=================================================================================================+****************#####************************************************++++++++++******+++++===+++++++++++++===============================================================---=========================================================================================================================++***************- -++++++++**++**************#################################################################################################################################################**********++++++++++++++++++++++++++++++++++++++++++++============++++++++++++++++++++++++*************+++++++++++++++++++++++++++********+======----===+++++++++++++++++++++++++++++++++++++*+*************************************************************************##########**************************************************************************###################################*********+++++++++======+++++++++************++**++++++++++++++++++++++++++++*****+++++++++++++++++++*++++++++++++++++++++*#*******************++++++++++++*********#######++++++++++++++++++=====********************************************#############################################################################################################################*****************************************#############################################################################################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%############################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######%####%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%########################################################################################@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#########################################################################################################################################################################################################################%%%#####################################################################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%########***********************************####################################################################################################################################################
******************************************************************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++****############*********************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++**##############################************************************++++********************************************************************************+++++++++++++====================================================+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===--=#######=::::::::::::::::*###::::::::::###############################=:::::::::::::-%@@@@@@@@%%%%%%%%%%%@@@@@@@@@@@#********%@@@@@@@@@@@@@%%%%%%%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###############**************+++++++++*%%%%%%%%%%%%%%%%#++++++%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#################*****************++++++++++++++++==================================================================================================+******************#*************************************************++++++++++*#****+++++===+++++++=======================================================================--============================================================================================================================++***********- :++++++++++**************###################################################################################################################################################***********++++++++++++++++++++++++++++++++++++++++++++============+++++++++++++++++++++++**************++++++++++++++++++++++++++++*******+=====----===+++++++++++++++++++++++++++++++++++++*+*************************************************************************########************************************************************************##################################********++++++++++==========+++++++**************++*+++++++++++++++++++++++++++++*****++++++++++++++++++++++++++++++++++++++++***+*****************+**++*****************#######++=+++++++++++++++=====+**********************************************########################################################################################################################*******************************************#############################################################################################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%###########################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#############%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%######################################################################################@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#########################################################################################################################################################################################################################%%%#####################################################################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%########************************************###################################################################################################################################################
******************************************************************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++****############*********************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++**##############################************************************++++***********************************************************************************+++++++++++===================================================+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===--+#######-::::::::::::::::*###::::::::::##############################*:::.::::::::::-%@@@@@@@@%%%%%%%%%%%%@@@@@@@@@@#********@@@@@@@@@@@@@@%%%%%%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###############***************++++++++#%%%%%%%%%%%%%%%%#+++++#%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##################****************+++++++++++++++====================================================================================================++******************************************************************++++++++++******++++++=================================================================================--==============================================================================================================================++*********=::-=+**+++++++++***********#####################################################################################################################################################***********++++++++++++++++++++++++++++++++++++++++++++=============+++++++++++++++++++++++*************+++++++++++++++++++++++++++++********+===-----===++++++++++++++++++++++++++++++++++++++*************************************************************************###***********************************************************************##################################**********++++++++================+++++*************#*+++++++++++++++++++++++++*************+++++++++++++++++++*++++++++++++++++++++*++*****************++********************########*+=++=++++++====+=====+=+**********************************************#####################################################################################################################*********************************************############################################################################################################%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%###########################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#########%##%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%###############################################################################@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#########################################################################################################################################################################################################################%%%%###################################################################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%######************************************###################################################################################################################################################
*****************************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++****############*********************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++**##############################************************************++++*************************************************************************************++++++++++++================================================+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===--*#######:::::::::::::::::####::::::::::##############################+::::::::::::::=%@@@@@@@@%%%%%%%%%%%%@@@@@@@@@@%*******#@@@@@@@@@@@@@%%%%%%%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###############***************++++++++#%%%%%%%%%%%%%%%%*++++#%@%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##################****************+++++++++++++++=====================================================================================================++*****************************************************************+++++++++++*#****+++++============================================================================================================================================================================================================-========++*****##*****#**++++++++********#######################################################################################################################################################************++++++++++++++++++++++++++++++++++++++++++++=============++++++++++++++++++++++*************++++++++++++++++++++++++++++++********+=------===++++++++++++++++++++++++++++++++++++++**********************************************************************************************************************************************################################************+++++++++===================+++********########*+++++++++++++++++++++++++*********************+++++++++++**+++++++++++++++++++++**##******************+******************########*++++=+++++==============*#**********************************************#################################################################################################################***********************************************############################################################################################################%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%#########################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#########################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#########%##%#%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%###########################################################################@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#########################################################################################################################################################################################################################%%%%###################################################################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%#####************************************###################################################################################################################################################
*****************************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++****############*********************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++**##############################************************************+++****************************************************************************************+++++++++++++++===========================================*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===--#######*:::::::::::::::::####::::::::::##############################-::::::::::::::=%@@@@@@@@%%%%%%%%%%%%@@@@@@@@@@@*******%@@@@@@@@@@@@@%%%%%%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%################***************++++++*%%%%%%%%%%%%%%%%#++++*%@@%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###################****************++++++++++++++======================================================================================================++****************************************************************+++++++++++******++++===============================================================================================================================================================================================================================-:. .=*##****+++******##########################################################################################################################################################***********+++++++++++++++++++++++++++++++++++++++++++++=============+++++++++++++++++++++**************++++++++++++++++++++++++++++++*******++==-----===+++++++++++++++++++++++++++++++++++++*******************************************************************************##*********************************************************###############################**********++++++++++++++====================+++*****############*+++++++++++++++++++++++++*********************************+++++++++++++++++++++*####************************************#########*+++++++++===============+**#*********************************************##############################################################################################################*************************************************###########################################################################################################%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%########################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##########################################%%%%%%%%%%%%%%%%#########################%##%#%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########################################################################@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#########################################################################################################################################################################################################################%%%%##################################################################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%#####************************************###################################################################################################################################################
*****************************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++****############*********************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++**###############################***********************************+++*******************************************************************************************++++++++++++++=========================================*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===--#######*:::::::::::::::::####::::::::::#############################*:::::::::::::::=%@@@@@@@@%%%%%%%%%%%%@@@@@@@@@@@#*****#@@@@@@@@@@@@@@%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#################**************++++++#%%%%%%%%%%%%%%%%#+++*%%@%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###################****************+++++++++++++========================================================================================================+*******************+********************************************+++++++++++******++++++===================================================================================================================================================-=====================================================================-====-:..-==+**##*******############################################################################################################################################################************++++++++++++++++++++++++++++++++++++++++++++=============++++++++++++++++++++++*************+++++++++++++++++++++++++++++++++*******=-----===++++++++++++++++++++++++++++++++++++*******************************************************************************###******************************************************############################**********+++++++++++++++++++====================+++****#############*+++++++++++++++++++++++++*****##***************************+++++++++++++++++++++####*************************************#########*=++++++++====+===========+#*###*******************************************###########################################################################################################***************************************************###########################################################################################################%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%########################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##########################################%%%%%%%%%%%%%%#%#########################%##%#%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@#########################################################################################################################################################################################################################%%%%########################################################################################################################################################################################################################%########################################%%%%%%%%%%%%%%%%%%%%%%%%#####*************************************##################################################################################################################################################
******************************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++****#############*********************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++***##############################***********************************+++***********************************************************************************************+++++++++++========================================*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==--#######*:::::::::::::::::####::::::::::#############################+:::::::::::::::+%%@%@@@@@%%%%%%%%%%%%%@@@@@@@@@@%*****%@@@@@@@@@@@@@%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#################***************+++++%%%%%%%%%%%%%%%%%*++*%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###################***************+++++++++++++=========================================================================================================++*****************+********************************************++++++++++++*****++++++========================================================================================------------------------------------==============================================================================================================+**#################################################################################################################################################################***********+++++++++++++++++++++++++++++++++++++++++++++==============++++++++++++++++++++**************++++++++++++++++++++++++++++++++********+---====+++++++++++++++++++++++++++++++++++++*++**+***************************************************************************#*************************************************##########################**********++++++++++++++++++++++++++++================++****##############*+++++++++++++++++++++++++*****##*****######*****************+++++++++++++*++++++*####*************************************#########*++++==+++===+=============*##*##**#******************************************#####################################################################################################******************************************************##########################################################################################################%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%#################%%##%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########################################%%%%%%%%%%%%%%################################%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##########################################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@#########################################################################################################################################################################################################################%%%#######################################################################################################################################################################################################################%%%########################################%%%%%%%%%%%%%%%%%%%%%%%%#####*************************************##################################################################################################################################################
******************************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++****#############*********************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++***#############################****************************************************************************************************************************************+++++++++++======================================*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==-=#######*:::::::::::::::::####::::::::::#############################-:::::::::::::::+%%%%@@@@@%%%%%%%%%%%%%@@@@@@@@@@@*****@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#################***************+++++#%%%%%%%%%%%%%%%#+++%@%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####################**************+++++++++++++==========================================================================================================++****************++*******************************************++++++++++++*****++++==========================================================================================------------------------------------==================================================================================================================+**********#####################################################################################################################################################***********++++++++++++++++++++++++++++++++++++++++++++++=============++++++++++++++++++++**************++++++++++++++++++++++++++++++++++*******+=--===+++++++++++++++++++++++++++++++++++++++++*+**************************************************************************************************************************#######################***********++++++++++++++++++++++++++++++++++++============+++****##############++++++++++++++++++++++++++****##*****############************+++++++++++++++++++*#####*************************************########*+++=+==+++================++*#####********************************************###################################################################################################********************************************************##########################################################################################################%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%###########%#%###%%##%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######################################%%%%%%%%%%%%%%################################%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##########################################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@%########################################################################################################################################################################################################################%%%#######################################################################################################################################################################################################################%%%########################################%%%%%%%%%%%%%%%%%%%%%%%%#####*************************************##################################################################################################################################################
********************************************************************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++*****#############*********************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++***#############################*******************************************************************************************************************************************+++++++++++===================================*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===-=#######*:::::::::::::::::####::::::::::############################*::::::::::::::::+%%%%@@@@@%%%%%%%%%%%%%%@@@@@@@@@@#***#@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##################***************++++*%%%%%%%%%%%%%%%#++#@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###################**************+++++++++++++===========================================================================================================++***************+++******************************+***********++++++++++++******++==========================================================================================-------------------------------------================================================================================================-===================++++++++***###################################################################################################################################################***********++++++++++++++++++++++++++++++++++++++++++++++==============++++++++++++++++++++*************+++++++++++++++++++++++++++++++++++*******+=--===+++++++++++++++++++++++++++++++++++++++++++********************************************************************************************************************######################***********++++++++++=========++++++++++*******++++++++++=======+++***###############*+++++++++++++++++++++++++*#####*****#################********+++++++++++++++++++*#####*************************************########*+++=+===+===================*######*********************************************##############################################################################################***********************************************************#########################################################################################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%######%%%%%%%%%%%%##%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####################################%%%%%%%%%%%%%%###########################%####%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##########################################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@%########################################################################################################################################################################################################################%%%#######################################################################################################################################################################################################################%%%########################################%%%%%%%%%%%%%%%%%%%%%%%%#####*************************************##################################################################################################################################################
**********************************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++*****##############**********************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++***#############################*********************************************************************************************************************************************+++++++++++=================================#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===-*#######+:::::::::::::::::####::::::::::############################+::::::::::::::::+%%%%@@@@@%%%%%%%%%%%%%%@@@@@@@@@@%***%@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###################***************+++*#%%%%%%%%%%%%%%*+#@%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##################***************++++++++++++============================================================================================================++**************+++******************************+************+++++++++++******++===================================================================================--====--------------------------------------=====================================================================================================================+++++++*######################################################################################################################################################***********++++++++++++++++++++++++++++++++++++++++++++++==============+++++++++++++++++++*************+++++++++++++++++++++++++++++++++++++*******+====++++++++++++++++++++++++++++++++++++++++++++*****************************************************************************************************************############****************+++++++++++==============+++++++*****************+++++++++++++***###############*+++++++++++++++++++++++++*#####*****########################*+++++++++++++++++++*#####**************************************########*++==+===================+===+*#######********************************************#############################################################################################***********************************************************#########################################################################################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%###%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####################################%%%%%%%%%%%%%%###########################%####%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########################################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@%########################################################################################################################################################################################################################%%%#######################################################################################################################################################################################################################%%%%######################################%%%%%%%%%%%%%%%%%%%%%%%%%#####*************************************##################################################################################################################################################
************************************************************************************************************************************************************************+++++++++++++++++++++++++++++++++++++++*****###############**********************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++***#############################************************************************************************************************************************************************+++++++++++==============================#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===*#######+:::::::::::::::::####::::::::::############################-::::::::::::::::+%%%%@@@@@%%%%%%%%%%%%%%@@@@@@@@@@@#**@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####################**************++++#%%%%%%%%%%%%%#+#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##################**************++++++++++++=============================================================================================================+++*************++*****+*************************************++++++++++++*****++===============================================================================--------=---------------------------------------====================================================================================================================++++=+++++++**#################################################################################################################################################***********+++++++++++++++++++++++++++++++++++++++++++++++=============++++++++++++++++++++************++++++++++++++++++++++++++++++++++++++*******+===++++++++++++++++++++++++++++++++++++++++++++*+++********************************************************************************************************####***********************++++++++++++==================++++++**********************+++++++++****##############*+++++++++++++++++++++++++*#####*****#########################*+++++++++++++++++++*#####**************************************########*++==+======================+=+#######**********************************************########################################################################################**************************************************************#######################################********##########################################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####################################%%%%%%%%%%%%%############################%##%##%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###################################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@%########################################################################################################################################################################################################################%%%######################################################################################################################################################################################################################%%%%%######################################%%%%%%%%%%%%%%%%%%%%%%%%%#####*************************************##################################################################################################################################################
************************************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++******###############**********************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++***#############################**************************************************************************************************************************************************++++++++++++===========================#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===########+:::::::::::::::::####::::::::::############################:::::::::::::::::+%%%%@@@@@%%%%%%%%%%%%%%%@@@@@@@@@@%*#@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####################****************++*#%%%%%%%%%%%%**%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##################**************+++++++++++++=============================================================================================================+++************+++****++************************************++++++++++++*****+==============================================================================--------------------------------------------------==================================================================================================+**+================++++++++++++++**#############################################################################################################################################***********++++++++++++++++++++++++++++++++++++++++++++++++=============+++++++++++++++++++*************++++++++++++++++++++++++++++++++++++++********+==++++++++++++++++++++++++++++++++++++++++++++++++****************************************************************************************************######******************++++++++++++=======================+++++***********#####***********++++*****##############*+++++++++++++++++++++++++*#####*****##########################*+++++++++++++++++++*#####**************************************########*++=====================+==+==+*########**********************************************#####################################################################################*****************************************************************#################################***************######################################################%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###################################%%%%%%%%%%%%%############################%##%##%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##############################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#######################################################################################################################################################################################################################%%%######################################################################################################################################################################################################################%%%%%######################################%%%%%%%%%%%%%%%%%%%%%%%%%#####*************************************##################################################################################################################################################
************************************************************************************************************************************************************************++++++++*++++++++++++++++++++++++++++*******###############**********************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++**############################****************************************************************************************************************************************************+++++++++++++=========================#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==+########*:::::::::::::::::####::::::::::###########################+:::::::::::::::::+%%%%@@@@@%%%%%%%%%%%%%%%@@@@@@@@@@@#%@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####################**************#*++#%%%%%%%%%%%%*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##################***************++++++++++++==============================================================================================================+++***********+++****+++******+***************++***********++++++++++++*****++==========================================================================-----------------------------------------------------======================================================================================================++++===========+++++++++++++++==++**##########################################################################################################################################***********+++++++++++++++++++++++++++++++++++++++++++++++==============+++++++++++++++++++************++++++++++++++++++++++++++++++++++++++++********++++++++++++++++++++++++++++++++++++++++++++++++++*************************************************************************************************#######*************++++++++++++============================++++******##################*************##############*++++++++++++++++++++++++++#####*****##########################*+++++++++++++++++++*#####***************************************#######*++=+====================+==+=+=+*########************************************************#########################################################################*###**********************************************************************###########################*********************######################################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###################################%%%%%%%%%%%%################################%##%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%############################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#######################################################################################################################################################################################################################%%%######################################################################################################################################################################################################################%%%%%######################################%%%%%%%%%%%%%%%%%%%%%%%%%#####*************************************##################################################################################################################################################
**********************************************************************************************************************************************************************************++**++**+++++++++++++++++++*******###############**********************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++**############################*****************************************************************************************************************************************************++++++++++++++=======================#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==*########*:::::::::::::::::####::::::::::###########################-:::::::::::::::::+%%%%@@@@@%%%%%%%%%%%%%%%%@@@@@@@@@@%@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######################************#%%#*#%%%%%%%%%%%#%@%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#################***************+++++++++++++==============================================================================================================+++***********++****+++******+**************+++***********+++++++++++++****++========================================================================-------=-----------------------------------------------==========================================================================================================++++=======+++++++++++++++++++++++****####################################################################################################################################***********++++++++++++++++++++++++++++++++++++++++++++++++============++++++++++++++++++++************+++++++++++++++++++++++++++++++++++++++++********+++++++++++++++++++++++++++++++++++++++++++++++++************************************************************************************************#######********+++++++++++==================================+++******#######################*********##############*++++++++++++++++++++++++++*####*****###########################*+++++++++++++++++++*#####***************************************#######*++=+============================*#####****************************************************#####################################################################*#****************************************************************************######################************************#######################################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###################################%%%%%%%%%%%%################################%##%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#%%#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#############################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#######################################################################################################################################################################################################################%%%######################################################################################################################################################################################################################%%%%%######################################%%%%%%%%%%%%%%%%%%%%%%%%%#####*************************************##################################################################################################################################################
****************************************************************************************************************************************************************************************++++++++++++++++++++************##########***********************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++***###########################******************************************************************************************************************************************************+++++++++++++++=====================#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===*########*:::::::::::::::::####::::::::::###########################::::::::::::::::::+%%%%@@@@@@%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######################***********%%%%%%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##################***************+++++++++++++===============================================================================================================+++**********++*****++******++*******++*+++++++**********+++++++++++++*****+=======================================================================---------------------------------------------------===========================================================================================================================+++++++++++++++++++++++++++++*#################################################################################################################################***********++++++++++++++++++++++++++++++++++++++++++++++++=============++++++++++++++++++++**********+++++++++++++++++++++++++++++++++++++++++++********++++++++++++++++++++++++++++++++++++*++++++++++*****+****+*************************************************************************************######*****+++++++++=======================================+++*****############################****################++++++++++++++++++++++++++*####*****############################*+++++++++++++++*++*######*****************************************#####*+++++=+=========================+##*####****************************************************###################################################################******************************************************************************################*******************************#####################################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####################################%%%%%%%%%%%%####################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#######################################################################################################################################################################################################################%%%%%####################################################################################################################################################################################################################%%%%%######################################%%%%%%%%%%%%%%%%%%%%%%%%%#####*************************************##################################################################################################################################################
****************************************************************************************************************************************************************************************++++++++++++++++++++**********************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++***###########################*****************************************************************************************************************************************************++++++++++++++++++===================#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===*########*:::::::::::::::::####::::::::::*#########################+::::::::::::::::::+%%%%@@@@@@%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####################**********#%%%%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##################****************+++++++++++++==============================================================================================================++++**********+*****++******++*******++++++++++**********+++++++++++++*****+=======================================================================--------------------------------------------------=========================================================================================================================++++++++++++++++++++++++++++++++++*###############################################################################################################################***********++++++++++++++++++++++++++++++++++++++++++++++++==============+++++++++++++++++++**********+++++++++++++++++++++++++++++++++++++++++++++********++++++++++++++++++++++++++++++++++**++++++++++***********************************************************************************************#####*****++++===========================================++++*****################################################*++++++++++++++++++++++++++####*****#############################*++++++++++++++++++*###*###****************************************#####*++==============================+*######*****************************************************#################################################################*********************************************************************************########*************************************#####################################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###################################%%%%%%%%%%%%####################################%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%####%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#########################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%######################################################################################################################################################################################################################%%%%%####################################################################################################################################################################################################################%%%%%######################################%%%%%%%%%%%%%%%%%%%%%%%%%#####*************************************##################################################################################################################################################
**************************************************************************************************************************************************************************************************++++++++************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++***##########################***************************************************************************************************************************************************+++++++++++++++++++++++=================#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===#########+:::::::::::::::::####::::::::::*####*####################=::::::::::::::::::+%%%@@@@@@@%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######################********#%%%%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###################***************++++++++++++++==============================================================================================================++++*********++****+++******+******+++++++++++**********++++++++++++++****+======================================================================-----------------------------------------------=====================================================================================================================++***#############***********++++++++++++++*##############################################################################################################################***********+++++++++====+++++++++++++++++++++++++++++++++++++============++++++++++++++++++++*********++++++++++++++++++++++++++++++++++++++++++++++*****##*++++++++++++++++++++++++++++++++++*++++++++***************************#########**************************************************************###*****+++===========================================+++++****#################################################*++++++++++++++++++++++++++*###******############################*+++++++++++++++++++*##**######*************************************#####*+================================+######*****************************************************#################################################################******************************************************************************************************************************#####################################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##################################%%%%%%%%%%%%%###################################%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%#########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#####################################################################################################################################################################################################################%%%%%%####################################################################################################################################################################################################################%%%%%######################################%%%%%%%%%%%%%%%%%%%%%%%%%#####**************************************#################################################################################################################################################
*******************************************************************************************************************************************************************************************************++***************************************++********************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++***#########################**************************************************************************************************************************************************+++++++++++++++++++++++++++===============#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===#########=:::::::::::::::::####::::::::::*####*#*##################:::::::::::::::::::+%%%@@@@@@@%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######################*******#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###################***************++++++++++++++++=============================================================================================================++++*********+****+++******+******+++++++++++**********++++++++++++++****++=====================================================================----------------------------===--------------==================================================================================================================++***########################%%%%%######**++=++++#%#############################################################################################################################***********++++++++====+++++++++++++++++++++++++++++++++++++=============+++++++++++++++++++*********+++++++++++++++++++++++++++++++++++++++++++++++*****##**++++++++++++++++++++++++++++++++*++****************************##############*********************************************************************+++========================================+++++++******################################################*++++++++++++++++++++++++++*####*****#############################*+++++++++++++++++++***+*##########**********************************####*+================================+*##*##******************************************************###############################################################*******************************************************************************************************************************#####################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##################################%%%%%%%%%%%%%####################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@%##################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#####################################################################################################################################################################################################################%%%%%%####################################################################################################################################################################################################################%%%%%#####################################%%%%%%%%%%%%%%%%%%%%%%%%%%#####**************************************#################################################################################################################################################
*******************************************************************************************************************************************************************************************************************************************++++++++********************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++***########################*********************************************************************************************************************************************+++++++++++++++++++++++++++++++++==============#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===#########-:::::::::::::::::####-:::::::::+####*#*#################*:::::::::::::::::::+%%%@@@@@@@%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########################******#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###################****************++++++++++++++++=============================================================================================================++++********+****+=+******+******+++++++++++**********++++++++++++++****++=====================================================================---------------------------======------==----======================================================================-=================================++*********#***####################%%#######%%%%%%%%%##**+++##%%##########################################################################################################################***********+++++++++=====+++++++++++++++++++++++++++++++++++==============+++++++++++++++++++*********+++++++++++++++++++++++++++++++++++++++++++++++****####*+++++++++++++++++++++++++++++++*************************####################*********************************************************************+++====================================+++++++++******##################################################*+++++++++++++++++++++++++*####*****##############################*+++++++++++++++++*+*++*###############*******************************###*+=================================+##**#********************************************************############################################################*******************************************************************************************************************************#####################################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#%%%%%%##################################%%%%%%%%%%%%%#####################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@%####################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#####################################################################################################################################################################################################################%%%%%%####################################################################################################################################################################################################################%%%%%#####################################%%%%%%%%%%%%%%%%%%%%%%%%%%#####**************************************#################################################################################################################################################
******************************************************************************************************************************************************************************************************************************************++++++++++*******************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++***#######################**********************************************************************************************************************************************+++++++++++++++++++++++++++++++++++============#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==+#########-:::::::::::::::::*###-:::::::::=####*###################+:::::::::::::::::::+%%%@@@@@@@%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#########################*#**##%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###################****************+++++++++++++++++============================================================================================================+++++*******+****+=+******+******++++++++++++*********+++++++++++++++***++=====================================================================---------------------------======-----===--=================================================================================+****************************#********####################################%%%#%%%%###+*##%%%#######################################################################################################################************++++++++======+++++++++++++++++++++++++++++++++++==============+++++++++++++++++++********++++++++++++++++++++++++++++++++++++++++++++++++***#####**+++++++++++++++++++++++++++++*******************##########################*********************************************************************++==================================+++++++++********##################################################*++++++++++++++++++++++++++*###*****##############################*+++++++++++++++++++++++*##################*****************************##*+=================================+*##*#*********************************************************###########################################################******************************************************************************************************************************######################################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##%%%%%###################################%%%%%%%%%%%%%#####################################%%%@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%####################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###############################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%####################################################################################################################################################################################################################%%%%%%%###################################################################################################################################################################################################################%%%%%#####################################%%%%%%%%%%%%%%%%%%%%%%%%%%#####**************************************#################################################################################################################################################
****************************************************************************************************************************************************************************************************************************************++++++++++++*******************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++***######################************************************************************************************************************************************************+++++++++++++++++++++++++++++++++++===========#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==+#########::::::::::::::::::*###=:::::::::-####**##################=:::::::::::::::::::+%%%@@@@@@@%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%############################*##%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###################****************++++++++++++++++++============================================================================================================++++++*****+****+=++*****++*****++++++++++++*********+++++++++++++++****+=====================================================================---------=--------------=-=======-----=================================================================================++**###*######****************************#############################%%%##%%%####%%%%%#%######%%%%%###################################################################################################################************++++++++=======+++++++++++++++++++++++++++++++++++=============+++++++++++++++++++********+++++++++++++++++++++++++++++++++++++++++++++++++***######*+*+++++++++++++++++++++++++++***********###############################***********************************************************************++===============================+++++++**********####################################################*++++++++++++++++++++++++++*###*****###############################*+++++++++++++++++++++++*#######################************************##*+==================================*####**********************************************************#########################################################******************************************************************************************************************************#######################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%#######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%############################################%%%%%%%%%%%%%#####################################%%%@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%######################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#############################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%####################################################################################################################################################################################################################%%%%%%%###################################################################################################################################################################################################################%%%%%#####################################%%%%%%%%%%%%%%%%%%%%%%%%%%#####**************************************#################################################################################################################################################
***************************************************************************************************************************************************************************************************************************************+++++++++++++*******************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++***#####%################************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++==========#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==+#######**::::::::::::::::::*###=::::::::::##*#**#**###############-:::::::::::::::::::+%%%@@@@@@@%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###########################*##%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###################*****************+++++++++++++++++=============================================================================================================++++++*********++++*****++*****++++++++++++**********++++++++++++++****+=====================================================================---------==-------------=-=======----===============================================================================+*****#************************************##################################%#######%##%##%%%######%#%%%%%#################################################################################################################************++++++++======+++++++++++++++++++++++++++++++++++=============+++++++++++++++++++********+++++++++++++++++++++++++++++++++++++++++++++++++++*#######**+++++++++++++++++++++++++++*****####################################************************************************************************+++=============================++++++***********#####################################################++++++++++++++++++++++++++*###*****################################*++++++++++++++++++++++*##########################**********************##*===================================+#*##**********************************************************#########################################################****************************************************************************************************************************########################################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%###########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#############################################%%%%%%%%%%%%%####################################%#%%%@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%########################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#############################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%####################################################################################################################################################################################################################%%%%%%%###################################################################################################################################################################################################################%%%%%#####################################%%%%%%%%%%%%%%%%%%%%%%%%%%#####***************************************################################################################################################################################################
*******************************************************************************************************************************************************************************************************++******************************+++++++++++++*******************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++**######%%%##%#########*************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++=====+====#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==*########*::::::::::::::::::+###+::::::::::###**#*****############*::::::::::::::::::::+%%@@@@@@@@%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##############################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##################****************++++++++++++++++++=============================================================================================================+++++**********+=+*****++******+++++++++++**********+++++++++++++++**+*+============+==========================================================---========-----------=======-----====================================-=====================================++*******************************************########################*++**##############%%#%%##%##################%%#############################################################################################################************++++++++=-===+++++++++++++++++++++++++++++++++++++=============++++++++++++++++++++*******+++++++++++++++++++++++++++++++++++++++++++++++++++**#######*++++++++++++++++++++++++++*######################################**************************************************************************+++===========================+++++**********########################################################*++++++++++++++++++++++++++*##*****################################*+++++++++++++++++++++++*###############################*****************##*+===================================*###*********************************************************#########################################################*****************************************************************************************************************************########################################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%############################################%%%%%%%%%%%%%%###################################%#%%%@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%##########################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##########################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%####################################################################################################################################################################################################################%%%%%%%###################################################################################################################################################################################################################%%%%######################################%%%%%%%%%%%%%%%%%%%%%%%%%%#####***************************************################################################################################################################################################
***************************************************************************************************************************************************************************************************************************************+++++++++++++*******************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++**####################**************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++==========*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==*#######**::::::::::::::::::+###*::::::::::##*********############+::::::::::::::::::::+%%@@@@@@@@%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#############################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#################****************++++++++++++++++++==============================================================================================================+++++*********+=+*****++******+++++++++++**********+++++++++++++++****+============+==========================================================--===========---------=======-==----====================================================================++*********************************************##############################**++**######%%###%###%###################%%%############################################################################################################*************++++++++===++++++++++++++++++++++++++++++++++++++=============++++++++++++++++++++*******++++++++++++++++++++++++++++++++++++++++++++++++++++**#######*+++++++++++++++++++++++++*####################################****************************************************************************+++=========================++++++*******###########################################################*++++++++++++++++++++++++++*##*****#################################*+++++++++++++++++++++++*##################################***************#*+===================================+*###********************************************************#########################################################***************************************************************************************************************************##########################################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%############################################%%%%%%%%%%%%%%###################################%%%%%%%@@@@@@@@@@@@@@@@@@@@@%%%%%%%###########################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%###################################################################################################################################################################################################################%%%%%%%###################################################################################################################################################################################################################%%%%######################################%%%%%%%%%%%%%%%%%%%%%%%%%%#####***************************************################################################################################################################################################
***************************************************************************************************************************************************************************************************************************************+++++++++++++*******************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++***###################**************************************************************************************************************************************************+++++++++++++++++++++++++++++++++++++=========*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==*#######**::::::::::::::::::+###*-:::::::::##**#******#####*######=::::::::::::::::::::=%%@@@@@@@@%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#############################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##################****************+++++++++++++++++===============================================================================================================+++++********++++****++******+++++++++++**********+++++++++++++++****+============+========================================================================--------======----------================================--============================++****************####*********************###########################################*+++++*######%%####%###################%%%%%########################################################################################################************++++++++=++++++++++++++++++++++++++++++++++++++++===============++++++++++++++++++*******++++++++++++++++++++++++++++++++++++++++++++++++++++++**#######*++++++++++++++++++++++++########%%%%####################********************************************************************************+++========================+++++******#############################################################*++++++++++++++++++++++++++*##*****##################################*++++++++++++++++++++++*###################################***************#*====================================+*#**#*******************************************************########################################################***************************************************************************************************************************###########################################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%##########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###########################################%%%%%%%%%%%%%%###################################%%#%%%%%%@@@@@@@@@@@@@@@@@@%%%#%%%%############################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%###################################################################################################################################################################################################################%%%%%%%###################################################################################################################################################################################################################%%%%######################################%%%%%%%%%%%%%%%%%%%%%%%%%%#####***************************************################################################################################################################################################
***************************************************************************************************************************************************************************************************************************************++++++++++++********************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++***##################****************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++=========*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==*#######**::::::::::::::::::+####=:::::::::##**********####*######=::::::::::::::::::::=%%@@@@@@@@@%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#############################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#################****************+++++++++++++++++===============================================================================================================++++++********+++*****+******+++++++++++**********+++++++++++++++****+===========++========================================================================-------------------==============================================================++*****************###############*****#########################################################*+++++**###############################%%######################################################################################################*************++++++++++++***++++++++++++++++++++++++++++++++++==============++++++++++++++++++*******+++++++++++++++++++=++++++++++++++++++++++++++++++++**+**#######**++++++++++++++++++++++#%######%%###################***********************************************************************************++++=====================+++++******###############################################################+++++++++++++++++++++++++++##*****##################################*+++++++++++++++++++++++*###################################**************##*=====================================*#**********************************************************#######################################################**************************************************************************************************************************############################################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%###########%%%%%%%%%%%%%%%%%%%%%%###%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###########################################%%%%%%%%%%%%%%%#################################%##%#%%%%%%@@@@@@@@@@@@@@@@%%%%%%%%##################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%###################################################################################################################################################################################################################%%%%%%%####################################################################################################################################################################################################################%########################################%%%%%%%%%%%%%%%%%%%%%%%%%%#####***************************************################################################################################################################################################
***************************************************************************************************************************************************************************************************************************************++++++++++++********************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***#################*****************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++=======+*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==########**::::::::::::::::::*####+:::::::::*#***#******####*#####*-::::::::::::::::::::-%%@@@@@@@@@%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###############################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#################*****************++++++++++++++++================================================================================================================+++++********+++*****+******++++++++++++*********+++++++++++++++*****+==========++========================================================================----------------=-----======================================================++*************###########################################################################################***##################################%%%%#################################################################################################*************++++++++**********++++++++++++++++++++++++++++++++=============++++++++++++++++++********+++++++++++++++++===++++++++++++++++++++++++++++++++**++*########**++++++++++++++++++++*###################********************************************************************************************++++====================+++++******###############################################################*++++++++++++++++++++++++++##*****###################################*+++++++++++++++++++++++###################################***************##*=====================================+***********************************************************#######################################################*****#********#*********************************************************************************************************##############################################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%############%%%##%%%%%%%%################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####%%%##################################%%%%%%%%%%%%%%%#################################%##%##%%%%%%@@@@@@@@@@@@@%%%%%%%%%%##################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%##################################################################################################################################################################################################################%%%%%%%#############################################################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%#####***************************************################################################################################################################################################
***************************************************************************************************************************************************************************************************************************************+++++++++++*********************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***###############*******************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++=====++*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=+########**-:::::::::::::::::*####*:::::::::*#***#*******#########*:::::::::::::::::::::-%%@@@@@@@@@%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##################****************++++++++++++++++=================================================================================================================+++++*******++++****+******++++++++++++*********+++++++++++++++*****+==========++========================================================================---------------=-===============================================--======++***********##########################################################################################################%############################%%%%%%##############################################################################################**************+++++++***********++++++++++++++++++++++++++++++++===========+++++++++++++++++++*********+++++++++++++++======+++++++++++++++++++++++++++++++******####**###*+++++++++++++++++++#%#############************************************************************************************************++++===================+++++*****################################################################*++++++++++++++++++++++++++*#*****####################################*++++++++++++++++++++++*##################################***************###*+=====================================*##********************************************************######################################################**************######****************************************************************************************************##############################################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#################%%%%%%%%################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####%%%%##################################%%%%%%%%%%%%%%%#################################%##%%#%%%%%%%%@@@@@@@@@@%%%%%%##%%%###################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%##################################################################################################################################################################################################################%%%%%%%#############################################################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%####****************************************################################################################################################################################################
****************************************************************************************************************************************************************************************************************************************++++++++++*********************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****############*********************************************************************************************************************************************************+++++++++++++++++++++++++++++++++++++++==+++%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=+#######***-:::::::::::::::::*####*:::::::::+#***********#########+::::::::::::::::::..::#%@@@@@@@@@%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#################****************+++++++++++++++===================================================================================================================++++++******+++*****+*****++++++++++++*********++++++++++++++++****++=========+========================================================================---------===========================================================++***************##############################################################################################################################################%%#############################################################################################*************+++++++*######*****+++++++++++++++++++++++++++++++==============++++++++++++++++*********++++++++++++++=========++++++++++++++++++++++++++++**+*****###*++**##**++++++++++++++++*###########*****++++*******************************************************************************************++++================++++++*****################################################################*++++++++++++++++++++++++++*#*****####################################*+++++++++++++++++++++++*##################################***************###*+=====================================+**********************************************************#####################################################***********###########*************************************************************************************************################################################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%##########################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####%%%%##################################%%%%%%%%%%%%%%%%########%%%%%%%%%%%%%%%%%###########%%%%#%%%%%%%%%%%%%%%%%%%%###%%#####################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%##################################################################################################################################################################################################################%%%%%%%#############################################################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%####*****************************************###############################################################################################################################################
****************************************************************************************************************************************************************************************************************************************+++++++++**********************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****#######************************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++=+++%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=+#######**#=:::::::::::::::::+####*::::::::.+#***********##*######+::::::::::::::::::...:#%@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#############################*###%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#################*****************++++++++++++++====================================================================================================================++++++*****+++*****+*****++++++++++++*********++++++++++++++++*****+++=======+=======================================================================------=========================================================+++***********####*#############################################################################################################################################%###################################################################################################**************+++++++#######*****++++++++++++++++++++++++++++++==============++++++++++++++++**********++++++++++++===========++++++++++++++++++++++++++++**+******##+++++**##*+++++++++++++++######*******++++++++******************************************************************************************++++==============+++++++*****################################################################*+++++++++++++++++++++++++++#*****#####################################*+++++++++++++++++++++++####################################*************####*+======================================**********************************************************#####################################################********#*############*************************************************************************************************#############################################################%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%###########################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####%%%%##################################%%%%%%%%%%%%%%%%####%%%%%%%%%%%%%%%%%%%%%%###########%%#%%%%%%%%%%%%%%%%%%%%%##%%%##############################%%######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###############%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%##################################################################################################################################################################################################################%%%%%%%############################################################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%#####*****************************************###############################################################################################################################################
******************************************************************************************************************************************************************************************************************************************++++++***********************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********************************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=+#######*##=:::::::::::::::::+#####:::::::::-##**#*********#######=:::::::::::::::::: ::#%%%@@@@@@@%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###############################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###################***************+++++++++++++======================================================================================================================+++++*****+++***+*******++++++++++++*********++++++++++++++++*****+++=======+=========================================================================--=================-============================-===--===++**************########################################################################################################################################################################################################################################################**************+++++++########*****+++++++++++++++++++++++++++++===============++++++++++++++++*********++++++++++==============++++++++++++++++++++++++++++***********+++++++*****++++++++++++**********++++++++++++*****************************************************************************************++++========++++++++++++*****#################################################################*++++++++++++++++++++++++++#*****######################################*++++++++++++++++++++++*###################################**************####*+======================================+#*********************************************************###################################################*********##############**********************************************************************************************###########################################################%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%###################%%%%##################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#%%%%#################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##########%%%%%%%%%%%%%%%%%%%%##%%########################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###############%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#################################################################################################################################################################################################################%%%%%%#############################################################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%#####*****************************************###############################################################################################################################################
******************************************************************************************************************************************************************************************************************************************+++++************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********************************************************************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=+#######**#+:::::::::::::::::-#####-::::::::-#*************#######-:::::::::::::::::: .:*%%%@@@@@@@%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###############################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###################***************+++++++++++++======================================================================================================================+++++*****+++***********++++++++++++**********+++++++++++++++*****+++++=====+=======================================================================--=================--====================-====--=======+***************#############################################################################################################################################################################################################################################################**************++++++*%#######******++++++++++++++++++++++++++++==============+++++++++++++++++*********++++++++++===============++++++++++++++++++++++++++***********++++++++++++++++++++++++*****++++++++======++++****************************************************************************************+++++=====+++++++++++++*****#################################################################*++++++++++++++++++++++++++******######################################*+++++++++++++++++++++++*###################################*************#####*+======================================+**********************************************************##################################################***********#############*********************************************************************************************###########################################################%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#########################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########%%%%%%%%%%%%%%%%%%%%%%%###########################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###############%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#################################################################################################################################################################################################################%%%%%%%%###########################################################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%#####*****************************************###############################################################################################################################################
*******************************************************************************************************************************************************************************************************************************************+++*************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********************************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=*#######***+::::::::::::::::::#####=.::::::::#*************######*-:::::::::::::::::: .:*%%@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###############################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###################****************+++++++++++========================================================================================================================+++++****+++***********++++++++++++**********+++++++++++++++******+++++===++================================================================================+==============-=================---====++*****************################################################################################################################################################################################################################################################################**************++++++*%%######*******++++++*++++++*******+++++++===============++++++++++++++++**********++++++==+================+++++++++++++++++++++++++************+++++++++++++++++++++++++++++++++=========++++****************************************************************************************+++++===++++++++++++++*****#################################################################*++++++++++++++++++++++++++******#######################################*++*++++++++++++++++++++####################################*************#####*+=======================================*#********************************************************##################################################************###########********************************************************************************************##########################################################%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#########################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#%%%%%%%%#########################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##############%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%###############################################%%%%%%%%#########################%%%%%%%%%%%%%%%###############################################################################################################%%%%%%%%%%%######################################################################################################################################################################################################################%###################################%%%%%%%%%%%%%%%%%%%%%%%%%%%#####*****************************************###############################################################################################################################################
*******************************************************************************************************************************************************************************************************************************************++*********************************************+++++++++++++*++++++++++++***************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***************************************************************************************************************************************************************++++++++++*++++++++++++++++++++++++++++++#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=*######*****::::::::::::::::::#####+:::::::::##************######*::::::::::::::::::. ::+%%@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##############################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###################****************+++++++++++=========================================================================================================================+++++***+++****++++++*+++++++++++++*********+++++++++++++++******+++++++=++=============================================================================+===========---=================--====+*********************######################################################################################################################################################################################%%%%########################################################################**************+++++++#%%%#####********++++**+***********++++++++==============++++++++++++++++**********+++++++===================++++++++++++++++++++++++**************++++++++++++++++++++++++++===============+++***************************************************************************************+++++++++++++++++++++++****#################################################################*++++++++++++++++++++++++++******########################################*++*+++++++++++++++++++*###################################*************#######+=======================================+**********************************************************################################################*************###########****************************************************************************************##########################################################%%%%%%%%%#%##%##%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#########################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##############%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#########################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########################################################################################################%%%%%%%%%%%%%%%%########################################################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%#####*****************************************###############################################################################################################################################
*******************************************************************************************************************************************************************************************************************************************++********************************************++++++++++++++++++++++++++++**************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*************************************************************************************************************************************************************++++++++++**+++++++++++++++++++++++++++++*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=*######*****::::::::::::::::::#####*:::::::::*#*************#####+::::::::::::::::::. ::=%%@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#############################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####################***************+++++++++++==========================================================================================================================++++****++****++++*+*+++++++++++++*********++++++++++++++++*****++++++++++==========================================================================++===-=---=====================-====+************************#################%%%%######################################################################################################################################################################%%%%%%###################################################################***************++++++*%%%%#####*********+++**************+++++++==============++++++++++++++++***********+++++++==================+++++++++++++++++++++++++***************++++++++++++++++++++++=================+++***************************************************************************************++++++++++++++++++++++*****#################################################################+++++++++++++++++++++++++++*****########################################*+++++++++++++++++++++++*###################################************########+========================================***********************************************************##############################################***************#########****************************************************************************************#########################################################%%%%%%%%%#########%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%##################%%%%##################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####%%%%%%%%####%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#############%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#######################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####################################################################################################%%%%%%%%%%%%%%%%%%%#######################################################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%#####*****************************************###############################################################################################################################################
******************************************************************************************************************************************************************************************************************************************************************************************+++++++++++++++++++++++++++*************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*************************************************************************************************************************************************************++++++++++*+++***++++++++++++++++++++++++*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=*#####******::::::.:::::::::::*####*:::::::::*#*************#####+::::::::::::::::::. ::-%%@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#############################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####################***************++++++++++============================================================================================================================++++***++*****+++++*+++++++++++++*********++++++++++++++++******++++++++*=======================================================================+++=========================--====++**#************************#####################%%%%%%%%%%%%#############################################################################################################################################################%%%%%%%#################################################################**************+++++++%%%%%#####*********++************#**+++++++===============+++++++++++++++**********+++++++==================++*++++++++++++++++++++++*****************+++++++++++++++++++==================+++***************************************************************************************+++++++++++++++++++++*****#################################################################*++++++++++++++++++++++++++*****#########################################*+*++++++++++++++++++++*####################################************########+========================================+***********************************************************#############################################****************########*************************************************************************************###########################################################%%%%###############%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#################%%%%%%#################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##############%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%###################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###############################################################################################%%%%%%%%%%%%%%%%%%%%%%######################################################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%#####*****************************************###############################################################################################################################################
************************************************************************************************************************************************************************************************************************************************************************************************+++++++++++++++++++++*************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++************************************************************************************************************************************************************++++++++****+++*****+++++++++++++++++++++++%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=*####*******:::::::-::::::::::*#####::::::::.+#*************#####=::::::::::::::::::. .::%%@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%############################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####################***************+++++++++=============================================================================================================================++++++++*****+++++++=+++++++++++*********++++++++++++++++******++++++++*====================================================================+++++========-======-==========++******************************###########################%%%%%%%%%%%%%#############################################################################################################################################################%%%%################################################################***************++++++#%%%%%#######*******++******########++++++++==============++++++++++++++++**********++++++==================+***+++++++++++++++++++++******************++++++++++++++++++==================+++***************************************************************************************+++++++++++++++++++++****#################################################################*++++++++++++++++++++++++++******#########################################*++++*+++++++++++++++++*###################################************#########+========================================+************************************************************###########################################******************######***********************************************************************************#################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%##################%%%%##################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##############%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###########################################################################################%%%%%%%%%@@@@@@@@%%%%%%%%####################################################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%######*****************************************###############################################################################################################################################
************************************************************************************************************************************************************************************************************************************************************************************************++++++++++++++++++++**************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++************************************************************************************************************************************************************++++++*****++++******++*+++++++++++++++++++%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=*####*******::::::-*::::::::::+#####:::::::::=#*************#*###=::::::::::::::::::. .::#%@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%############################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####################***************+++++++++===============================================================================================================================+++++++*****++++++===+++++++++*********++++++++++++++++******++++++++*=================================================================+++=========================++**#####*************************#####################################%%%%%%%%%%%%%%%#########################################################################################################################################################################################################################****************+++++*%%%%#%###########**++*#############*+++++++==============++++++++++++++++**********+++++++=================+*****++++++++++++++++++++*******************++++++++++++++++==================+++*************************************************************##************************++++++++++++++++++++*****################################################################*++++++++++++++++++++++++++*****##########################################*+++++++++++++++++++++++####################################************#########+=========================================************************************************************###########################################*******************##*##*********************************************************************************###################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%########################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#%%%%%%%%%%%%%%%%%%%%%%##############%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%######################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######################################################################################%%%%%%%@@@@@@@@@@@@@@@@%%%%%%##################################################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%######*****************************************###############################################################################################################################################
****************************************************************************************************************************************************************************************************************************************************************************************************++++++++++++++**++************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***********************************************************************************************************************************************************+++++++++********+++******++++++++++++++++++#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=+####*******::::::*=::::::::::=#####=::::::::-##************#*##*-::::::::::::::::::. .::*%%@%@@@@@@@%%%%%%%%%%%%%%%%%%%%%%@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##########################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####################***************+++++++++=================================================================================================================================+++++*****++*+++==+=+++++++++********+++++++++++++++++*****+++++++**+=====================================================================================++****####***************************#######################################+:-+*#%%%%%%%%%%%%%%%%####################################################################################################################################################################################################################*****************+++++%%%%%%%%###########*++###########%##++++++++==============++++++++++++++++**********++++++=================******+++++++++++++++++++**********************+++++++++++++++================++++*********************++++++**********************************##************************++++++++++++++++++++****##############################################**################*++++++++++++++++++++++++++*****###########################################**+++++++++++++++++++++*####################################***********##########+=========================================+**************************************************************#######################################*******************************************************************************************************######################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%##################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###############%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%################%%%%##%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#################################################################################%%%%%%@@@@@@@@@@@@@@@@@@@%%%%%%#################################################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%######*****************************************###############################################################################################################################################
****************************************************************************************************************************************************************************************************************************************************************************************************++++++++++++++**++************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***********************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=+####*******:::::=#:::::::::::-#####+::::::::-####**********#*##*-::::::::::::::::::. ::*%%@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##########################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####################***************+++++++===================================================================================================================================++++******+++++====+++++++++********+++++++++++++++********++++++**+==============================================================================+++***************************************#########################################*:..:::--+*##%%%%%%#%%%%##################################################################################################################################################################################################################*****************+++++#%%%%%%%%###########*+*########%#%%##+++++*+==============++++++++++++++++**********+++++++================++++++++++++++++++++++++++***********************+++++++++++++================++++********************+++++++++********************************#************************++++++++++++++++++++*****#############################################**#################++++++++++++++++++++++++++*****############################################*++++++++++++++++++++++*####################################***********##########+==========================================**************************************************************######################################*****************************************************************************************************########################################################################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###%%%%%%%%%%%%%%%%%%################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%##############%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##############################################################################%%%%%%@@@@@@@@@@@@@@@@@@@@@%%%%%%%###############################################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%######*****************************************###############################################################################################################################################
*****************************************************************************************************************************************************************************************************************************************************************************************************+++++++++++++++++************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++************************************************************************************************************************************************************++++*+++++++++++++**++++++++*+++++++++++++++*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=+####*******:::::**::::::::::::#####*:::::::::########********##*:::::::::::::::::::. ..=%%%@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#########################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####################***************++++++======================================================================================================================================+++*****++++++++==++++++++********+++++++++++++*****##***++++++**+++====================================================================+++++******************************************############################################*=:........:-==+**#%%%%%%%########################################################################################################################################################%%#######################################################*****************++++*%%%%%%%%%%%#########++#%%%%%#%%%%%%%*++++++==============+++++++++++++++++**********+++++++===============++++++=====+++++++++++++++*************************++++++++++++================+++*******************+++++++++++*******************************#************************+++++++++++++++++++*****#############################################**#################++++++++++++++++++++++++++******###########################################*+++++++++++++++++++++++#####################################**********###########+====+=====================================+**************************************************************#####################################*******************************************************************************##########*********###########################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####%%%%%%%%%%%%%%%%%################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#%##########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##########################################################################%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%##############################################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%######*****************************************###############################################################################################################################################
******************************************************************************************************************************************************************************************************************************************************************************************************++++++++++++++++************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***********************************************************************************************************************************************************++++++++++++++++++++*++++++++++++++++++++++++*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=+###********-.:::*+::::::::::::######:::::::::#########******#*#+:::::::::::::::::::. :%@%@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#########################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######################**************++++++======================================================================================================================================+++******++++++===++++++++********+++++++++++*******####*++++++**++++===========================================++++++++++++++++++++++++*****************************************###################################################*:...............:+#####%%################################################################################################################################################################################################################*****************+++++#%%%%%%%%%%%%%%%%%##*+*%#%%%%%%%%%%%#+++++*+==============++++++++++++++++**********+++++++===============++=====-----=+++++++++++++***************************++++++++++================++++*****************+++++++++++++*****************************##************************++++++++++++++++++******#############################################*#################*+++++++++++++++++++++++++*****#############################################*++++++++++++++++++++++*####################################***********###########++=========================================+***************************************************************###################################***************************************************************************###################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####%%%%%%%%%%%%%%%#################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#%#%###%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######################################################################%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%############################################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%######*****************************************###############################################################################################################################################
********************************************************************************************************************************************************************************************************************************************************************************************************++++++++++++++************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***********************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++*+***+++++#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==###********=::::*=::::::::::::*#####:::::::::##########*****#*#+:::::::::::::::::::. #@%@%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######################**************++++++=======================================================================================================================================+++******++++=====+++++++********++++++++++*********###**+++++**+++++======================================++++++++++++++++++++++++++****************************************######################################################*=................:**#####################################################################################################################################################################################################################*****************+++++#%%%%%%%%%%%%%%%%%%%#*+#%%%%%%%%%%%%%*++++++==============++++++++++++++++**********++++++++=================-----::::::=+++++++++++*****************************+++++++++===============++++*****************+++++====+++++****************************#*************************+++++++++++++++++*******############################################**################*+++++++++++++++++++++++++*****#############################################*+++++++++++++++++++++++*####################################**********############*+==========================================+***************************************************************#################################**********************************************************************#########################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%###########################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####%%%%%%%%%%%%%%%%%%%%%%%####%#####%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##################################################################%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%###########################################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%######*****************************************###############################################################################################################################################
********************************************************************************************************************************************************************************************************************************************************************************************************++++++++++++++************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***********************************************************************************************************************************************************++++++++++++++++++++++++++++++++++*********+++#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==*##********+:::=*:::::::::::::+#####-::::::::###########******#+:::::::::::::::::::. *@%@@@@@@@@@%%%%%%%%%%%%%@@%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######################***************+++++========================================================================================================================================+++*******++++++++++++++********+++++++++*****++++***##**++++**++++++===============================++++++++++++++++++++++++***************************#********##################################################################*+:................+#**####*-:*############################################################################################################################################################################################################*****************++++*%%%%%%%%%%%%%%%%%%%##+*%%%%%%%%%%%%%%+++++*+=============+++++++++++++++++**********+++++++==============---::::::......-=+++++++++*******************************+++++++===============++++*****************++++======++++****************************#************************++++++++++++++++*********############################################*################*+++++++++++++++++++++++++*****##############################################*+++++++++++++++++++++++#####################################*********#############*+==========================================+****************************************************************################################*******************************************************************###########################################################################################################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%############################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%################################################################%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%###########################################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%######*****************************************###############################################################################################################################################
*********************************************************************************************************************************************************************************************************************************************************************************************************+++++++++++++***********************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********************************************************************************************************************************************************+++++++++++++++++++++++++++++++++++*************%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==*##*********:::**:::::::::::::-#####+:::::::-###########***#**#=:::::::::::::::::::. =%%@@@@@@@@@%%%%%%%%%@@%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######################*************++++++=========================================================================================================================================++********+++++++++++++********++++++++****++++++***##**++++**+++++++++++===================++++++++++++++*******************************************##**#########################################################################*-................-**####**::*############################################################################################################################################################################################################*****************+++++#%%%%%%%%%%%%%%%%%%%%*+#%%%%%%%%%%%%%#++++++==============++++++++++++++++***********+++++++============-:::::............-++++++++*********************************+++++===============++++****************++++========++++**************************#*************************+++++++++++++***********#############################################################*+++++++++++++++++++++++++******##############################################*++++++++++++++++++++++*#####################################*********#############*+===========================================*****************************************************************##############################****************************************************************###############################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#############################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%############################################################%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%##########################################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%######*****************************************###############################################################################################################################################
**********************************************************************************************************************************************************************************************************************************************************************************************************++++++++++++***********************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++**********%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==*##*********::-#*=:::::::::::::#####*:::::::-###########***#**#=::::::::::::::::::: -%%@@@@@@@@@%%%%%%%%@@@%@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######################*************++++++==========================================================================================================================================++*******+++++++++++++********++++++******++++++***###**++***++++++++++++++++++++++++++++++++++++++*****************************************#####################################################################################*+:.................:-=*#**:-#############################################################################################################################################################################################################*****************+++++*%%%%%%%%%%%%%%%%%%%%#+#%%%%%%%%%%%%%%*++++*+=============++++++++++++++++***********++++++++===========::............ . :=++++++************************************+++===============++++***************++++========+++++*************************#*************************+++++++++++*************#############################################################+++++++++++++++++++++++++******##############################################*+++++++++++++++++++++++*#####################################*********#############*+===========================================+*****************************************************************#############################**************************************************************#################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%##############################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##########################################################%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%#########################################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%######*****************************************###############################################################################################################################################
********************************************************************************************************************************************************************************************************************************************************************************************************++++++++++++++***********************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++**********#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*+++++++++++++++++++++++++++++++++++++++**************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===*##*********::+#*+:::::::::::::*#####:::::::=##########*****#*#=::::::::::::::::::: :#%@@@@@@@@@@%%%%%%%%%@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######################*************++++++===========================================================================================================================================++******+++++++++++++****************************####***************+++++++++++++++++++++++++****************************************###########################################################################################**-.....................:-=::*#############################################################################################################################################################################################################*****************+++++%%%%%%%%%%%%%%%%%%%%%#*%%%%%%%%%%%%%%#++++++=============+++++++++++++++++***********++++++++=========-:....... ..-=+++++*************************************+===============++++**************++++==========++++************************#*************************++++++++++***************############################################################+++++++++++++++++++++++++******###############################################*++++++++++++++++++++++*######################################********#############**+===========================================+******************************************************************###########################***********************************************************#####################################################################################################################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######################################################%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%########################################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%######*****************************************###############################################################################################################################################
********************************************************************************************************************************************************************************************************************************************************************************************************++++++++++++++***********************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++**********#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#++++++++++++++++++++++++++++++++++++++***************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==*##*********::***+:::::::::::::*#####:::::::=##########*******#=::::::::::::::::::: #%%@@@@@@@@@@%%%%%%%%%@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######################*************++++++===========================================================================================================================================+++*****+++++++++++++****************************####*********************++++++++++++++****************************************#################################################################################################*=..........................=######**#####################################################################################################################################################################################################*****************+++++#%%%%%%%%%%%%%%%%%%%%##%%%%%%%%%%%%%%%*++++*+============+++++++++++++++++***********+++++++++========:..... . :=+++*+**************************************+==============++++************+++++==========+++++*************************************************+++++++++****************###########################################################*++++++++++++++++++++++++******################################################*++++++++++++++++++++++*######################################*******##############**+============================================+*****************************************************************##########################*********************************************************########################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%################################%%%%%%%%########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#################################################%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%########################################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%######****************************************################################################################################################################################################
********************************************************************************************************************************************************************************************************************************************************************************************************++++++++++++++***********************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********************************************************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++*********#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#++++++++++++++++++++++++++++++++++++******************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==*##*********-:***=:::::::::::::+#####=::::::=##########*******#-::::::::::::::::::: %%%%%@@@@@@@@%%%%%%%%%@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####################*************+++++++===========================================================================================================================================++*****+++++++++++++*****************************###*****#******************+++*************************************#############################################################################################################+:..........................-+**+-:=#####################################################################################################################################################################################################*****************+++++*%%%%%%%%%%%%%%%%%%%%%##%%%%%%%%%%%%%%%++++*+=============+++++++++++++++++***********++++++++========:.... ....:=++*+***************************************+============++++++********++++++============+++++**********************************************++++++++++*****************##########################################################*++++++++++++++++++++++++******################################################*+++++++++++++++++++++++#######################################*******##############**+============================================+*****************************************************************##########################******************************************************##########################################################################################################################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%###############################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#############################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%#######################################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%######****************************************################################################################################################################################################
*********************************************************************************************************************************************************************************************************************************************************************************************************+++++++++++++***********************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++*********%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#+++++++++++++++++++++++++++++++++**********************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==+##*********=:***=:::::::::::::-#####+::::::=##########********-::::::::::::::::::: #%%%@@@@@@@@@%%%%%%%%%@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####################*************+++++++============================================================================================================================================++****+++++++++++++*****************************###****##*****************************************#************#################################################################################################################*-.................................:######################################################################################################################################################################################################*****************+++++#%%%%%%%%%%%%%%%%%%%%%#%%#%%%%%######%#++++*+============+++++++++++++++++***********+++++++++=======..... .....:-++******************************************+===========++++++++++++++++++==============+++++********************************************++++++++++******************#########################################################*++++++++++++++++++++++++******#################################################*++++++++++++++++++++++*#######################################******###############**+=============================================+*****************************************************************########################*****************************************************############################################################################################################################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%#####################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##########################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@%%#####################################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%######****************************************################################################################################################################################################
**********************************************************************************************************************************************************************************************************************************************************************************************************++++++++++++***********************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********************************************************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++********#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*+++++++++++++++++++++++++++***************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==+##*********+:***-::::::::::::::#####*::::::=##########********:::::::::::::::::::. #%%%@@@@@@@@%%%%%%%%%%@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####################*************+++++++=============================================================================================================================================++****++++++++++++*****************************####***##******************************************##############################################################################################################################+:.................................+#####################################################################################################################################################################################################*****************+++++*%%%%%%%%%%%%%%%%##%###################*+++++============++++++++++++++++++***********+++++++++=====-...... ......::=++*******************************************+==========+++++++++++++++===============++++++******************************************++++++++++*******************########################################################*++++++++++++++++++++++++******#################################################*+*+++++++++++++++++++++*#######################################*****################**+=============================================+*****************************************************************#######################***************************************************###############################################################################################################################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%###################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#########################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%#####################################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####*****************************************################################################################################################################################################
**********************************************************************************************************************************************************************************************************************************************************************************************************++++++++++++***********************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********************************************************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++********#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*+++++++++++++++++++++**********************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++====##**********-***:::::::::::::::*#####::::::+##########******#*:::::::::::::::::::. #%%%%@@@@@@%%%%%%%%%%%@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###############%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####################***************+++++++============================================================================================================================================+++***+++++************************************####***##**************************************##################################################################################################################################*-.............................:...-#####################################################################################################################################################################################################*****************++++++#%%%%%%%###############################++++*+============++++++++++++++++++**********++++++++++====-....... .......::-=**+******************************************+========++++++++++++++=================++++++****************************************++++++++++********************########################################################++++++++++++++++++++++++******##################################################*+++++++++++++++++++++++########################################*****################**+=============================================+*****************************************************************#######################***********************************************###################################################################################################################################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#%%%%%%%%########%######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%####################################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####****************************************#################################################################################################################################################
**********************************************************************************************************************************************************************************************************************************************************************************************************++++++++++++***********************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********************************************************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++*********%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%+++++++++++++++++++************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++====##**********=***:::::::::::::::+#####-:::::+##########*****##*:::::::::::::::::::. #%%%%@@@@@@%%%%%%%%%%%@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##############%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####################***************+++++++=============================================================================================================================================+++**++++++++++*******************************####***##************************************#####################################################################################################################################+:................................:*####################################################################################################################################################################################################******************+++++#%%#########################**********#+++++++============+++++++++++++++++***********+++++++++====:........ ........:::-=+**********************************************++======++++++++++====================++++++*************************************+++++++++++*********************#######################################################++++++++++++++++++++++++******##################################################*+++*+++++++++++++++++++*#######################################*****##################**==============================================*****************************************************************######################*********************************************######################################################################################################################################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#%%%%%%%%%%%%%%%%%######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######################%%%%%%%#%%#######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%####################################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####****************************************#################################################################################################################################################
**********************************************************************************************************************************************************************************************************************************************************************************************************++++++++++++***********************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++**********#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#+++++++++++++++++*******************************************************************+++++++++++++++++++**++++++++++++++++++++++++++++++++++++++++++++++++++++++====*#**********+***::::::::::::::.=#####+:::::+##########*****##+:::::::::::::::::::. *%%%%@@@@@%%%%%%%%%%%%@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##############%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####################****************+++++++=============================================================================================================================================++***+++++++++++++******************************##**##********************************#########################################################################################################################################*:.................................+####################################################################################################################################################################################################******************+++++*############***********************+++*++++*+============+++++++++++++++++***********++++++++++===:......... .......::::---=+***********************************************++======++++++======================+++++++**********************************++++++++++++*********************######################################################*+++++++++++++++++++++++******###################################################*++++*++++++++++++++++++########################################****####################*+=============================================+****************************************************************#####################********************************************########################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#%%%%%%%%%%%%%%%%%%####%%%%%%%%%%%%%%%%%%%%%%%%%%%%##############################%##%########%######%%###################################################%%%%%%%%###%%%%%%%%%%%%%%%%%%%%%#################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%###################################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####****************************************#################################################################################################################################################
**********************************************************************************************************************************************************************************************************************************************************************************************************+++++++++++++**********************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********************************************************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++********%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#++++++++++++++*********************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++====*#**************::::::::::::::::#####*:::::+#########******##+:::::::::::::::::::. =%%%%@@@@@%%%%%%%%%%%%@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%############%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####################**************++++++++=============================================================================================================================================++***+++++++++++++++++****************************##*********************************##########################################################################################################################################*=.................................:###################%#%###############################################################################################################################################################################*****************++++++#####**************++++++++++++++++++++=+++++============++++++++++++++++++***********++++++++++==:.......... ........:::-----==++***********************************************++================================+++++++********************************+++++++++++++**********************####################################################*+++++++++++++++++++++++*****#####################################################++*+++++*++++++++++++++*################################################################*+=============================================+****************************************************************#####################********************************************########################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#%%%%%%%%%%%%%%%%########%%%%%%%%%%%%%%%%%%%%%%%%############################################################################################################################%%%%%%%%%####################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%##################################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####***************************************##################################################################################################################################################
**********************************************************************************************************************************************************************************************************************************************************************************************************++++++++++++++*********************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********************************************************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++********%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#++++*+++++++**********************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++===-*#**************::::::::::::::::*####*:::::+#########******##+:::::::::::::::::::. :%%%%@@@@@%%%%%%%%%%%%@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####################***************++++++++=============================================================================================================================================++**+++++++++++++++++****************************##*********************************###########################################################################################################################################+:................................:*####################################################################################################################################################################################################******************+++++********+++++++++++++++++================+++*+============+++++++++++++++++************+++++++++==:.......... .......::::---=--===+*************************************************+++=============================++++++++****************************++++++++++++++***********************###################################################*++++++++++++++++++++++******#####################################################*+++++++++++++++++++++++*################################################################*+=============================================+****************************************************************####################********************************************#########################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#%%%%%%%%%%%%%%%%%%######%%%%%%%%%%%%%%%%%%%%%%%%###############################################################################################################################%%%%%######################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#################################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####***************************************##################################################################################################################################################
**********************************************************************************************************************************************************************************************************************************************************************************************************++++++++++++++*********************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++*+++++*******#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#+++++++++++**********************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++===-*##*************-:::::::::::::::*#####=::::+#########******##+:::::::::::::::::::. %%%%@@@@@@%%%%%%%%%%%@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####################***************++++++++==============================================================================================================================================++**++++++++++++++++****************************##********************************############################################################################################################################################*-.................................+####################################################################################################################################################################################################******************++++++***+++++====================------------+++++============++++++++++++++++++************+++++++++-:........... ........:::----========+**************************************************++============================+++++++++************************++++++++++++++++***********************##################################################*++++++++++++++++++++++******######################################################*+++*+++++++++++++++++++#################################################################*+==============================================+****************************************************************##################*******************************************###########################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#################################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####***************************************##################################################################################################################################################
**********************************************************************************************************************************************************************************************************************************************************************************************************++++++++++++++*********************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++********%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*++++*+++++**********************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++==--*##*************=::::::::::::::.=#####+::::+#########******##+:::::::::::::::::::. %%%%@@@@@@%%%%%%%%%%%@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####################**************+++++++++=============================================================================================================================================++**+++++++++++++++*****************************##********************************#############################################################################################################################################+:................................-###############+++--=*######%#####%##################################################################################################################################################################******************+++++++++========-----------------------:::::=+++*+============++++++++++++++++++************++++++++=::........... ........::::------========++***************************************************++==========================++++++++++******************++++++++++++++++++*************************#################################################+++++++++++++++++++++++******#####################################################*++++*++++++++++++++++++*##################################################################+==============================================+****************************************************************##################*****************************************#####################################################%%%%%##################################################################################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%################################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####**************************************###################################################################################################################################################
**********************************************************************************************************************************************************************************************************************************************************************************************************++++++++++++++*********************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********************************************************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++*********#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*++*++*++*******************************************************************************++++++++********+++++++++++++++++++++++++++++++++++++++++++++++++++==--+##*************+:::::::::::::::-#####*::::+#########****#*##+:::::::::::::::::::. .%%%@@@@@@@%%%%%%%%%%%@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####################***************++++++++==============================================================================================================================================++*+++++++++++++++*****************************##********************************#############################################################################################################################################*-................................:###############**=::-=+*#%###########################################################################################################################################################################******************++++++=====--------------::::::::::::::::::::-=+++*============++++++++++++++++++************++++++++=-::............ .........:::------==========+*******************************************************++========================++++++++++++*********+++++++++++++++++++++++*************************################################################*+++++++++++++++++++++******#######################################################*+++*+++++++++++++++++++###################################################################+===============================================******************************************************************###############***************************************########################################################%%%%%#%%%%%############################################################################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%#################%%%%%%%%%%%%#############################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##########****#######################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%################################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####*************************************####################################################################################################################################################
**********************************************************************************************************************************************************************************************************************************************************************************************************++++++++++++++*********************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********************************************************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++*****++**#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*++++*++***********************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++==--+##**************::::::::::::::::*#####-:::+#########****####+:::::::::::::::::::. .%%%@@@@@@@%%%%%%%%%%%@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####################***************+++++++++==============================================================================================================================================+++++++++++++++++*****************************##*********************************#############################################################################################################################################=................................:*#################=:-=++=+#%%###%####################################################################################################################################################################******************++++++=------:::::::::::::::::::::::::::::::::-+++*+============++++++++++++++++++************++++++++=:::.....................::::-----=============+*++******************************************************+++====================++++++++++++++++++++++++++++++++++++++++++**************************###############################################*+++++++++++++++++++++******########################################################+*++*+*++++++++++++++++*################################################*##################+===============================================******************************************************************##############*************************************##########################################################%%%%%%%%%%%%############################################################################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%################%%%%%%%%%%%##############################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##########******######################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%################################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####*************************************####################################################################################################################################################
**********************************************************************************************************************************************************************************************************************************************************************************************************+++++++++++++++********************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++*++*+*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*+*+*+************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++===-=#***************=:::::::::::::::+#####=:::+#########****####=:::::::::::::::::::. .%%%%@@@@@%%%%%%%%%%%%@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###%%%%%%%%%%%%%####################****************++++++++==============================================================================================================================================++++++++++++++++****+*************************##**********************************######################################################################################################################****##################*:................................=##################=:=+++=-+##########################################################################################################################################################################******************+++++=-:::::::::::::::::::::::::::::::::::::::=+++*+============+++++++++++++++++*************+*++++++-::::...................::::-----=============+*+=++*********************************************************+++==================++++++++++++++++++++++++++++++++++++++****************************#############################################*+++++++++++++++++++++*******#######################################################*+*+*+++++++++++++++++++*################################################*##################+===============================================+******************************************************************############***********************************#############################################################%%%%%%%%%%%%############################################################################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%##################################%%%%%%%####################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##########*******#####################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%############%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%###############################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####************************************#####################################################################################################################################################
**********************************************************************************************************************************************************************************************************************************************************************************************************++++++++++++++++*******************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++*+*++*#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*+*******+*******************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++===--#***************=:::::::::::::::=#####*:::+#########*******#=:::::::::::::::::::. :%%%%@@@@@%%%%%%%%%%%%@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####%%%%%%%%%%#######################***************+++++++++==============================================================================================================================================+++++++++++++++***+++************************##***********************************###################################################################################################################******###################-:...............................-##################*-=+++=:-=*########################################################################################################################################################################******************++++++-::::::::::::::::::::::::::::::::::::::.:=++++=============+++++++++++++++++**************+++++++-::::..................::::----===============++===+*************************************************************++++==============++++++++++++++++++++++++++++++++++++****************************########################*#**################*++++++++++++++++++++++*****#########################################################**++*+*+++++++++++++++++###############################################***##################+===============================================+******************************************************************############**********************************##############################################################%%%%%%%%%%%#############################################################################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#############################%%%%%%%%%%%%%####################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#########*********####################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%############%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%###############################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####************************************#####################################################################################################################################################
**********************************************************************************************************************************************************************************************************************************************************************************************************+++++++++++++++++******************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********************************************************************************************************************************************************+++++++++++++++++++++++++++++++++*+++++++++++++++++++*+*#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#**+***++********************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++==---*#**#***********+:::::::::::::::-#####*-::+##########**#####=:::::::::::::::::::. :%%%@@@@@@%%%%%%%%%%%%%@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######%%%%%%%%%%#########################**************+++++++++===============================================================================================================================================+++++++++++++***++++************************##************************************################################################################################################################*********##################+:...............................:*##################=-++++---=*#######################################################################################################################################################################*******************+++++=:::::::::::::::::::::::::::::::::::::::.-+++*+==========+++++++++++++++++++***************++**++=:::::::::::..........::::-----===============++====+++*****************************************************************++++=========++++++++++++++++++++++++++++++++++*****************************#####################*****################**++++++++++++++++++++******#########################################################**++++++++++++++++++++++*###############################################***#*################*================================================*****************************************************************############*******************************###################################################################%%%%%%%%%##############################################################################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%########################%%%%%%%%%%%%%%%%################################################################################################################################################################%####%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#########***+++***#####################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%############################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%##############################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####***********************************######################################################################################################################################################
**********************************************************************************************************************************************************************************************************************************************************************************************************++++++++++++++++++*****************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#+***+**+*******************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++==---*##**************::::::::::::::::*#####=::*##########**##*##=::::::::::::::::::: -%%%@@@@@@%%%%%%%%%%%%%@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######%%%%%%%%%%#########################**************+++++++++===============================================================================================================================================+++++++++++++**+++++************************##*************************************##############################################################################################################**********##################*-::.............................:*##################=-++++-:--+*##%####################################################################################################################################################################******************++++++::::::::::::::::::::::::::::::::::::::..:=+++++===========++++++++++++++++++*****************+*++=::::::::::::........::::-----================+====+++++++*********************************************************************+++++======++++++++++++++++++++++++++++******************************###################*****#################*++++++++++++++++++++******##########################################################*+++++++++++++++++++++++*###############################################***##################*+===============================================****************************************************************############********************************##################################################################%%%%%%%%%###############################################################################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%#########################%%%%%%%%%%%%%########################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########**++++****###################%%%%%%%%%@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#############################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#############################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####**********************************#######################################################################################################################################################
*********************************************************************************************************************************************************************************************************************************************************************************************************++++++++++++++++++++****************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#*+**+***+*****************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++===-:+*#**************::::::::::::::::*#####*::*##########**##*##=::::::::::::::::::: =%%%@@@@@@%%%%%%%%%%%%%@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########%%%%%%%%%%%########################***************+++++++++==============================================================================================================================================++++++++++++***++++++***********************##*************************************############################################################################################################************###################=::..............................=##################*-=+++-:--=*#######################################################################################################################################################################******************++++++-::::::::::::::::::::::::::::::::::::::..-+++*+============++++++++++++++++++********************+=--:::::::::::......::::-----======================+++++++++*************************************************************************++++====+++++++++++++++++++++++********************************#################*****#################*++++++++++++++++++++******##########################################################**+++++++++++++++++++++++################################################****#################*+===============================================+***************************************************************############*****************************######################################################################%%%%%##################################################################################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%###########################%%%%%%%%%###########################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########**+++++*****#################%%%%%%%@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#############################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####**********************************#######################################################################################################################################################
*********************************************************************************************************************************************************************************************************************************************************************************************************+++++++++++++++++++++***************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#++*+**********************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++===-:=#***************::::::::::::::::+######-:+##########**##*##=::::::::::::::::::: +%%%@@@@@@%%%%%%%%%%%%%%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########%%%%###%%%%#########################**************+++++++++===============================================================================================================================================+++++++++++**+++++++***********************##**************************************##########################################################################################################*************###################*:...............................-##################*-=+++=:---+*#######################################################################################################################################################################******************+++++=::::::::::::::::::::::::::::::::::::.::::=++*++===========++++++++++++++++++*******************+*+---:::::::::::.....::::-----======================++++++++++++++**************************************************************************+++++++++++++++++++++++++*********************************###############*****#################*++++++++++++++++++++******###########################################################*+++++++++++++++++++++++*################################################**#*#################*+================================================*********+++++************************************************############****************************###############################################################################################################################################################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#############################%%%%%#################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######***++++++****#################%%%%%%@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###############################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#############################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####*********************************########################################################################################################################################################
********************************************************************************************************************************************************************************************************************************************************************************************************+++++++++++++++++++++++**************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******************************************************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#+****+********************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++===-:-#***************::::::::::::::::-######=:*##########**#####=::::::::::::::::::: #%%@@@@@@@%%%%%%%%%%%%%%@%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%################%%%%%########################**************++++++++++===============================================================================================================================================++++++++++*+++++++++**********************#***************************************#######################################################################################################****************###################*=.:.............................:###################==+++=:---=*#######################################################################################################################################################################******************++++++:::::::::::::::::::::::::::::::::::::.:..-+++*+============++++++++++++++++++*********************+----::::::::::...:::::-----=======================++++++++++++++++++***************************************************************************++++++++++++++++++**********************************###############*****################*++++++++++++++++++++******############################################################*+++++++++++++++++++++++#################################################****##################+================================================********++++++++*********************************************############****************************################################################################################################################################################################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%###############################%%###################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########***++=+++****##################%%%%@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%#%%%%%%%%%%%%%%%%%%%%%%%%%%#######################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@############################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######*******************************#########################################################################################################################################################
********************************************************************************************************************************************************************************************************************************************************************************************************+++++++++++++++++++++++**************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*+**+*********************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++==--::****************-::::::::::::::::*#####*:*##########**#####=::::::::::::::::::: .#%%@@@@@@@%%%%%%%%%%%%%%%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###############%%%%%#########################**************++++++++++==============================================================================================================================================++++++++++++++++++++**********************#***************************************###################################################################################################********************#####**#############+:.::..........................::*##################==+++=::--=*#######################################################################################################################################################################*******************+++++=.::::::::::::::::::::::::::::::::::::.:::=++*++===========++==++++++++++++++**********************+-----::::::::::::::::-----========================+++++++++++++++++++++++****************************************************************************++++++++++++**********************************##############****################*++++++++++++++++++++******############################################################*+++++++++++++++++++++++*#################################################*****#################+================================================+******++++++++++********************************************###########****************************#################################################################################################################################################################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#%#####################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#%%########***++==+++****#################%%%@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%#%%%####%%%%%%%%%%%%%%%%%%########################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%###########################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######******************************##########################################################################################################################################################
********************************************************************************************************************************************************************************************************************************************************************************************************++++++++++++++++++++++++************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*+***********************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++==--::+#**************=::::::::::::::::+#####*-*##########**#####=::::::::::::::::::. -%%@@@@@@@@%%%%%%%%%%%%%%%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###%%%%#########%%%%#########################**************++++++++++===============================================================================================================================================++++++++++++++++++++*********************#***************************************##############################################################################################*************************####*******#########*-.::::...::::..................:+##################+-++++::--=+*#######################################################################################################################################################################******************++++++:::::::::::::::::::::::::::::::::::.:.::.:+++*++===========+==+++++++++++++++**********************=-----:::::::::::::::-----========================++++++++++++++++++++====++********************************************************************************++++************************************############****################*++++++++++++++++++++******#############################################################*+++++++++++++++++++++++##################################################***+*#################+================================================+******++++++++++++******************************************###########**************************####################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#%##########################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########**++====++*****################%%%@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%#%########%%%%%%%%#############################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%###########################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######******************************##########################################################################################################################################################
********************************************************************************************************************************************************************************************************************************************************************************************************++++++++++++++++++++++++************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#*************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++==--::=#***#**********+::::::::::::::::=######=*##########**##*##=::::::::::::::::::. =%%@@@@@@@@%%%%%%%%%%%%%%%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##%%%%#########%%%%%########################***************+++++++++================================================================================================================================================+++++++++++++++++++*********************#***************************************###########################################################################################****************************###************#####*=::::::::::::::::::..........:..+##################+-++++-:---+*#######################################################################################################################################################################******************++++++-.:::::::::::::::::::::::::::::::::::::::.-++*++===========+==+++++++++++++++***********************=------:::::::::::::-----=========================+++++++++++++++++++======++**********************************************************************************************************************############***#################++++++++++++++++++++*******#############################################################*+++++++++++++++++++++++#################################################***++*#################+=================================================*****++++++++++++++*****************************************##########**************************#####################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%############################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######**++=====++****################%%@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%#%########%%%###############################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%###########################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######*****************************###########################################################################################################################################################
*********************************************************************************************************************************************************************************************************************************************************************************************************+++++++++++++++++++++++************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******************************************************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#*************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++==--::-#***************::::::::::::::::-######**##########**#####=::::::::::::::::::. *%%@@@@@@@@%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%################%%%##########################***************++++++++++===============================================================================================================================================++++++++++++++++++++**************************************************************######################################################################################********************************%#******************+::.::.:.::::::::::::........:..=##################*-++++-::--=*##################%######%#############################################################################################################################################*******************++++++::::::::::::::::::::::::::::::::::::::::::=++*+==========+====+++++++++++++++**********************+=------::::::::::::----==========================++++++++++++++++++++=========++******************************************************************************************************************############**#################*+++++++++++++++++++*******#############################################################***+++++++++++++++++++++*#################################################**+++*#################+=================================================*****++++++++++++++++*************************************###########**************************######################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%##%##########################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########**++=====++****################%%@@@@@@@@@@@@@@@@@@@@@@@%%#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%##%###########################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%###########################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######****************************############################################################################################################################################################
********************************************************************************************************************************************************************************************************************************************************************************************************++++++++++++++++++++++++************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%***+*********************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++==--::-**#*************-::::::::::::::::*######*##########**#####=::::::::::::::::::. *%%@@@@@@@@%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###############%%%%##########################****************++++++++++===============================================================================================================================================+++++++++++++++++++**************************************************************###################################################################################***********************************##******************+-::::::::::::::::::::::::..:.:.-##################*-++++-::--=*#######################################################################################################################################################################*******************++++++-:::::::::::::::::::::::::::::::::::::::::-+++++===============++++++++++++++***********************+-------:::::::::::-----==========================++++++++++++++++++++===========++****************************************************************************************************************###########*#################*++++++++++++++++++++******##############################################################*+++++++++++++++++++++++##################################################*++++*#################*=================================================+****+++++++++++++++++***********************************############**************************######################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%#############################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########**++=====++****###############%%@@@@@@@@@@@@@@@@@@@@@@@@%%%#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#%%##########################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%###########################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######**************************##############################################################################################################################################################
*******************************************************************************************************************************************************************************************************************************************************************************************************+++++++++++++++++++++++++************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++==--:::****#***********=::::::::::::::::+######*##########**#####+::::::::::::::::::. #%%%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###############%%%%###########################***************++++++++++================================================================================================================================================++++++++++++++++++**************************************************************#################################################################################**************************************#*******************=::.::::::::::::::::::::::::.:.:##################*==+++-::--=+#################%######################################################################################################################################################*******************+++++=::::::::::::::::::::::::::::::::::::::::::=+++++===============++++++++++++++***********************+-------::::::::::-----==========================++++++++++++++++++++==============++*************************************************************************************************************############################*+++++++++++++++++++*******###############################################################*++++++++++++++++++++++*#################################################**++++*#################*=================================================+****+++++++++++++++++++++********************************##########****************************#####################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%#############################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########**++=====+++***###############%%@@@@@@@@@@@@@@@@@@@@@@@@@%%#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#%%##########%%%%%%%%########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%##########################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######*************************###############################################################################################################################################################
*******************************************************************************************************************************************************************************************************************************************************************************************************++++++++++++++++++++++++*************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****************************************************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#*************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++==--:::+#**#************::::::::::::::::-#################**#####*::::::::::::::::::. .%%%%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#############%%%%%%###########################***************+++++++++================================================================================================================================================++++++++++++++++++***************************************************************#############################################################################*****************************************#*******************+:::::::::::::::::::::::::::.:::*##################==+++=::---+*################%######################################################################################################################################################*******************++++++:::::::::::::::::::::::::::::::::::::::::.-+++++===============++++++++++++++************************=------::::::::::-----===========================++++++++++++++++++++=================+++*******************************************************************************************************############################*+++++++++++++++++++*******###############################################################*++*++++++++++++++++++++##################################################*+++++*#################*==================================================****+++++++++++++++++++++++******************************##########****************************#####################################################################################################################################################################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%##%################################################################################################################################################################################################################%###########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########**++======++***###############%%@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%##%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#%%##########%%%%%%%%%######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#############%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%##########################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######**********************#################################################################################################################################################################
******************************************************************************************************************************************************************************************************************************************************************************************************++++++++++++++++++++++++**************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*************************************************************##*************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#+**************************************************************************************************++++++++++++++++++++++++++++++++++++++++++===--::-#***************-::::::::::::::::*################**######::::::::::::::::::. -%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##############%%%%%%%##########################***************++++++++++================================================================================================================================================++++++++++++++++++***************************************************************##########################################################################***************************************************************+=::::::::::::::::::::::::::::::*##################==+++=::---=*#######################################################################################################################################################################********************+++++=:::::::::::::::::::::::::::::::::::::::::.=+++++==============+++++++++++++++************************=------::::::::::----===========================+++++++++++++++++++++====================+++**************************************************************************************************############################*+++++++++++++++++++*******################################################################*+++*++++++++++++++++++*#################################################*++++++*##################+=================================================****++++++++++++++++++++++++++**************************##########*******************************###################################################################################################################################################################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#%%############################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########**++==-===++****##############%@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%#######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#%%##%%%%%%%%%%%%%%%%%%%##%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%##########################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######********************###################################################################################################################################################################
******************************************************************************************************************************************************************************************************************************************************************************************************+++++++++++++++++++++++***************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++************************************************************####***********************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%***************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++==--:::*#**************=::::::::::::::::+################**######-:::::::::::::::::. +%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#%%%%%%##############%%%%%%%%###########################**************++++++++++=================================================================================================================================================++++++++++++++++++**************************************************************#######################################################################*******************************************************************+::::::::::::::::::::::::::::::+##################+=+++=:::--=*########################################################################################################################################################################********************+++++::::::::::::::::::::::::::::::::.::::::::.:+++++===============++++++++++++++************************+=------:::::::::----============================++++++++++++++++++++=========================+++******************************************************************************************##############################*+++++++++++++++++++*******#################################################################++++*++++++++++++++++++*################################################*+++++++*##################+=================================================+***++++++++++++++++++++++++++++************************#**######********************************###################################################################################################################################################################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#%#%###########################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########**++==--==++****#############%%@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#%%%#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%##########################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######*****************#####################################################################################################################################################################
******************************************************************************************************************************************************************************************************************************************************************************************************+++++++++++++++++++++++***************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++************************************************************####**********************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%***************************************************************************************************++++++++++++++++++++++++++++++++++++++++++==--:::+#***************::::::::::::::::-################**######+:::::::::::::::::. *%%%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##%%%%###############%%%%%%%%%###########################***************+++++++++=================================================================================================================================================++++++++++++++++++***************************************************************####################################################################*********************************************************************+-:::::::::::::::::::::::::::::=##################+=+++=::---=+########################################################################################################################################################################********************+++++-:::::::::::::::::::::::::::::::::::::::.:.-+*+++===============+++++++++++++*************************+=-----:::::::::-----============================++++++++++++++++++++=============================+++++******************************************************************************###################################+++++++++++++++++++*******#################################################################*+++++++++++++++++++++++################################################**+++++++*##################+=================================================+****++++++++++++++++++++++++++++++*************************####**********************************##################################################################################################################################################################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%##%#%############################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########**+===--===++***#############%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%##%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#%%%#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#########################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#########***********#########################################################################################################################################################################
******************************************************************************************************************************************************************************************************************************************************************************************************+++++++++++++++++++++++***************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++************************************************************####*********************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#**************************************************************************************************++++++++++++++++++++++++++++++++++++++++++==--:::=#***************:::::::::::::::::*###############*########:::::::::::::::::. #%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#%%#############%%%%%%%%%%%###########################***************+++++++++==================================================================================================================================================+++++++++++++++++*************************++**************************************################################################################************************************************************************=::::::::::::::::::::::::::::.=##################+=+++=::---=+#################%######%################################################################################################################################################*******************++++++::::.:::::::::::::::::::::::::::::::::.:..:+++++===============++++++++++++++*************************==-----::::::::-----============================++++++++++++++++++++====================================++++************************************+********************************#####################################+++++++++++++++++++********#################################################################*++++++++++++++++++++++*################################################*++++++++*##################+==================================================****+++++++++++++++++++++++++++++++*************************##***********************************##################################################################################################################################################################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#%##%############################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#########**+==---===++***#############%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#%%%#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#########################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#############*****###########################################################################################################################################################################
******************************************************************************************************************************************************************************************************************************************************************************************************++++++++++++++++++++++****************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********************************************************########*************************************************************++++++++*********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#*+*+**+********************************************************************************************++++++++++++++++++++++++++++++++++++++++==--:::-****************-::::::::::::::::+###############*########-::::::::::::::::. %%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#########%%%%%%%%%%%%#############################***************++++++++++==================================================================================================================================================+++++++*+++++++++**********************=:..-*************************************#############################################################***************************************************************************+:::::::::::::::::::::::::::::=##################*=+++=::---=+###################%#####%################################################################################################################################################*******************+++++-:::::::::::::::::::::::::::::::::::::::...-+*+++===============+++++=+++++++**************************==-----::::::::----=====+=======================++++++++++++++++++++=========================================+++++++*****************+**+++*******************************##########################################*++++++++++++++++++********##################################################################+++++++++++++++++++++++################################################**++++++++*##################+==================================================+***++++++++++++++++++++++++++++++++++************************************************************##################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%###%#########################################################################################################################################################################################################################%###%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########**+==----==++****############%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#%#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#########################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#############################################################################################################################################################################################
******************************************************************************************************************************************************************************************************************************************************************************************************++++++++++++++++++++++****************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********************************************************########************************************************************+++++++++++**+++*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%***************************************************************************************************++++++++++++++++++++++++++++++++++++++++==---:::*#**************+::::::::::::::::-###############*########+:::::::::::::::: :%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########%%%%%%%%%%%%%##############################**************++++++++++==================================================================================================================================================++++++++++++++++++*******************=:.....:=*****************************#**#***#########################################################******************************************************************************+-::::::::::::::::::::::::::::=##################*=+++=::---=+*##################%%######################################################################################################################################################******************+++++=:::::::::::::::::::::::::::::::::::::::.:.:+++++===============++++++=+++++++*************************+=----:::::::::-----====++======================++++++++++++++++++++===========================================+==+++++++++++++++++++++******************************##############################################*++++++++++++++++++********###################################################################++++++++++++++++++++++*###############################################***++++++++*##################*==================================================+***+++++++++++++++++++++++++++++++++++***********************************************************##################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%###%#############################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########**+==----==++****###########%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#########################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##############################################################################################################################################################################################
******************************************************************************************************************************************************************************************************************************************************************************************************+++++++++++++++++++++*****************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********************************************************########************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%**************************************************************************************************+++++++++++++++++++++++++++++++++++++++++==--:::+#***************:::::::::::::::::*##############*########*:::::::::::::::. =%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######%%%%%%%%%%%%%%###############################**************++++++++++==================================================================================================================================================+++++++++**++++++++****************=:.........:+*******************************#**#######################################################*********************************************************************************=::::::::::::::::::::::::::::+###################=++++::---=+*###################%%%%###%%###%###########################################################################################################################################*****************++++++::.::::::::::::::::::::::::::::::::::::.:..-+++++===============+++++=++++++++*************************+=----::::::::-----====++=======================++++++++++++++++++++===========================================++++++++++++++++++++*****************************#################################################*++++++++++++++++++********###################################################################*++++++++++++++++++++++*##############################################***+++++++++*##################*==================================================+***+++++++++++++++++++++++++++++++++++++*********************************************************##################################################################################################################################################################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%###%#############################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########**+==----==++****###########%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#########################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##############################################################################################################################################################################################
******************************************************************************************************************************************************************************************************************************************************************************************************+++++++++++++++++++++*****************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********************************************************########************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*+***********************************************************************************************+++++++++++++++++++++++++++++++++++++++++==--:::-#***************-::::::::::::::::+########################-:::::::::::::.. *%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###%%######%%%%%%%%%%%%%%################################***************++++++++++==================================================================================================================================================++++++++++++++++++***************-.............=****************************#*#***###################################################*****+******************************************************************************+-:::::::::::::::::::::::::::*###################+++++-:---==*#####################%%###%%################################################################################################################################################****************++++++=:.:::::::::::::::::::::::::::::::::::::.:..+*+++===============+++++==+++++++**************************=----::::::::-----====++=======================++++++++++++++++++++========================================+++++++++++++++++++****************************#####################################################*++++++++++++++++++********####################################################################+++++++++++++++++++++++##############################################****+++++++++*##################*===================================================+**+++++++++++++++++++++++++++++++++++++*********************************************************##################################################################################################################################################################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%###%#############################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######***+==----==++****###########%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#########################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##############################################################################################################################################################################################
*******************************************************************************************************************************************************************************************************************************************************************************************************++++++++++++++++++*******************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********************************************************#########************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#************************************************************************************************+++++++++++++++++++++++++++++++++++++++++===-::::*#**************+::::::::::::::::-########################=:::::::::::::.. #%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#################################**************+++++++++++==================================================================================================================================================++++++++++**++++++************+-:..............-+***************************#*****###############################################*****+*********************************************************************************+=:::::::::::::::::::::::::::*###################+++++-:---==*#######################%####%%%##############################################################################################################################################***************+++++++::::::::::::::::::::::::::::::::::::::..:..-+++++==============++++++=++++++++**************************=----::::::::----=====+========================++++++++++++++++++++====================================++++++++++++++++++******************************######################################################*++++++++++++++++++*********####################################################################++++++++++++++++++++++*##############################################*****+++++++++##################*===================================================+*++++++++++++++++++++++++++++++++++++++*********************************************************##################################################################################################################################################################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%###%##############################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######***+==----==++****##########%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%##########################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##############################################################################################################################################################################################
********************************************************************************************************************************************************************************************************************************************************************************************************++++++++++++++++********************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********************************************************##########************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#***********************************************************************************************+++++++++++++++++++++++++++++++++++++++++===--:::+#***************:::::::::::::::::*#######################*::::::::::::... .#%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#################################***************+++++++++++=================================================================================================================================================+++++++++++**++++++*******++=--:................:=********************#*+#********############################################**********+********************************************************************************+:::::::::::::::::::::::::::*###################+++++-:---==*#######################%%%##%%################################################################################################################################################************#*+++++++=::::::::::::::::::::::::::::::::::::.:...:.=*+++==============++++++==+++++++**************************+=----:::::::----==============================++++++++++++++++++++================================+++++++++++++++++++*****************************#########################################################*++++++++++++++++++******+**####################################################################*++++++++++++++++++++++##############################################******+++++++++##################*+==================================================+*++++++++++++++++++++++++++++++++++++++*********************************************************##################################################################################################################################################################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%###%##############################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######***+==----==++****##########%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#########################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##############################################################################################################################################################################################
********************************************************************************************************************************************************************************************************************************************************************************************************++++++++++++++**********************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********************************************************##########************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#**********************************************************************************************++++++++++++++++++++++++++++++++++++++++++==--:::=#***************-::::::::::::::::=########################:::::::::::.... -%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##################################***************+++++++++++=====================================================================================================================================+++========++++++++++++**+++++*****+=----:...................-********************#*+**#******#########################################*********************************************************************************************+-:::::::::::::::::::::::::-####################+++++-:---==*########################%%%%##################################################################################################################################################************#*++++++++:.:.::::::::::::::::::::::::::::::::.:..:..:+*+++==============+++++===+++++++**************************+=----:::::----================================++++++++++++++++++++==========================++++++++++++++++++++******************************############################################################++++++++++++++++++*********#####################################################################++++++++++++++++++++++*#############################################******++++++++++*#################*+===================================================*++++++++++++++++++++++++++++++++++++++*********************************************************###################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%###%##############################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########**+==----==++****##########%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#########################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##############################################################################################################################################################################################
*********************************************************************************************************************************************************************************************************************************************************************************************************+++++++++++************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********************************************************##########*************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#*********************************************************************************************++++++++++++++++++++++++++++++++++++++++++==--:::-****************=:::::::::::::::::########################=:::::::::.. .. =%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##################################****************++++++++++===================================================================================================================================+++++======+==++++++++++++**+++++***=:.:---.....................-+*******************#*=*#*******#######################################***********************************************************************************************=:::::::::::::::::::::::::=####################+++++-:---==*########################%%%%###%###############################################################################################################################################***********#*++++++++-::::::::::::::::::::::::::::::::::::..:....=++++==============+++++===+++++++***************************+----:::::----================================++++++++++++++++++++=======================++++++++++++++++++++****************************###############################################################*++++++++++++++++++*******+*######################################################################++++++++++++++++++++++*############################################*******++++++++++*#################*+===================================================*+++++++++++++++++++++++++++++++++++++++********************************************************###################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%###%###############################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########**+==----==++****##########%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#########################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##############################################################################################################################################################################################
*********************************************************************************************************************************************************************************************************************************************************************************************************+++++++++**************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******************************************************###########**************************************************************+++++++++***+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*+*************************************************************************************+*****+++++++++++++++++++++++++++++++++++++++++==--::::*#**#************:::::::::::::::::+###########*###########*:::::::::. ... *%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##################################*****************++++++++++++===============================================================================================================================+++++++====+++++++++++++++++***+++**+..:---:......................:+*******************#*-+******#*##############***################*####**********+************************************************************************************+-::::::::::::::::::::::::+####################*++++-:---==*#########################%%%%##%%%###%##########################################################################################################################################*********##++++++++++:::::::::::::::::::::::::::::::::::::::....:+++++=============++++++==++++++++***************************=----:::-----=================================++++++++++++++++++++==================+++++++++++++++++++++*****************************#################################################################*++++++++++++++++++*****+*+######################################################################+++++++++++++++++++++++############################################********++++++++++*##################+===================================================++++++++++++++++++++++++++++++++++++++++******************************************************#####################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%###%###############################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%#########**+==----==++****##########%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%##########################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%###############################################################################################################################################################################################
**********************************************************************************************************************************************************************************************************************************************************************************************************+++++++***************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******************************************************###########***************************************************************+++++++*****++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%**************************************************************************************+*****+++++++++++++++++++++++++++++++++++++++++==--::::=#****#**********-::::::::::::::::-########*+==*###########::::::::...... #%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###################################******************++++++++++++============================================================================================================================+++++++++++++++++++++++++++++++*******=:---:........................:=*********************--*#**#*##############************###*******####**********************************************************************************************+=::::::::::::::::::::::::+####################*++++-:---==*##########################%%#%###################################################################################################################################################**********++++++++++-::::::::::::::::::::::::::::::::::::::.....=++++=============++++++===+++++++****************************=-----------=================================++++++++++++++++++++=============++++++++++++++++++++++*****************************####################################################################*+++++++++++++++++*******++#######################################################################++++++++++++++++++++++*############################################*******+++++++++++*##################+===================================================++++++++++++++++++++++++++++++++++++++**+++****************************************************####################################################################*****###########################################################################################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%###%###############################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%#########**+==----==++****#########%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%##########################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%###############################################################################################################################################################################################
***********************************************************************************************************************************************************************************************************************************************************************************************************+++++***************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******************************************************############****************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*+*****************************************************************************************+++++++++++++++++++++++++++++++++++++++++==--::::-**#**#**********+:::::::::::::::::*#######+:::**##########=::::::.. ..:. .%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####################################********************++++++++++==========================================================================================================================+++++++++++++++++++++++++++++++++*****+*+--:..........................:=*******************#*-:****#**###########*********************+**###***********************************************************************************************+::::::::::::::::::::::::*####################*++++-:---==*##############################%###%###############################################################################################################################################*********++++++++++=:::::::::::::::::::::::::::::::::::::::....:+++++============+++++++===+++++++***************************+=---------===================================++++++++++++++++++++======+++++++++++++++++++++++*******************************######################################################################*++++++++++++++++++*****+++*######################################################################*++++++++++++++++++++++############################################********+++++++++=+*##################*===================================================+++++++++++++++++++++++++++++++++++**+********++++***********************************************###############################################################*********##########################################################################################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%#%###############################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%#########**+==----==++****#########%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%###########################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%################################################################################################################################################################################################
*******************************************************************************************************************************************************************************************************************************************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******************************************************############*****************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#*****************************************************************************************+++++++++++++++++++++++++++++++++++++++++==--:::::**##*************-.:::::::::::::::=#######*:::=###########*.:::::. ..::. -%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###################################*********************+++++++++++++======================================================================================================================+++++++++++++++++++++++++++++++++++******-:.............................=*********************-:+***#############**********++++++++*******###**********************************************************************************************+-:::::::::::::::::::::::*####################*++++-::--==*##################################%################################################################################################################################################********+++++++++++:::::::::::::::::::::::::::::::::::::::.....=++++============+++++++===+++++++****************************+=--------====================================++++++++++++++++++++++++++++++++++++++++++++*********************************#######################################################################*+++++++++++++++++******+++*#######################################################################++++++++++++++++++++++*###########################################********+++++++++==+*##################*+===================================================+++++++++++++++++++++++++++++++++++********++++++++************************************************###########################################################***********#########################################################################################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%#%###############################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%#########**+==----==++****#########%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%###########################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%################################################################################################################################################################################################
*******************************************************************************************************************************************************************************************************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******************************************************############******************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#*****************************************************************************************++++++++++++++++++++++++++++++++++++++++==--:::::+#*#**#*********#+:::::::::::::::::*#######=::-**##########:::::....:::. +%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####################################*********************+++++++++++++++==================================================================================================================++++++++++++++++++++++++++++++++++++++****+...............................-*********************-.=*****##########****************+++++****####**********************************************************************************************=:::::::::::::::::::::::*#####################++++-::--==*#############################*#%%%%#################################################################################################################################################********++++++++++=::::::::::::::::::::::::::::::::::::::.....:+++++============++++++====+++++++****************************=-===-=======================================++++++++++++++++++++++++++++++++++++++++************************************#######################################################################*+++++++++++++++++******+++*#######################################################################*++++++++++++++++++++++###########################################*********+++++++++===*##################*+===================================================++++++++++++++++++++++++++++==++++++****++++++++++++*************************************************########################################################************#########################################################################################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%##%###############################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%#########**+==----==++****#########%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%############################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%#################################################################################################################################################################################################
*******************************************************************************************************************************************************************************************************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******************************************************############******************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#****************************************************************************************++++++++++++++++++++++++++++++++++++++++==--:::::-#**#*#***********:::::::::::::::::=#######*:::+###########=.::.....:::. #%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###################################***********************+++++++++++++++++=============================================================================================================+++++++++++++++++++++++++++++++++++++++++++*-...............................-*********************-.-*****##########********+++++++++++++*+**###**********************************************************************************************+:::::::::::::::::::::::######################++++-::--==*#################################%####%##############################################################################################################################################********++++++++++:::::::::::::::::::::::::::::::::::::::.....=*+++============+++++++===+++++++*****************************============================================+++++++++++++++++++++++++++++++++++*************************************##########################################################################*+++++++++++++++++*******++*########################################################################*+++++++++++++++++++++*##########################################*********+++++++++====*###################+===================================================++++++++++++++++++++++++++++++++++++++++++++++++++++*******************************************************##**##############################################************##########################################################################################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%##################################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%#########**+==----==++****#########%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%#############################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%##################################################################################################################################################################################################
*******************************************************************************************************************************************************************************************************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******************************************************############*****************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#****************************************************************************************+++++++++++++++++++++++++++++++++++++++==--::::::*#*#************#=::::::-::::::::::*#######=::-*##########*::.....::::. .#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##################################***********************+++++++++++++++++============================================================================================================+++++++++++++++++++++++++++++++++++++++++++++................................-*************#*****#*-.:+****#########***********+**************###*********************************************************************************************+-:::::::::::::::::::::-######################++++-::--==*#####################################################################################################################################################################################*********+++++++++-:::::::::::::::::::::::::::::::::::::::....:+++++===========+++++++===+=++++++*****************************===========================================++++++++++++++++++++++++++++++++***************************************##########################################################################*+++++++++++++++++******++++#########################################################################++++++++++++++++++++++*##########################################*********+++++++++====*######*############+===================================================++++++++++++++++++++++++++++++++=++++++++++++++++++******************************************************************#########################################***********##########################################################################################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%########################################################################################%%%%#####################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%#########**+==----==++****#########%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%##############################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%###################################################################################################################################################################################################
*******************************************************************************************************************************************************************************************************************************************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********************************************************############*****************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#****************************************************************************************++++++++++++++++++++++++++++++++++++++==--::::::=*##**#***********::::=****=:::::::+#######*:::*###########:.....:::::. -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###################################**#**##*****************++++++++++++++++===========================================================================================================+++++++++++++++++++++++++++++++++++++++++++++=................................-*********************-.:=****#########***********+++++++*++****####*********************************************************************************************=:::::::::::::::::::::-######################*+++:::--==*##################################%%####%#############################################################################################################################################*********++++++++=:::::::::::::::::::::::::::::::::::::::.:...=+++++==========+++++++=====++++++*****************************+=====================================+=+++++++++++++++++++++++++**+++********************************************#########################################################################*+++++++++++++++++******++++*########################################################################*++++++++++++++++++++++##########################################*********+++++++++=====**##################+====================================================+*+++++++++++++++++++++++++++++++==+++++++++=++++********************************************************************#########################################**********########################################################################################################**#%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%#####################################################################################%%%%%%#####################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%#########**+==----==++****#########%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%##############################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%####################################################################################################################################################################################################
*******************************************************************************************************************************************************************************************************************************************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++***********++++++++++++++++********************************************************############******************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#*****************************************************************************************++++++++++++++++++++++++++++++++++++==--::::::-*##***#*********#=::+*****#+::::::-########=::-##########%=....::::::. +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#############################################**************+++++++++++++++++====================================================================================================+++++++++++++++++++++++++++++++++++++++++++++++++: ..............................:-*********************:..=***#########************+++++++*++****####********************************************************************************************+:::::::::::::::::::::=######################*+++:::--=+*#####################################%%################################################################################################################################################********+++++++++::::::::::::::::::::::::::::::::::::::......:+++++===========+++++++====+++++++*****************************+=========+======================+++++++++++**+++++++++++++++++++**********************************************##########################################################################*+++++++++++++++++******++++*#########################################################################++++++++++++++++++++++*#########################################**********+++++++++=====**###***############+====================================================+++++++++++++++++++++++++++++++++++=++++++=+=+++****************************************************************************##################################**********###################################################################################################**+++++*#%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%##%###############################################################################%%%%%%%%%%%#####################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%########**++==----==++****#########%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%################################################################################################################################################################################################################################%%%%%%%%%%%%%%%######################################################################################################################################################################################################
*******************************************************************************************************************************************************************************************************************************************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++************+++++++++++++++********************************************************############******************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*+***************************************************************************************++++++++++++++++++++++++++++++++++===--:::::::*#**##***********+:+*****#**=::::::+#######*:::###########*...:::::::. *%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##################################################***********++++++++++++++++++=================================================================================================++++++++++++++++++++++++++++++++++++++++++++++++++. ..............................:=****************#****:..-***#########*+*+********++++++*++*+**####********************************************************************************************+-::::::::::::::::::::=######################*++=:::--=+*####################################%%%%################################################################################################################################################********++++++++=:::::.:::::::::::::::::::::::::::::::...:...=+++++==========+++++++====+++++++******************************+=======+++===============+++++++++++++++++*#*++++++++++++++++++**********************************************#########################################################################*+++++++++++++++++******++++*##########################################################################++++++++++++++++++++++#########################################***********++++++++======*###***#############+====================================================+*++++++++++++++++++++++++++++++++++++++==+++++*******************************************************************************################################**********##############################################################################################**++++++=++++#%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%################################################################################%%%%%%%%%%%%%#####################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%########**++==----==++*****########%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%##################################################################################################################################################################################################################################%%%%%%%%%%%########################################################################################################################################################################################################
*#*****************************************************************************************************************************************************************************************************************************************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++****************++++++++++++*********************************************************###########******************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#+****************************************************************************************++++++++++++++++++++++++++++++++===--:::::::=#*##*************=*****#****-::::.-########=.:*###########...:::::::. #%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#################################################******#******++++++++++++++++================================================================================================+++++++++++++++++++++++++++++++++++++++++++++++++++- ................................+********************+:..:**#*########*+*************++++++++**####********************************************************************************************=::::::::::::::::::::+######################*++=::---=+*#####################################%%%%################################################################################################################################################********++++++++::.::.:::::::::::::::::::::::::::::::.......-++++++=========+++++++=====+++++++******************************+=====++*+========+++++++++++++++++++++++**##++++++++++++++++++*********************************************#########################################################################*+++++++++++++++++******++++*##########################################################################*+++++++++++++++++++++*########################################***********+++++++++======*##****#############*====================================================+*+++++++++++++++++++++++++++++++++++++++=++++**********************************************************************************###############################*********##########################################################################################**++++=+++===++++#%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%############################################################################%%%%%%%%%%%%%%%%#####################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%#########**++==----==++*****########%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%#########################################################################################################################################################################################################################################%############################################################################################################################################################################################################
###****************************************************************************************************************************************************************************************************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++**********************++++*+**********************************************************###########*****************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#*****************************************************************************************+++++++++++++++++++++++++++++++===--::::::::*##**#***********************::::::+#######*::*###########..::::::::. .%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##############################################******###*******+++++++++++++++++++===========================================================================================+++++++++++++++++++++++++++++++++++++++++++++++++++++. ................................+*******************#+:..:+**########*+*************++++++++***####*******************************************************************************************+-:::::::::::::::::::*######################*++=::---=+*######################################%%%%##%#############################################################################################################################################********+++++++-.:.::::::::::::::::::::::::::::::::::.:.....++++++==========+++++++=====+++++++******************************++++++**+====++++++++++++++++++++++++++****#*++++++++++++++++++*******************************************#########################################################################*+++++++++++++++++*******++++###########################################################################++++++++++++++++++++++*########################################***********+++++++++======*******#############*+====================================================*++++++++++++++++++++++++++++++++++++++++++++************************************************************************************##***##*******################*******#######################################################################################*++++=+++++++++++++=+*%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%###########################################################################%%%%%%%%%%%%%%%%%######################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%#########**++==----==++*****########%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%######################################################################################################################################################################################################################################################################################################################################################################################################################################################
######*************************************************************************************************************************************************************************************************************************************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++***************************************************************************************###########**********************************##*****************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#****************************************************************************************+++++++++++++++++++++++++++++++===--::::::::+#**#***********************#+:::::-########=:*###########-.::::::::. :%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#############################################****#####*******+++++++++++++++++++++=========================================================================================+++++++++++++++++++++++++++++++++++++++++++++++++++++= .... . .........................:********************#=...:=**########**+************++++++++***###*******************************************************************************************+=:::::::::::::::::::*######################*++=::---=+*######################################%%%%%%%%############################################################################################################################################*********+++++++:::::::::::::::::::::::::::::::::::::..:....-++++++=========+++++++=====+++++++*******************************+++++**+++++++++++++++++++++++++++++++****#*++++++++++++++++++******************************************#########################################################################*+++++++++++++++++*******++++###########################################################################*+++++++++++++++++++++*########################################***********++++++++++======+*****##############*+====================================================+*++++++++++++++++++++++++++++++++++++++++++*****************************************************************************************************###############******###################################################################################*+++====+++++++++++++++=+*%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%########################################################################%%%%%%%%%##################################******#########################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%########**++==----==++*****########%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@%%%######################################################################################################################################################################################################################################################################################################################################################################################################################################################
######*************************************************************************************************************************************************************************************************************************************************************************************************************************************+++++++++++++++++++++********+++++++++++****************************************************************************************###########********************************####**************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#****************************************************************************************++++++++++++++++++++++++++++++===--::::::::-##*#**********************#*#=:::::+#######*-*###########+:::::::::. =%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###############################################*######********+++++++++++++++++++++++=====================================================================================+++++++++++++++++++++++++++++++++++++++++++++++++++++++: ..:-==+++++++++++==-::.........:*********************=...:=**########**+***********+++++++++**####*******************************************************************************************+:::::::::::::::::::*######################*++=:----=+########################################%%%%%%%%############################################################################################################################################********+++++++-.::::::::::::::::::::::::::::::::::::......:++++++=========++++++++=====+++++++*******************************++++**+++++++++++++++++++++++++++++++******+++++++++++++++++++****************************************#########################################################################*++++++*++++++++++******+++++*###########################################################################*+++++++++++++++++++++*#######################################***********+++++++++++======+*****###############+====================================================+*+++++++++++++++++++++++++++++++++++++++++*******************************************************************************************************##############***###################################################################################*+==+==++++++=+++++++++++++=+#%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%########################################################################%%%######################################***********#######################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%########**++==----==++*****########%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%######################################################################################################################################################################################################################################################################################################################################################################################################################################################
######*************************************************************************************************************************************************************************************************************************************************************************************************************************************++++++++++++++++++***********++++++++*******************************************************************************************##########********************************######************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%************************************************************************************************+++++++++++++++++++++===--:::::::::*#*#**************************-::::-########+*############-::::::::. +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####################################################*********+++++++++++++++++++++++++==================================================================================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++-=+++*++++++++++++*****++=::..:.:.-*********************-....=+*########**************+++++++++**####******************************************************************************************+-::::::::::::::::::*######################*++=:---==+########################################%%%%%%%%%############################################################################################################################################********++++++=::::::::::::::::::::::::::::::::::::::.:....=++++++========++++++++======++++++********************************++***+++++++++++++++++++++++++++**********+++++++++++++++++++****************************************########################################################################*++++++*++++++++++*******++++*###########################################################################*++++++++++++++++++++++#######################################************+++++++++++=====++****################+====================================================+*++++++++++++++++++++++++++++++++++++++++*********************************************************************************************************###############*###############################################################################*+++=++==++====++++++++++++++=+=+#%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#######################################################%%%%%%%##################################################**************#####################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%#########**++==----==++*****########%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%######################################################################################################################################################################################################################################################################################################################################################################################################################################################
######*************************************************************************************************************************************************************************************************************************************************************************************************************************************++++++++++++++++****************************************************************************************************************##########********************************#####*************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%***************************************************************************************************+++++++++++++++++===--:::::::::+###***********************#***:::::+########*############=::::::::. *%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######################################################*********+++++++++++++++++++++++++++++============================================================================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***+-:::-::=*********************-....-+**#######**+************++++++++*#####******************************************************************************************=::::::::::::::::::#######################*++=:---==+#########################################%%%%%%%%#############################################################################################################################################*******+++++++:::::::::::::::::::::::::::::::::::::.:.....:+++++++=======++++++++======+++++++************************************+++++++++++++++++++++++++************+++++++++++++++++++****************************************#######################################################################*+++++**++++++++++*******++++*############################################################################*+++++++++++++++++++++*######################################************++++++++++++=====+*****################+====================================================+*+++++++++++++++++++++++++++++++++++++++**********************************************************************************************************#######*####################################################################################*++=+===+==+=++++++==++++++=+=++=+=+#%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#################################################%%%%%%%%%%%%%%%%%%############################################****************####################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%#########**++==----==++*****########%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%#######################################################################################################################################################################################################################################################################################################################################################################################################################################################
######*************************************************************************************************************************************************************************************************************************************************************************************************************************************+++++++++++++++*****************************************************************************************************************########*********************************######*************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#***************************************************************************************************+++++++++++++++===--:::::::::-*##**************************#+::::-#########*#**########*::::::::. #%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######################################################********+++++++++++++++++++++++++++++++==+=======================================================================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==+************************+:....-+*########*+********+***+++++++***#####*****************************************************************************************+::::::::::::::::::#######################*++-:---==*#########################################%%%%%%%%%%###########################################################################################################################################********++++++=:::::::::::::::::::::::::::::::::::..::.....=++++++========++++++++======++++++*************************************+++++++++++++++++++*****************++++++++++++++++++++*************************************#######################################################################***+++***++++++++++******+++++*#############################################################################++++++++++++++++++++++#######################################***********++++++++++++++===++****#################+=====================================================*+++++++++++++++++++++++++++++++++++++***************************************************************************************************************##***#################################################################################*++=====+++++++++++++++++++++++++++++++*#%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%##############################################%%%%%%%%%%%%%%%%%%%%%###########################################******************###################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%########***+==----==++******#######%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%#######################################################################################################################################################################################################################################################################################################################################################################################################################################################
######*************************************************************************************************************************************************************************************************************************************************************************************************************************************+++++++++++++++*****************************************************************************************************************########*********************************######*************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#**************************************************************************************************+++++++++++++++===--::::::::::+###************************#*#-::::+##########*-+########::::::::..%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######################################################*******++++++++++++++++++++++++++++++++++++======================================================================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=+***********************+:....:+*########*++****+******++++++++**####*****************************************************************************************+-:::::::::::::::::#######################*++-----=+*##########################################%%%%%%%%%############################################################################################################################################********++++++::::::::::::::::::::::::::::::::::::.::.....:+++++++=======++++++++======+++++++************************************++++++++++++++++*********************++++++++++++++++++++***********************************#####################################################################***********++++++++++*******++++*#############################################################################*+++++++++++++++++++++*#####################################************++++++++++++++===++****##################+=====================================================+*++++++++++++++++++++++++++++++++*++****************************************************************************************************************##***##############################################################################*+++====++=+++=+++++++++++++++++++++++++++*#%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#############################################%%%%%%%%%%%%%%%%%%%%%%###########################################******************###################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%#########***+==---===++******#######%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#############%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%#######################################################################################################################################################################################################################################################################################################################################################################################################################################################
######*************************************************************************************************************************************************************************************************************************************************************************************************************************************+++++++++++++*******************************************************************************************************************#######*********************************#######*************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#**************************************************************************************************++++++++++++++===--::::::::::=#*##**************************#-:::-##########*..=*#####*::::::::.-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######################################################******++++++++++++++++++++++++++++++++++++++===================================================================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++========+++++++++++++=-=+*********************=.....:+*########*++************+++++++*#####*****************************************************************************************=:::::::::::::::::#######################*++-----=+*###########################################%%%%%%%%%############################################################################################################################################*******++++++-:::::::::::::::::::::::::::::::::::.::......=++++++=======++++++++=======++++++**************************************++++++++++++************************+++++++++++++++++++**********************************#####################################################################************+++++++++******++++++##############################################################################*+++++++++++++++++++++*#####################################***********+++++++++++++++==++*****##################*+====================================================+*++++++++++++++++++++++++++++++++*++*********************************************************************************************************************############################################################################*++==========+++==+++++++++++++++++++++++++++#%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%########################################%%%%%%%%%%%%%%%%%%%%%%%%%%%##########################################********************##################################################################################################%%%%%%%%%%%%%%%%%%%%%%%###########***+==---===++*******######%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##########################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%############################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%########################################################################################################################################################################################################################################################################################################################################################################################################################################################
######*************************************************************************************************************************************************************************************************************************************************************************************************************************************+++++++++++++*******************************************************************************************************************#######********************************########*************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#**************************************************************************************************++++++++++++++==--:::::::::::**###*************************#*::::+##########-..:+###*-::::::::.+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#########################################%%%%%########********+*++++++++++++++++++++++++++++++++++++==================================================================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==============++++++++++++=-=+*******************+-.....:+*########*++************+++++++*#####****************************************************************************************+:::::::::::::::::#######################*++----==+############################################%%%%%%%%%#############################################################################################################################################*******+++++=:.::::::::::::::::::::::::::::::::::::......:+++++++======+++++++++======+++++++*****************************************++++****************************++++++++++++++++++++********************************#####################################################################************+++++++++******++++++*#############################################################################*++++++++++++++++++++++####################################************++++++++++++++++=++******##################*+====================================================+*++++++++++++++++++++++++++++++++++**********************************************************************************************************************#########################################################################*++====++++===+==++==++++++++++=++++++++++++++=+*%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###########################################*********************#################################################################################################%%%%%%%%%%%%%%%%%%%%%%%###########***+===--===++*********####%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####################################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%########################################################################################################################################################################################################################################################################################################################################################################################################################################################
######************************************************************************************************************************************************************************************************************************************************************************************************************************************++++++++++++*********************************************************************************************************************#######********************************########*************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*************************************************************************************************++++++++++++++==--:::::::::::=#*##***********************##*#=.::-##########=....*#-::::::::::.*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########################################%%%%%%%#######**********+++++++++++++++++++++++++++++++++++++=================================================================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=========================+++++++++++===+*****************+++:.....:+#########*++***********+++++++**#####***************************************************************************************+-::::::::::::::::#######################*+=----==*##################%##########################%%%%%%%%%############################################################################################################################################********+++++::::::::::::::::::::::::::::::::::::::.......=+++++++======++++++++=======+++++++*************************************************************************+++++++++++++++++++*******************************####################################################################*************+++++++++*******+++++*##############################################################################*+++++++++++++++++++++*####################################***********++++++++++++++++++++******##################*+====================================================+*+++++++++++++++++++++++++++++++++***********************************************************************************************************************######################################################################*+++=============+==+===+++++++++++++++++++++++++=+*%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%###########################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###############################################**********************#################################################################################################%%%%%%%%%%%%%%%%%%%%%%%###########***+===--===++***********##%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##############################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%###########################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%############################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%########################################################################################################################################################################################################################################################################################################################################################################################################################################################
######************************************************************************************************************************************************************************************************************************************************************************************************************************************++++++++++++**********************************************************************************************************************#####*********************************#######**************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#*************************************************************************************************++++++++++++==--:::::::::::-####*************************###-:::+#########*...:-%=.:::::::::.*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@%%%%%%%%%%%%%%%%%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######################################%%%%%%%%%%#####*************++++++++++++++++++++++++++++++++++++++=================================================================+++++++++++++++++++++++++++++++++++++++++++++++++====================================++++++++++===++**********++++++++=......:+#########*++***********+++++*+*######***************************************************************************************=::::::::::::::::#######################*+=----==*##############################################%%%%%%%%#############################################################################################################################################*******+++++-::::::::::::::::::::::::::::::::::::::......:+++++++======++++++++=======+++++++*************************************************************************++++++++++++++++++++******************************###################################################################**************++++++++*******+++++*###############################################################################++++++++++++++++++++++####################################***********+++++++++++++++++++********##################*+=====================================================++++++++++++++++++++++++++++++++++******************************************************************************************************************************#############################################################*++++===++==+==++=========++++++++++++++++++++++++++++#%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%##################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##################################################***********************################################################################################################%%%%%%%%%%%%%%%%%%%%%%############***++======+++************#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%##########################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#########%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%###############################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###############################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%#########################################################################################################################################################################################################################################################################################################################################################################################################################################################
######************************************************************************************************************************************************************************************************************************************************************************************************************************************+++++++++++***********************************************************************************************************************#####********************************########**************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#************************************************************************************************++++++++++++==--::::::::::::+####**********************#***#*:::-*#########:.:::#*::::::::::.#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@%%%%%%%%%%%%%%%%%%@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###################################%%%%%%#########***************+++++++++++++++++++++++++++++++++++++++================================================================+++++++++++++++++++++++++++++++++++++++++++===========================================++++++++++++++++********++++++++-......:+#########*+**+*********+*++*++*#####***************************************************************************************+::::::::::::::::#######################*+=----=+*##############################################%%%%%%%%##############################################################################################################################################******+++++=::::::::::::::::::::::::::::::::::::::::.....=+++++++======++++++++=======+++++++*************************************************************************+++++++++++++++++++*******************************#################################################################***************+++++++*******+++++*###############################################################################*+++++++++++++++++++++*###################################***********+++++++++++++++++++*********###################+=====================================================+++++++++++++++++++++******++++++********************************************************************************************************************************#########################################################*++=++===++===++======+======++++++++++++++++++++++++++=+#%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%##############%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#################################################************************#################################################################################################%%%%%%%%%%%%%%%%%%%##############***+++=====+++************%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%#%%##########################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####################%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%######################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#################################################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%#########################################################################################################################################################################################################################################################################################################################################################################################################################################################
######************************************************************************************************************************************************************************************************************************************************************************************************************************************+++++++++++***********************************************************************************************************************####*********************************#######***************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#***********************************************************************************************++++++++++++==--::::::::::::-####***************************#+:::+#########=.:::*%:::::::::::%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@%%%%%%%%%%%%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%################################%%%%%%%%#########*****************+++++++++++++++++++++++====++++++++++++++=============================================================++++++++++++++++++++++++++++++++++++++++=================================================+++++++++++++++*******++++++++:......:*#########*++************++++++*#####**************************************************************************************+-:::::::::::::::#######################*+=---==+*###############################################%%%%%%%%#############################################################################################################################################*******+++++:.::::::::::::::::::::::::::::::::::::::::...:+++++++======++++++++=======+++++++**************************************************************************+++++++++++++++++++******************************################################################################****************++++++******++++++*################################################################################++++++++++++++++++++++###################################***********++++++++++++++++++++*********###################+=====================================================+++++++++++++++++++++*******+++***********************************************************************************************************************************######################################################*++==+==+============+==========+++++++++++++++++++++++++++*%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%##########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##################################################************************#################################################################################################%%%%%%%%%%%%%%%%%%###############****++=====++*************%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%##############################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#########################%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%###################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##################################################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%##########################################################################################################################################################################################################################################################################################################################################################################################################################################################
######************************************************************************************************************************************************************************************************************************************************************************************************************************************+++++++++++************************************************************************************************************************************************************#######****************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*************************************************************************************************+++++++++==--:::::::::::::*#####*#*************************=:::#########*::::=%=::::::::.=%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@%%%%%%%@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@%%%%%%%%%%@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#############################%%%%%%%%%##########*******************++++++++++++++++++++========+++++++++++++++==========================================================+++++++++++++++++++++++++++++++++++=======================================================+++++++++++++++******+++++++=:......:*#########*++************+++++**#####**************************************************************************************=:::::::::::::::#######################*+----==+############%%#####%#############################%%%%%%%##############################################################################################################################################*******++++-.::::::::::::::::::::::::::::::::::::::::::::++++++++=====++++++++=======++++++++*************************************************************************+++++++++++++++++++****************************################################################################******************+++++*******++++++################################################################################*+++++++++++++++++++++*##################################***********+++++++++++++++++++***********###################+======================================================++*+++++++++++++++++********************************************************************************************************************************************#****################################################*+==============================++++++++++++++++++++++++++++++#%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#%####%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###################################################*************************#################################################################################################%%%%%%%%%%%%%%###################***++++==+++*************%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%##############################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%################################%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%###%%################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####################################################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%###########################################################################################################################################################################################################################################################################################################################################################################################################################################################
######************************************************************************************************************************************************************************************************************************************************************************************************************************************+++++++++++***********************************************************************************************************************************************************########***************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#************************************************************************************************++++++++==--:::::::::::::=####*#***************************-::=#########=.:::#*:::::::::*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@%%%%%%%@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@%%%%%%%%%@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###########################%%%%%%%%%%%#############*****************+++++++++++++++++++++=========+++++++++++++++++++====================================================+++++++++++++++++++++++++++++++++==============================================================++++++++++++******++++++-.......:*#########*++*+**********+++++*######*************************************************************************************+-::::::::::::::########################+----==*#%##########%####################################%%%%%%%%##############################################################################################################################################******++++=:::::::::::::::::::::::::::::::::::::::::::::-+++++++=====++++++++========++++++++*************************************************************************+++++++++++++++++++***************************################################################################******************++++******+++++++*################################################################################*+++++++++++++++++++++*#################################***********++++++++++++++++++++***********###################+=======================================================+++++++++++++++++++***************************************************************************************************************************************************############################################*+================================++++++++++++++++++++++++++++=+#%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###################################################*************************#################################################################################################%%%%%%%%%%%%%####################****++++++++*************%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#############################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##################################%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%###%%#############################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####################################################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%###########################################################################################################################################################################################################################################################################################################################################################################################################################################################
######************************************************************************************************************************************************************************************************************************************************************************************************************************************+++++++++++***********************************************************************************************************************************************************#######***************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#************************************************************************************************+++++++==--::::::::::::::*#####**************************#*:.:*#########-:::*%-::::::::#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@%%%%%%@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@%%%%%@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######%#################%%%%%%%%%%%%%###############*******************++++++++++++++++++============++++++++++++++++++++++==============================================+++++++++++++++++++++++++++++++====================================================================+++++++++******++++++:.......-*#########*++************+++++*######************************************************************************************+=:::::::::::::-########################+---==+*#%################################################%%%%%%%##############################################################################################################################################*******++++::::::::::::::::::::::::::::::::::::::::::::::++++++++====+++++++++=======++++++++*************************************************************************++++++++++++++++++++***************************#############################################################*******************++++*******++++++*################################################################################*++++++++++++++++++++++#################################***********+++++++++++++++++++*************###################+========================================================++++++++++++++++++****************************************************************************************************************************************************########################################*++==================================++++++++++++++++++++++++++++=+*%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####################################################**************************##################################################################################################%%%%%%%%%%%#####################****+++++++**************%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%############################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######################################%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%####%%##########################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######################################################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%############################################################################################################################################################################################################################################################################################################################################################################################################################################################
######************************************************************************************************************************************************************************************************************************************************************************************************************************************++++++++++************************************************************************************************************************************************************#######***************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#**************************************************************************************************++++==--::::::::::::::=####*#**************************#*:.-#########*::.*%*::::::::%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######################%%%%%%%%%%%%%%#################*******************+++++++++++++++++===============+++++++++++++++++++++++++========================================++++++++++++++++++++++++++++++=======================================================================+++++++++*****+++++=........-##########*+*************++++**######************************************************************************************=:::::::::::::-########################=---==+###################%################################%%%%%%%##############################################################################################################################################******++++::::::::::::::::::::::::::::::::::::::::::::::=+++++++=====++++++++========++++++++*************************************************************************+++++++++++++++++++****************************###########################################################********************+++*******++++++*#################################################################################*+++++++++++++++++++++*################################************++++++++++++++++++**************###################++=========================================================++++++++++++++++****************************************************************************************************************************************************######################################*++======+==============================+++++++++++++++++++++++++++++*#%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######################################################***************************#################################################################################################%%%%%%%%%%%####################******++++++**************%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%####################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##############################################%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%####%%%#####################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#########################################################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#############################################################################################################################################################################################################################################################################################################################################################################################################################################################
######************************************************************************************************************************************************************************************************************************************************************************************************************************************++++++++++************************************************************************************************************************************************************#######**************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#************************************************************************************************++++==--:::::::::::::::*#####*************************#*#*-:+#########=::+%%=::::::-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###################%%%%%%%%%%%%%%%%###################*******************++++++++++++++++++=================+++++++++++++++++++++++++===================================+++++++++++++++++++++++++++++++==========================================================================+++++++******++++-........=##########**+*************+*+*#######***********************************************************************************+-::::::::::::-########################=---==*#%#%################################################%%%%%%%%##############################################################################################################################################******+++-::::::::::::::::::::::::::::::::::::::::::-::-++++++++====+++++++++=======+++++++++***********++++++++******************************************************+++++++++++++++++++***************************##########################################################********************+++******+++++++*#################################################################################*++++++++++++++++++++++################################************++++++++++++++++++***************###################++===========================================================++++++++++++++**************************************************************************************************************************************************######################################*+=======+================================++++++++++++++++++++++++++++++#%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########################################################***************************##################################################################################################%%%%%%%%%#####################*******++++***************%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%######################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######################################################%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#####%%###################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%##############################################################################################################################################################################################################################################################################################################################################################################################################################################################
#####*************************************************************************************************************************************************************************************************************************************************************************************************************************************++++++++++************************************************************************************************************************************************************#######**************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#***********************************************************************************************++++==--:::::::::::::::=######********************#****#*#*++##########-:+%%#::::::+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######%#######%%%%%%%%%%%%%%%%%%%###################*********************+++++++++++++++++====================++++++++++++++++++++++++================================++++++++++++++++++++++++======+===========================================================================+++++++******++++:........+##########**+************+++**#######**********************************************************************************+-::::::::::::-#######################*---==+*###%#################################################%%%%%%%###############################################################################################################################################*****+++=::::::-=::::::.:::::::::::::::::::::::::::-:::=+++++++====+++++++++========+++++++++++*+*++++++++++++++++++*************************************************+++++++++++++++++++****************************########################################################*********************++******+++++++*##################################################################################*+++++++++++++++++++++*###############################************++++++++++++++++++**#*************###################++============================================================+++++++++++++********************************************************************************************************************************************##***#####################################*+===========+===============================+++++++++++++++++++++++++=+++*#%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%##%%%###%%%%%%%%%%%%%%%%%%%%%##########################################################***************************##################################################################################################%%%%%%%%#####################*******+++++***************%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%############################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%################################################################%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%######%%###################################%%%%%%%%%%%%%%%%%%%%%%%%%##########################################################################################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%##############################################################################################################################################################################################################################################################################################################################################################################################################################################################
#####*****************************************************************************************************************************###**************************************************************************************************************************************************************************************+**************++++++++++************************************************************************************************************************************************************######***************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#**********************************************************************************************++++==--::::::::::::::::*#####*************###**####****################:=#%%=:::::#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#%%###%%%%%%%%%%%%%%%%%%%%%%%####################*********************++++++++++++++++++=======================++++++++++++++++++++++============================+++++++++++++++++++++========================================================================================++++++*******++=........:*##########***************+**+*#######**********************************************************************************=::::::::::::-#######################*-:-==*#######################################################%%%%%%%################################################################################################################################################****+++::::::-+:::::::::::::::::::::::::::::::::--:::-++++++++====++++++++========++++++++++++++++++++++++++++++++++++**********************************************+++++++++++++++++++***************************#######################################################*********************++******+++++++*##################################################################################*++++++++++++++++++++++##############################*************++++++++++++++++++**##*************###################++==============================================================++++++++++++*************************************************************************************************************************************************##################################*+=====+========================================+++++++++++++++++++++++++++++#%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%############################%%%%%%%############################################################***************************##################################################################################################%%%%%%%%####################*******++++++*************+*%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%######################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####################################################################%%%@@@@@@@@@@@@@@@@@@@@@@@@@@%%%######%%######################################################################################################################################################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%###############################################################################################################################################################################################################################################################################################################################################################################################################################################################
#####*****************************************************************************************************************************####************************************************************************************************************************************************************************************+++*************++++++++++************************************************************************************************************************************************************######***************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#********************************************************************************************++++==--::::::::::::::::=##########*******####**####**##################*:#%%#:::::%#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@%%@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###%%%%%%%%%%%%%%%%%%%%%%%########################*********************++++++++++++++++++==========================+++++++++++++++++++++========================+++++++++++++++++++++==========================================================================================++++++*******++-........:*##########**+************+++**######**********************************************************************************+::::::::::::-#######################*-:-=+*###%###################################################%%%%%%%#################################################################################################################################################***+++-:::::-+-:::::::::::::::::::::::::::::::::-::::++++++++====+++++++++=======++++++++++++++++++++++++++++++++++++++*********************************************++++++++++++++++++***************************######################################################**********************+******++++++++###################################################################################*+++++++++++++++++++++*##############################************++++++++++++++++++**##**************###################*+===============================================================+++++++++++*****************************************************************************************************************************************************############################*+========================================================+++++++++++++++++++++#%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%###############################################################################################***************************##################################################################################################%%%%%%%%###################*******++++++++***********++*%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%####################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######################################################################%%%@@@@@@@@@@@@@@@@@@@@@@@@@%%%%######%%%#####################################################################################################################################################################%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%################################################################################################################################################################################################################################################################################################################################################################################################################################################################
#####***************************************************************************************************************************######******************************************************************************************************************************************************************+++++**********++++++*************++++++++++************************************************************************************************************************************************************######**************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#******************************************************************************************+++++==--:::::::::::::::::*######**###*###################################**%%%-.::-%###%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@%@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##%%#%%%%%%%%%%%%%%%%%%%%%%%%%%########################***********************++++++++++++++++==+===========================+++++++++++++++++++====================+++++++++++++++++++++++============================================================================================+++++******++.........-*##########**+************+++*########********************************************************************************+-:::::::::::-#######################+:--=+#########################################################%%%%%%%#################################################################################################################################################***++=:::::=++::.::.::::::::::::::::::::::::::::::::=+++++++====+++++++++========+++++++++++++++++++++++++++++++++++++++++*****************************************+++++++++++++++++++***************************####################################################*****************************++++++++*###################################################################################++++++++++++++++++++++##############################*************+++++++++++++++++**###**************###################*++================================================================+++++++++**++++**********************************************************************************************************************************************###########################*+============================================================++++++++++++++=++++*#%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%########################################################################################################***************************##################################################################################################%%%%%%%%##################******++++++++++***********+++%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#############%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#########################################################################%%%@@@@@@@@@@@@@@@@@@@@@@@@%%%#######%%%######################################################################################################################################################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%################################################################################################################################################################################################################################################################################################################################################################################################################################################################
#####***************************************************************************************************************************#######*****************************************************************************************************************************************************************++++***********++++++*************+++++++++*************************************************************************************************************************************************************#####***************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*****************************************************************************************+++++==--:::::::::::::::::-#################################################%%%*:::+%####%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########################**********************+++++++++++++++++++==+===========================+++++++++++++++++++================+++++++++++++++++=++++++===============================================================================================+++******+=.........=###########**+***********++++*#######*********************************************************************************=:::::::::::-#######################+:--=*#########################################################%%%%%%%%#################################################################################################################################################**+++-:::-+++-::::::::::::::::::::::::::::::::::::::++++++++===+++++++++========+++++++++++++++++++++++++++++++++++++++++++****************************************+++++++++++++++++++**************************###################################################*****************************++++++++*###################################################################################*+++++++++++++++++++++*#############################*************+++++++++++++++++**###***************###################*++==================================================================++++++++++++++********************************************************************************************************************************************##########################*+==============================================================++++++++++++++++++++#%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%########################################################################################################***************************##################################################################################################%%%%%%%%%################******+++++++++++***********+++#%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###########################################################################%%%@@@@@@@@@@@@@@@@@@@@@%%%%%#######%%%%#####################################################################################################################################################################%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#################################################################################################################################################################################################################################################################################################################################################################################################################################################################
#####**************************************************************************************************************************########******************************************************************************************************************************************************************+++***********++++++*************+++++++++*************************************************************************************************************************************************************#####***************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#***************************************************************************************+++++==--::::::::::::::::::+#################################################%%%+::*#####%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#########################**********************++++++++++++++++++++++==============================++++++++++++++++++=============++++++++++++++++==++++++=================================================================================================++******+-.........+###########**+************+++*#######********************************************************************************+-::::::::::-#######################=:--+*####%#####################################################%%%%%%%##################################################################################################################################################**+++++++++++:::.::::::::::::::::::::::::::::::::::=++++++++==++++++++++========++++++++++++++++++++++++++++++++++++++++++++++***************************************++++++++++++++++**************************##################################################*****************************++++++++*####################################################################################++++++++++++++++++++++*############################*************+++++++++++++++++***##****************###################*++===================================================================++++++++++++++************************************************************************************************###************************#########################################*+===============================================================++++++++++++++++=+++*#%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%########################################################################################################***************************##################################################################################################%%%%%%%%%###############******++++++++++++***********+++#%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%############################################################################%%%%%@@@@@@@@@@@@@@@@@@%%%%%#######%%%%%#####################################################################################################################################################################%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#################################################################################################################################################################################################################################################################################################################################################################################################################################################################
#####**************************************************************************************************************************########********************************************************************************************************************************************************************************++++++*************+++++++++*************************************************************************************************************************************************************####*****************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#***************************************************************************************++++==--::::::::::::::::::-#################################################%%%%::######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###############################***********************++++++++++++++++++++++===============================++++++++++++++++++=========+++++++++++++++=====++++++=================================================================================================++******+:.........+############**************++**#######*******************************************************************************+-::::::::::-#######################=:-=+#####%#####################################################%%%%%%%%##################################################################################################################################################*+++++++++++::::::::::::::::::::::::::::::::::::::-++++++++==++++++++++========++++++++++++++++++++++++++++++++++++++++++++++*************************************##*++++++++++++++++*************************#################################################*****************************++++++++*####################################################################################*+++++++++++++++++++++*##***########################************++++++++++++++++****##*************++**###################*++====================================================================+++++++++++++*******************************************************************************************######################################################################**+======+==========================================================+++++++++++++++==++++#%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%########################################################################################################***************************##################################################################################################%%%%%%%%%%#############******++++++===++++***********+++#%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#################################################################################%%%%%%@@@@@@@@@@@@@@%%%%%%########%%%%%######################################################################################################################################################################%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%##################################################################################################################################################################################################################################################################################################################################################################################################################################################################
#####*************************************************************************************************************************############*****************************************************************************************************************************************************************************++++++*************+++++++++**************************************************************************************************************************************************************##*********************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%**************************************************************************************++++==--:::::::::::::::::::+#################################################%%%+:######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###############################***********************++++++++++++++++++++++=================================++++++++++++++++++=====+++++++++++++++======++++++===================================================================================================+******+:........:*############**************++*########*******************************************************************************=::::::::::-#######################-:-=*#####%######################################################%%%%%%%%##################################################################################################################################################*++++++++++=::::::::::::::::::::::::::::::::::::::+++++++++==+++++++++=========+++=====+++++++++++++++++++++++++++++++++++++*************************************##*++++++++++++++++*************************################################################*****************************++++++++*#####################################################################################++++++++++++++++++++++*#***########################************++++++++++++++++****##**************+++*####################++======================================================================++++++++++++******************************************************************************************#####################################################################*+===================================================================+++++++++++++++=+=+++*#%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%########################################################################################################***************************##################################################################################################%%%%%%%%%%############******+++++=====++++**********++++#%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########################################################################################%%%%%%@@@@@@@@@@@%%%%%%%#########%%%%%%#####################################################################################################################################################################%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%##################################################################################################################################################################################################################################################################################################################################################################################################################################################################
#####************************************************************************************************************************###############***************************************************************************************************************************************************************************++++++*************+++++++++*************************************************************************************************************************************************************************************************************++++++++*********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#************************************************************************************++++==--:::::::::::::::::::-*##################################################%#:######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@%%%%%%%%@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####%#%%%%%%%%%%%%%%%%%%%%%%%################################***********************+++++++++++++++++++++++++================================++++++++++++++++++++++++++++++++++=======+++++++===================================================================================================+******+.........-*############*+*************+*########******************************************************************************+::::::::::-#######################---+#############################################################%%%%%%%%###################################################################################################################################################+++++++++++:::::::::::::::::::::::::::::::::::::.-++++++++==+++++++++==========+=======+++++++++++++++++++++++++++++++++++++*************************************#*+++++++++++++++++************************###############################################*****************************++++++++*#####################################################################################*++++++++++++++++++++++*****#######################************++++++++++++++++****##**************++++**###################++=======================================================================+++++++++++*****************************************************************************************####################################################################*+=====================================================================+++++++++++++++++=++++#%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%########################################################################################################****************************#################################################################################################%%%%%%%%%%###########******++++++=====++++**********++++#%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%################################################################################################%%%%%%%%%@@@@@%%%%%%%%##########%%%%%%######################################################################################################################################################################%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%##################################################################################################################################################################################################################################################################################################################################################################################################################################################################
#####***************************************************************************************************#######################################************************************************************************************************************************************************************************+++++++************+++++++++*******************************************************************************************************************************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%***********************************************************************************++++==--::::::::::::::::::::=##################################################%#=######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@%%%%%%%%@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##%%%%%%##%%%%%%%%%%%%%%%%%%%%%%%###############################************************+*++++++++++++++++++++++++++==============================++++++++++++++++++++++++++++++=========+++++++====================================================================================================+*******...... ..=*############***************+*########*****************************************************************************+-:::::::::-#######################---+##%###########################################################%%%%%%%%##################################################################################################################################################*++++++++++-::::::::::::::::::::::::::::::::::::::+++++++++==+++++++++==================+++++++++++++++++++++++++++++++++++++*****+********************************++++++++++++++++++***********************##############################################*****************************++++++++*######################################################################################++++++++++++++++++++++***#########################*************++++++++++++++**********************+++++*###################++=======================================================================+++++++++++****************************************************************************************###################################################################*+==========+============================================================++++++++++++++++++++++*#%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%########################################################################################################****************************#################################################################################################%%%%%%%%%%%#########******++++++======++++***********+++#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######################################################################################################%%%%%%%%%%%%%%%%%%%%###########%%%%%%######################################################################################################################################################################%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%###################################################################################################################################################################################################################################################################################################################################################################################################################################################################
#####**************************************************************************************************#############################################*******************************************************************************************************************************************************************+++++++************+++++++++********************************************************************************************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#*********************************************************************************++++==--:::::::::::::::::::::*##########################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#%%%%%%##%%#%%%%%%%%%%%%%%%%%%%%%%%###############################**************************+++++++++++++++++++++++++++==============================+++++++++++++++++++++++++++===========+++++++====================================================================================================+*******: .......+#############*****************#######*****************************************************************************+=:::::::::-######################*--=*##%##%########################################################%%%%%%%%###################################################################################################################################################*+++++++++=:::::::::::::::::::::::::::::::::::::.=++++++++==+++++++++===================+++++++++++++++++++++++++++++++++++++****++++*****************************++++++++++++++++++***********************#############################################*****************************++++++++*######################################################################################*++++++++++++++++++++++***########################*************++++++++++++++***********************+++++*###################++======================================================================++++++++++++***************************************************************************************###################################################################++========================================================================+++++++++++++++++++++++##%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%########################################################################################################****************************#################################################################################################%%%%%%%%%%%########*******+++++=======++++***********+++#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###########################################################################################################%%%%%%%%%%%%%%%%%%############%%%%%%%#####################################################################################################################################################################%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%####################################################################################################################################################################################################################################################################################################################################################################################################################################################################
#####*************************************************************************************************################################################****************************************************************************************************************************************************************+++++++*************++++++++**********************************************************************************************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##*******************************************************************************++++==--:::::::::::::::::::::-######*###################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######%%%%%%%%%%%%%%%%%%%%##################################*************************++++++++++++++++++++++++++++++++++==========================+++++++++++++++++++++++==============+++++=====================================================================================================+*******- ......:*#############*****************#######*****************************************************************************+:::::::::=######################+--=*##%############################################################%%%%%%%%%##################################################################################################################################################*+++++++++:::::::::::::::::::::::::::::::::::::.-++++++++==++++++++++===================++++++++++++++++++++++++++++++++++++++*++++++****************************+++++++++++++++++++**********************############################################*****************************++++++++*#######################################################################################++++++++++++++++++++++**#*#######################*************++++++++++++++***********************+*++++*###################++======================================================================+++++++++++++***********************************************************************************########################################################*####*#####**+=====================================================================++++++++++++++++++++++++++++*####%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%########################################################################################################****************************#################################################################################################%%%%%%%%%%%#######*******+++++========++++***********+++%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##############################################################################################################%%%%%%%%%%%%%%#############%%%@%%%%######################################################################################################################################################################%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%####################################################################################################################################################################################################################################################################################################################################################################################################################################################################
#####*************************************************************************************************################################################****************************************************************************************************************************************************************+++++++*************++++++++**********************************************************************************************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#******************************************************************************++++==--::::::::::::::::::::::+####*####################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######%%%%%%%%%%%%%%%%%%%%###################################************************++++++++++++++++++++++++++++++++++++==========================+++++++++++++++++++++================+++======================================================================================================+*******-.......=*#############*****************#######****************************************************************************+-::::::::=######################+-=+###%############################################################%%%%%%%%%###################################################################################################################################################*++++++++-::::::::::::::::::::::::::::::::::::::+++++++++==+++++++++====================++++++++++++++++++++++++++++++++++++++++++++++***************************+++++++++++++++++++*********************###########################################*****************************+++++++++#######################################################################################*+++++++++++++++++++++***########################**************+++++++++++++************************++++++*###################++=====================================================================++++++++++++++***********************************************************************************######################################################*###**###*##*+======================================================================++++++++++++++++++++++++++++++***####%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#######################################################################################################****************************################################################################################################%%%%%%%%%%%%#######*******+++++========++++***********++*%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###################################################################################################################%%%%%%%%################%%%@@%@%#######################################################################################################################################################################%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%#####################################################################################################################################################################################################################################################################################################################################################################################################################################################################
#####*************************************************************************************************################################################*****************************************************************************************************************************************************************++++++*************++++++++**********************************************************************************************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*****************************************************************************++++==--::::::::::::::::::::::-*#################################################%######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@%@%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######%%%%%%%%%%%%%%%%%%%%###################################*************************++++++++++++++++++++++++++++++++++++++=========================+++++++++++++++++++++===============++=======================================================================================================+*******=.......+*#############****************########***************************************************************************+=::::::::=%#####################+-=+#################################################################%%%%%%%%%################################################################################################################################################%%#*++++++++::::::::::::::::::::::::::::::::::::::=+++++++++=+++++++++====================+++++++++++++++++++++++++++++++++++++++++++++++**************************+++++++++++++++++++**********************########################################******************************+++++++++*#######################################################################################++++++++++++++++++++++**########################**************+++++++++++++************************++++++++###################*++===================================================================++++++++++++++++********************************************************************************###########################################################*###*##*+========================================================================++++++++++++++++++++++++++++++++*****###%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#######################################################################################################****************************################################################################################################%%%%%%%%%%%%######*******++++++========++++***********++*%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##############################################################################################################################################%%@@@@%%%######################################################################################################################################################################%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%######################################################################################################################################################################################################################################################################################################################################################################################################################################################################
#####*******************************************************************+******+++********************###################################################**************************************************************************************************************************************************************++++++*************++++++++**********************************************************************************************************************************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#***************************************************************************++++==--:::::::::::::::::::::::=#################################################%######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###%%%%%%%%%%%%%%%%%%%%%%%#####################################*************************+++++++++++++++++++++++++++++++++++++++=========================+++++++++++++++++++*++======================================================================================================================+*******+......-+*#############****************########**************************************************************************+=::::::::+%#####################===*#################################################################%%%%%%%%%##################################################################################################################################################%#*+++++++::::::::::::::::::::::::::::::::::::::-+++++++++==+++++++++====================+++++++++++++++++++++++++++++++++++++++++++++++++************************+++++++++++++++++++*********************########################################****************************++++++++++*#######################################################################################*+++++++++++++++++++++**########################**************+++++++++++++*************************++++++++###################*++==================================================================+++++++++++++++++********************************************************************************#########################################################**##*###*+========================================================================+++++++++++++++++++++++++++++++++++******###%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#######################################################################################################****************************###############################################################################################%%%%%%%%%%%%%#####********+++++=========++++************+#%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%####################################################################################################################################################################%%@@@@@%@%#########################################################################%%%%%%%%%#####################################################################################%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%######################################################################################################################################################################################################################################################################################################################################################################################################################################################################
#####*******************************************************************+*******++********************#####################################################************************************************************************************************************************************************************++++++**************++++++*******************************************************************************************++++************************************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#*************************************************************************++++==--::::::::::::::::::::::::+###############################################%%######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%@@@@%%%%%%%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####%%%%%%%%%%%%%%%%%%%#######################################*************************++++++++++++++++++++++++++++++++++++++++=========================+++++++++++++++++++***+====================================================================================================================+*******+......=+*#############****************########**************************************************************************+-:::::::*######################==+*#################################################################%%%%%%%%%%####################################################################################################################################################*++++++=::::::::::::::::::::::::::::::::::::::=++++++++==+++++++++=====================+++++++++++++++++++++++++++++++++++++++++++++++++***********************+++++++++++++++++++**********************#####################################*****************************++++++++++*########################################################################################++++++++++++++++++++****#######################**************++++++++++++**************************+++++++++*##################*++=================================================================+++++++++++++++++++*******************************************************************************##########################################################**##**++=========================================================================++++++++++++++++++++++++++++++++++++++++***#%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#######################################################################################################****************************#############################################################################################%%%%%%%%%%%%%%%#####*******++++++=========++++*************#%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%#########################################################################################################################################################################%%@@@@@%@%%###################################################################%%%%%%%%%%%%%%%#####################################################################################%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%#######################################################################################################################################################################################################################################################################################################################################################################################################################################################################
#####******************************************************************+******************************######################################################***********************************************************************************************************************************************************++++++**************++++++*******************************************************************************************++++************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#************************************************************************++++==--::::::::::::::::::::::::-*##############################################%%######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####%%%%%%%%%%%%%%%%%%%%########################################************************+++++++++++++++++++++++++++++++++++++++++===========================++++++++++++++++++****++=================================================================================================================+*******+:....-++*#############***************#########*************************************************************************+-::::::-#######################==+*##################################################################%%%%%%%%%%###############################################################################################################################################%#%%#*++++++::::::::::::::::::::::::::::::::::::::-+++++++++=+++++++++=====================++++++++++++++++++++++++++++++++++++++++++=+++++++************************#*++++++++++++++++***********************###################################****************************++++++++++*########################################################################################*+++++++++++++++++++*****######################**************+++++++++++****************************+++++++++*##################*++===============================================================+++++++++++++++++++++*******************************************************************************########################################################*####**+===========================================================================++++++++++++++++++++++++++++++++++++++++++*##%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#######################################################################################################****************************#########################################################################################%%%%%%%%%%%%%%%%%%%####********++++++=========++++*************%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%############################################################################################################################################################################%@@@@@@@@@%##############################################################%%%%%%%%%%%%%%%%%%%%%#####################################################################################%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%########################################################################################################################################################################################################################################################################################################################################################################################################################################################################
#####*************************************************************************************************#######################################################**********************************************************************************************************************************************************++++++**************+++++*******************************************************************************************+++++************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#***********************************************************************+++==--:::::::::::::::::::::::::=##############################################%%######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@%%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##%%%%%%%%%%%%%%%%%%%%##########################################************************+++++++++++++++++++++++++++++++++++++++===============================+++++++++++++++++*******++=============================================================================================================+********- ...=+**#############***************#########**********************************************************************#*+=::::::=#######################=++####################################################################%%%%%%%%%################################################################################################################################################%##%#*+++++-::::::::::::::::::::::::::::::::::::::=+++++++++=+++++++++=====================+++++++++++++++++++++++++++++++++++++++++=++++++++***********************##*++++++++++++++++**********************##################################****************************+++++++++**#########################################################################################+++++++++++++++++++*****######################**************+++++++++++****************************++++++++++*##################*++==============================================================++++++++++++++++++++++*******************************************************************************#########################################################*##*+============================================================================++++++++++++++++++++++++++++++++++++++++++*####%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%######################################################################################################****************************##################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%#####*******+++++++=========++++*************%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%#############################################################################################################################################################################%%@@@@@@@@@%%########################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%#####################################################################################%%%%%%@@@@@@@@@@@@@@@@@@@@@@@%%%%%%#########################################################################################################################################################################################################################################################################################################################################################################################################################################################################
#####*************************************************************************************************########################################################*********************************************************************************************************************************************************++++++**************+++++*******************************************************************************************+++++************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#**********************************************************************+++==--::::::::::::::::::::::::::+#############################################%%######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###########################################***********************+++++++++++++++++++++++++++++++++++++++===================================++++++++++++++++*******++===========================================================================================================+********-. .-++*###############**************#########********************************************************************##*++::::::+######################*=++##%#################################################################%%%%%%%%%%###################################################################################################################################################%#+++++=::::::::::::::::::::::::::::::::::::::=+++++++++=+++++++++======================+++++++++++++++++++++++++++++++++++++++++==++++++++**********************##+++++++++++++++++*********************#################################****************************+++++++++**#########################################################################################*++++++++++++++++++******######################**************++++++++++*****************************++++++++++*##################*++=+===========================================================+++++++++++++++++++++++*********************************************************************************#####*##################################################*+==============================================================================+++++++++++++++++++++++++++++++++++++++++*######%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%#####################################################################################################****************************#############################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####*******+++++++=========++++************#%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%##%##################################################################################################################################################################################%%@@@@@@@@%@%####################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######################################################################################%%%%%%%@@@@@@@@@@@@@@@@@@@@%%%%%###########################################################################################################################################################################################################################################################################################################################################################################################################################################################################
####**************************************************************************************************########################################################**********************************************************************************************************************************************************+++++*************************************************************************************************************++++++***********************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#********************************************************************+++==--::::::::::::::::::::::::::-*############################################%%######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#%%%%%%%%%%%%%%%%%%%%%%############################################*********************++++++++++++++++++++++++++++++++++++++++++======================================+++++++++++++++*******+++========================================================================================================+********=. :=++*###############**************########********************************************************************#**++-:::::*######################*=+*#####################################################################%%%%%%%%%%###################################################################################################################################################%#+++++:::::::::::::::::::::-:::::::::::::::::+++++++++=++++++++++======================+++++++++++++++++++++++++++++++++++++++++==++++++++*********************##*++++++++++++++++***********************##############################*****************************++++++++**##########################################################################################+++++++++++++++++++*****######################***************++++++++*******************************+++++++++++##################*+++==========================================================++++++++++++++++++++++++++*********************************************************************************#####*########################################*###*###*+====================================================================+==========++++++++++++++++++++++++++++++++++++++++*#########%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%####%#################################################################################################****************************###################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####*******++++++==========++++************#%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%############################################################################################################################################################################################%%@@@@@@@@@@@%%#############################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######################################################################################%%%%%%%%%@@@@@@@@@@@@@@@@%%%%%############################################################################################################################################################################################################################################################################################################################################################################################################################################################################
####***************************************************************************************************########################################################*********************************************************************************************************************************************************+++++*************************************************************************************************************+++++++***********************************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#******************************************************************+++==--:::::::::::::::::::::::::::-*###########################################%%######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#%%%%%%%%%%%%%%%%%%%%%%%%%##############################################********************+++++++++++++++++++++++++++++++++++++++++++++======================================+++++++++++++++++****+++=======================================================================================================++*******+. -+++*###############*+************########******************************************************************##***+-:::::#######################+++*#####################################################################%%%%%%%%%%###################################################################################################################################################%##++++::::::::::::::::::::---::::::::::::::::=+++++++++++++++++++======================++++++++++++++++++++++++++++++++++++++++++==+++++++++********************##*++++++++++++++++***********************###########################******************************+++++++++###########################################################################################*+++++++++++++++++*******#####################***************++++++++*******************************++++++++++++###################+++=========================================================+++++++++++++++++++++++++++*********************************************************************************#############################################*##*##**++================================================================================+++++++++++++++++++++++++++++++++++++++*############%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%####%#################################################################################################****************************###############################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####*******++++++==========++++************#%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%###########################################################################################################################################################################################%%%@@@@@@@@@@@%%##########################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##########################################################################################%%%%%%%%%%@@@@@@%%%%%%%%%%%#############################################################################################################################################################################################################################################################################################################################################################################################################################################################################
###****************************************************************************************************########################################################*********************************************************************************************************************************************************+++++*************************************************************************************************************++++++++**********************************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#****************************************************************+++==--::::::::::::::::::::::::::::=###########################################%#######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##%%%%%%%%%%%%%%%%%%%%%%%%###############################################*******************++++++++++++++++++++++++++++++++++++++++++++++=========================================++++++++++++++++**++========================================================================================================+********+:.++++*###############*************#########****************************************************************##****+=::::-#######################+++*######################################################################%%%%%%%%%%###################################################################################################################################################%#*+++-::::::::::::::::::----::::::::::::::::-+++++++++=+++++++++========================+++++++++++++++++++++++++++++++++++++++++===++++++++*******************##*+++++++++++++*+++*************************#######################*******************************++++++++############################################################################################+++++++++++++++++*******#####################***************++++++++*******************************+++++++++++++###################+++========================================================++++++++++++++++++++++++++++**********************************************************************************#############################################*##*#*+==================================================================================++++++++++++++++++++++++++++++++++++++*##############%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%###%#################################################################################################****************************##########################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####*******++++++===========+++************%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%############################################################################################################################################################################################%%@@@@@@@@@@@@@%%##################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#############################################################################################%%%%%%%%%%%%%%%%%%%%%%%%###############################################################################################################################################################################################################################################################################################################################################################################################################################################################################
********************************************************************************************************########################################################*******************************************************************************************************************************************************++++++*************************************************************************************************************++++++++**********************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%****************************************************************++==--:::::::::::::::::::::::::::::+#########################################%%#######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#%%%%%%%%%%%%%%%%%%%%%#################################################******************+++++++++++++++++++++++++++++++++++++++++++++++===========================================++++++++++++++++++========================================================================================================++********-=++++*###############*************#########**************************************************************##*****+=::::+#######################+=*#%#####################################################################%%%%%%%%%%####################################################################################################################################################%#*++=:::::::::::::::-:-------::::::::::::::-+++++++++=+++++++++=========================+++++++++++++++++++++++++++++++++++++++++===+++++++++******************##*+++++++++++***++***************************##*********#########*******************************++++++++*###########################################################################################*++++++++++++++++*******#####################***************++++++++********************************+++++++++++++*##################+++=======================================================+++++++++++++++++++++++++++++***********************************************************************************#############################################*#*++===================================================================================+++++++++++++++++++++++++++++++++++++*################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%###%#################################################################################################****************************#####################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####*******++++++===========+++************%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%############################################################################################################################################################################################%%@@@@@@@@@@@@@@@%##############################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###################################################################################################%%%%%%%%%%%%%%%%%%%%%################################################################################################################################################################################################################################################################################################################################################################################################################################################################################
********************************************************************************************************########################################################*******************************************************************************************************************************************************++++++************************************************************************************************************++++++++++*********************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#**************************************************************+++=--::::::::::::::::::::::::::::::+########################################%%#######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##%%%%%%%%%%%%%%%%%%%###################################################*****************+++++++++++++++++++++++++++++++++++++++++++++++++==============================================+++++++++++++=========================================================================================================+*********++++++*###############*************#########*************************************************************#******++-:::*#######################++#%#%####################################################################%%%%%%%%%%#######################################################################################################################################################*++:::::::::::::::---------:::::::::::::::=+++++++++++++++++++========================++++++++++++++++++++++++++++++++++++++++++===+++++++++*****************###+++++++++++*****+*******************************************##*******************************++++++++*############################################################################################++++++++++++++++********####################****************++++++*********************************++++++++++++++*##################+++=======================================================++++++++++++++++++++++++++++++*************************************************************************************######################################**#*#*+=====================================================================================++++++++++++++++++++++++++++++++++=+*##################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%###%#################################################################################################****************************##############################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####*******++++++===========+++***********#%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%############################################################################################################################################################################################%@@@@@@@@@@@@@@@@%%#########################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#########################################################################################################%%%%%%%%%%%%%%%####################################################################################################################################################################################################################################################################################################################################################################################################################################################################################
********************************************************************************************************########################################################*********************************************************************************************************************************************************+++*************************************************************************************************************++++++++++++*******************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#************************************************************+++=--:::::::::::::::::::::::::::::::*#######################################%%#######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##%%%%%%%%%%%%%%%%%%####################################################*****************++++++++++++++++++++++++++++++++++++++++++++++++++=================================================+++++++++==========================================================================================================++*********+++++*###############*************#########***********************************************************#*******++-:::#######################*+*#########################################################################%%%%%%%%%###################################################################################################################################################%##%#++-::::::::::::::---------:::::::::::::::-+++++++++++++++++++=========================++++++++++++++++++++++++++++++++++++++++++===+++++++++*****************##*+++++++++++*****+*****************************************#*********************************+++++++#############################################################################################*+++++++++++++++********####################*****************+++++*********************************+++++++++++++++*##################+++=======================================================++++++++++++++++++++++++++++++*************************************************************************************###*###############################**####**+======================================================================================++++++++++++++++++++++++++++++++=++*###################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%###%#################################################################################################*****************************#########################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####*******++++++===========+++***********#%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%###########################################################################################################################################################################################%%@@@@@@@@@@@@@@@@@%%################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########################################################################################################################%##################################################################################################################################################################################################################################################################################################**#######################################################################################################################################################################################
********************************************************************************************************#########################################################*********************************************************************************************************************************************************++************************************************************************************************************+++++++++++++++++***************************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#**********************************************************+++=--:::::::::::::::::::::::::::::::-*######################################%%#######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####################################################****************+++++++++++++++++++++++++++++++++++++++++++++++++++=================================================+++++++++==========================================================================================================++**********+++**###############*************#########*********************************************************##*******++=::-#######################**###%######################################################################%%%%%%%%######################################################################################################################################################%#%*+=:::::::::::::::--------::::::::::::::::+++++++++++++++++++==========================++++++++++++++++++++++++++++++++++++++++++===++++++++++****************##*++++++++++*******************************************************************************++++++++*#############################################################################################+++++++++++++++*********###################******************+++**********************************+++++++++++++++++##################++++======================================================++++++++++++++++++++++++++++++*************************************************************************************#*****#############################*###**+========================================================================================++++++++++++++++++++++++++++++++++*####################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%###%################################################################################################******************************######################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###%%%%%%%%%%%%#####*******++++++============++***********%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%###########################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@%###########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###############################################################################################################################################################################################################################################################################################################################################################################################################################****######################################################################################################################################################################################
*********************************************************************************************************#########################################################*********************************************************************************************************************************************************+************************************************************************************************************++++++++++++++++++**************************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#********************************************************+++=--::::::::::::::::::::::::::::::::-*#####################################%%#######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######################################################***************++++++++++++++++++++++++++++++++++++++++++++++++++++=================================================++++++++============================================================================================================+**********+++**###############*************########********************************************************##********++=::=#######################*##%%#######################################################################%%%%%%%%###################################################################################################################################################%######*+:::::::::::::::--------::::::::::::::::=+++++++++++++++++++==========================++++++++++++++++++++++++++++++++++++++++++===++++++++++***************###++++++++++*******************************************************************************++++++**#############################################################################################*++++++++++++++*********###################******************+++**********************************++++++++++++++++++##################++++======================================================++++++++++++++++++++++++++++++********************************************************************************************############################*##**+==============================================================================+==========+++++++++++++++++++++++++++++++++*#####################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%###%###############################################################################################*******************************#################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###########%%%%%%%%%%#####*******++++++============++***********%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%##########################################################################################################################################################################################%%@@@@@@@@@@@@@@@@@@@%%########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######################################################################################################################################################################################################################################################################################################################################################################################################################################*******####################################################################################################################################################################################
**********************************************************************************************************#########################################################*********************************************************************************************************************************************************************************************************************************************************************+++++++++++++++++++++**********************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#******************************************************+++=--:::::::::::::::::::::::::::::::::-#####################################%%#######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#########################################################***************++++++++++++++++++++++++++++++++++++++++++++++++++++=================================================+++++++============================================================================================================++**********+++**###############************#########*******************************************************#*********++=-:*####################################################################################################%%%%%%%%##########################################################################################################################################################*-::::::::::::::--------::::::::::::::::-+++++++++++++++++++===========================++++++++++++++++++++++++++++++++++++++++++===+++++++++++**************##*+++++++++********************************************#*********************************+++++++*#############################################################################################*++++++++++++++**********##################*******************************************************+++++++++++++++++++##################*+++======================================================+++++++++++++++++++++++++++++++********************************************************************************************########********###***##*##***+=========================================================================================+++++++++++++++++++++++++=+++++++*#####**********##*#####%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%##%##%#############################################################################################*******************************############################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###################%%%%%%%%%####*******++++++============++**********#%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%##########################################################################################################################################################################################%%@@@@@@@@@@@@@@@@@@@@@%%########%%%%%%%%%%%%%%%%%%%%%%%%##################################################################################################################################################################################################################################################################################################################################################################################################################################################********####################################################################################################################################################################################
**********************************************************************************************************##########################################################********************************************************************************************************************************************************************************************************************************************************************+++++++++++++++++++++**********************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##****************************************************+++=--::::::::::::::::::::::::::::::::::-####################################%%#######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#########################################################****************+++++++++++++++++++++++++++++++++++++++++++++++++++==================================================+==++++=============================================================================================================+**********+++*#################***********#########*****************************************************#**********+++--*####################################################################################################%%%%%%%%###########################################################################################################################################################=:::::::::::::::-------:::::::::::::::::+++++++++++++++++++===========================+++++++++++++++++++++++++++++++++++++++++++=++++++++++++++************###*++++++++*****************************************************************************+++++++*##############################################################################################*+++++++++++++**********##################*******************************************************++++++++++++++++++++*#################*+++======================================================+++++++++++++++++++++++++++++++********************************************************************************************########********#**###**#**#*+==========================================================================================++++++++++++++++++++++++++++++++**##**************#*####%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%##################################################################################################*********************************###########**###########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########################%%%%%%%%%####*******++++++============+++*********#%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%##########################################################################################################################################################################################%%@@@@@@@@@@@@@@@@@@@@@%%#########%%%%%%%%%################################################################################################################################################################################################################################################################################################################################################################################################################################################################********####################################################################################################################################################################################
***********************************************************************************************************##########################################################******************************************************************************************************************************************************************************************************************************************************************++++++++++++++++++++++**********************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#**************************************************+++=--:::::::::::::::::::::::::::::::::::-###################################%%#######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###########################################################***************++++++++++++++++++++++++++++++++++++++++++++++++++++=====================================================+++==============================================================================================================+**********+++*#################**********##########***************************************************##**********+++-=######################################################################################################%%%%%%%###########################################################################################################################################################*::::::::::::::::----:::::::::::::::::::=+++++++++++++++++++===========================++++++++++++++++++++++++++++++++++++++++++++++==++++++++++************##*++++++++****************************************************************************+++++++###############################################################################################*+++++++++++++***********#################*******************************************************+++++++++++++++++++++*#################*++++=====================================================+++++++++++++++++++++++++++++++*************************************************************************************************************##***##*#**+===========================================================================================+++++++++++++++++++++++++++++++*******************######%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%##################################################################################################*********************************############*########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###############################%%%%%%%%%####*******++++++=======--===+++*********#%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#########################################################################################################################################################################################%%@@@@@@@@@@@@@@@@@@@@@@@%##################################################################################################################################################################################################################################################################################################################################################################################################################################################################################********####################################################################################################################################################################################
************************************************************************************************************############################################################*********************************************************************************************************************************************************************+*****************************************************************************************++++++++++++++++++++++**********************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#************************************************+++=--::::::::::::::::::::::::::::::::::::-##################################%%#######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#############################################################**************++++++++++++++++++++++++++++++++++++++++++++++++++++++===================================================++*===============================================================================================================+***********++*#################**********##########*************************************************##***********+++=*######################################################################################################%%%%%%%############################################################################################################################################################=::::::::::::::::---:::::::::::::::::::-+++++++++++++++++++============================++++++++++++++++++++++++++++++++++++++++++++++==+++++++++++***********#*++++++++****************************************************************************++++++*###############################################################################################*++++++++++++***********#################*******************************************************++++++++++++++++++++++*#################*++++======================================================++++++++++++++++++++++++++++++*************************************************************************************************************###*##*#*+=============================================================================================+++++++=++++++++++++++++=+++=+********************######%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%################################################################################################**********************************#####################%%%%%%%%%%%%%%%%%%%%%%%%%%%##################################################%%%%%%%%####*******++++++=====----====++*********#%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#########################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@%%#################################################################################################################################################################################################################################################################################################################################################################################################################################################################################********####################################################################################################################################################################################
************************************************************************************************************#############################################################********************************************************************************************************************************************************************+*****************************************************************************************++++++++++++++++++++++*********************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#*********************************************++++=--:::::::::::::::::::::::::::::::::::::-*################################%%#######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###############################################################*************++++++++++++++++++++++++++++++++++++++++++++++++++++++===================================================++*+===============================================================================================================+***********++*#################*********###########************************************************#************++++#######################################################################################################%%%%%%%%############################################################################################################################################################:::::::::::::::::::::::::::::::::::::::+++++++++++++++++++=============================+++++++++++++++++++++++++++++++++++++++++++++====++++++++++++********#*+++++++****************************************************************************++++++*###############################################################################################*++++++++++++***********#################*******************************************************+++++++++++++++++++++++*#################*++++======================================================++++++++++++++++++++++++++++++************************************************************************************************************#**##*##*+==============================================================================================++++++==+++++++++++++++++++=+*********************#####%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%###%###########################################################################################***********************************#####################%%%%%%%%%%%%%%%%%%%%%########################################################%%%%%%%%#####******++++++=====-----===++*********%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%########################################################################################################################################################################################%%@@@@@@@@@@@@@@@@@@@@@@@@@%#################################################################################################################################################################################################################################################################################################################################################################################################################################################################################********####################################################################################################################################################################################
************************************************************************************************************###############################################################******************************************************************************************************************************************************************++****************************************************************************************+++++++++++++++++++++++********************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#*******************************************++++=--::::::::::::::::::::::::::::::::::::::-*###############################%%#######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@%@@@@@@@@%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%################################################################************+++++++++++++++++++++++++++++++++++++++++++++++++++++++==================================================++*+================================================================================================================+************+*##################******#############**********************************************##***********++++*#######################################################################################################%%%%%%%%%##########################################################################################################################################################%+::::::::::::::::::::::::::::::::::::::=+++++++++++++++++++============================++++++++++++++++++++++++++++++++++++++++++++++=====++++++++++++++******+++++++***************************************************************************++++++*#*##############################################################################################++++++++++++************################******************************************************++++++++++++++++++++++++++##################++++======================================================++++++++++++++++++++++++++++++************************************************************************************************************###*##**================================================================================================++++++==++++++++++++++++++++**********************#####%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%###%###########################################################################################**********************************######################%%%%%%%%%%%%%%%%#############################################################%%%%%%%%#####*******+++++====------===++*********%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%########################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@%%################################################################################################################################################################################################################################################################################################################################################################################################################################################################################*********###################################################################################################################################################################################
*************************************************************************************************++*********#################################################################*************************************************************************************************************************************************************+++++***************************************************************************************++++++++++++++++++++++++********************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##****************************************++++=--::::::::::::::::::::::::::::::::::::::::*##############################%%#######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@%@@@@@@@@%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#################################################################************+*+++++++++++++++++++++++++++++++++++++++++++++++++++++==================================================+++*+================================================================================================================++***********+**#################****##############*********************************************##************+++*#########################################################################################################%%%%%%%%#########################################################################################################################################################%##-:::::::::::::::::::::::::::::::::::::-+++++++++++++++++++=============================+++++++++++++++++++++++++++++++++++++++++++++=======+++++++++++++++***+++++++**************************************************************************++++++*################################################################################################*+++++++++++************################******************************************************+++++++++++++++++++++++++++##################++++======================================================+++++++++++++++++++++++++++++++************************************************************************************************************#**#*+=================================================================================================+++++===++++++++++++++++++***********************##*###%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%###%###########################################################################################*********************************#######################%%%%%%%%%%###################################################################%%%%%%%%#####*******+++++====------===++********#%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@########################################################################################################################################################################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@%################################################################################################################################################################################################################################################################################################################################################################################################################################################################################*********###################################################################################################################################################################################
*************************************************************************************************+++++******##################################################################************************************************************************************************************************************************************+++++***************************************************************************************++++++++++++++++++++++++********************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#**************************************++++=--:::::::::::::::::::::::::::::::::::::::::+#############################%%#######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@%@@@@@@@@%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#################################################################************+*+++++++++++++++++++++++++++++++++++++++++++++++++++++==================================================+++*+==================================================================================================================+*************##################*#################********************************************#************+*++*#########################################################################################################%%%%%%%%%###########################################################################################################################################################*:::::::::::::::::::::::::::::::::::::-+++++++++++++++++++=============================++++++++++++++++++++++++++++++++++++++++++++++=========+++++++++++++**+++++++**************************************************************************+++++*#*###############################################################################################+++++++++++************################******************************************************++++++++++++++++++++++++++++##################++++======================================================+++++++++++++++++++++++++++++++***********************************************************************************************************#*##*+==================================================================================================+++++===+++++++++++++++++************************######%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%###%###########################################################################################*********************************#########%##############%%%%%%###################************#######################################%%%%%%%%#####*******+++++===-------===++********#%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#######################################################################################################################################################################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%###############################################################################################################################################################################################################################################################################################################################################################################################################################################################################*********###################################################################################################################################################################################
**********************************************************************************************+++++++********#################################################################************************************************************************************************************************************************************+++++***************************************************************************************++++++++++++++++++++++++********************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#*************************************+++=--::::::::::::::::::::::::::::::::::::::::::+############################%%#######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@%@@@@@@@@%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####################################################################*************++++++++++++++++++++++++++++++++++++++++++++++++++++++=================================================+++**===================================================================================================================+*************####################################******************************************#************+*++*##########################################################################################################%%%%%%%%%############################################################################################################################################################=:::::::::::::::::::::::::::::::::::::=+++++++++++++++++++==============================+++++++++++++++++++++++++++++++++++++++++++++==========+++++++++++++*++++++*************************************************************************+++++*#################################################################################################*+++++++++++***********################*****************************************************++++++++++++++++++++++++++++++*#################+++++======================================================++++++++++++++++++++++++++++++****************************************************************************************************##*##*#****+====================================================================================================+++++====+++++++=+=++++************************#*####%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#%%###########################################################################################**********************************#######%%%%%#################################******************#####################################%%%%%%%%#####*******+++++===-------===++********#%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#######################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%###############################################################################################################################################################################################################################################################################################################################################################################################################################################################################*********###################################################################################################################################################################################
*********************************************************************************************+++++++++*******#################################################################************************************************************************************************************************************************************+++++***************************************************************************************++++++++++++++++++++++++********************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##**********************************+++=--:::::::::::::::::::::::::::::::::::::::::::=###########################%%#######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@%@@@@@@@@%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####################################################################*************+++++++++++++++++++++++++++++++++++++++++++++++++++++=================================================+++**+===================================================================================================================+*************####################################****************************************##***************+*############################################################################################################%%%%%%%#############################################################################################################################################################-::::::::::::::::::::::::::::::::::::-+++++++++++++++++++==============================++=+==++++++++++++++++++++++++++++++++++++++++=--========++++++++++++++++++************************************************************************+++++*#*###############################################################################################*++++++++++***********#################*****************************************************+++++++++++++++++++++++++++++++*#################+++++======================================================++++++++++++++++++++++++++++++***************************************************************************************************#***##**#*++======================================================================================================++++===+++++++=+=++++*************************#*####%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#%%##########################################################################################**********************************######%%%%%%%##########################*************************#####################################%%%%%%%%#####*******+++++===-------===++********#%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@######################################################################################################################################################################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%##############################################################################################################################################################################################################################################################################################################################################################################################################################################################################*********###################################################################################################################################################################################
*********************************************************************************************+++++++++*******##################################################################***********************************************************************************************************************************************************+++++***************************************************************************************+++++++++++++++++++++++*********************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#********************************+++=--::::::::::::::::::::::::::::::::::::::::::::-*%########################%%#######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@%@@@@@@@@%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######################################################################************+++++++++++++++++++++++++++++++++++++++++++++++++++++=================================================++++*+====================================================================================================================+*************####################################***************************************#***************+*#############################################################################################################%%#%%%%############################################################################################################################################################%+::::::::::::::::::::::::::::::::::::-++++++++++++++++++++====================================++++++++++++++++++++++++++++++++++++++++=------=====++++++++++++++++***********************************************************************+++++*#*################################################################################################*+++++++++***********#################***************************************************++++++++++++++++++++++++++++++++++*#################+++++======================================================+++++++++++++++++++++++++++++++****************************************************************************************************##***#*+=========================================================================================================++===++++++++++++++**************************#*####%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%##%##########################################################################################**********************************######%%%%%%#####################********************************####################################%%%%%%%%#####*******+++++===-------===++********#%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%######################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%##############################################################################################################################################################################################################################################################################################################################################################################################################################################################################*********###################################################################################################################################################################################
****************************************************************++++++++++++++++************++++++++++*******##################################################################***********************************************************************************************************************************************************+++++***************************************************************************************+++++++++++++++++++++++*********************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#******************************+++=--:::::::::::::::::::::::::::::::::::::::::::::-+########################%%#######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@%@@@@@@@@%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######################################################################***********+++++++++++++++++++++++++++++++++++++++++++++++++++++=================================================++++**======================================================================================================================+***********#####################################*************************************#****************+##############################################################################################################%%#%%%%###########################################################################################################################################################%##-::::::::::::::::::::::::::::::::::::=+++++++++++++++++++========================================+++++++++++++++++++++++++++++++++++++=------=====+++++++++*++++++*********************************************************************+++++*#*#*###############################################################################################+++++++++***********#################**************************************************+++++++++++++++++++++++++++++++++++++#################++++++=====================================================+++++++++++++++++++++++++++++++****************************************************************************************************##****+===============================================================================================================+++++++++=+++*************************########%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%##%##########################################################################################**********************************###################****#####*************************************#####################################%%%%%%%#####*******+++++===-------==+++********%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#####################################################################################################################################################################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#############################################################################################################################################################################################################################################################################################################################################################################################################################################################################**********##################################################################################################################################################################################
*************************************************************+++++++++++++++++++++++++++++++++++++++++*******###################################################################**********************************************************************************************************************************************************+++++***************************************************************************************+++++++++++++++++++++++*********************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#***************************+++=--:::::::::::::::::::::::::::::::::::::::::::::::=#######################%%#######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#########################################################################***********+++++++++++++++++++++++++++++++++++++++++++++++++++++================================================++++**+======================================================================================================================+***********#####################################***********************************##+****************##############################################################################################################%%#%%%%########################################################################################################################################################%####%*:::::::::::::::::::::::::.::::::::::-+++++++++++++++++++==========================================+++++++++++++++++++++++++++++++++++==------=====+++++++++++++++********************************************************************+++++*#*#*###############################################################################################*++++++++***********#################**************************************************++++++++++++++++++++++++++++++++++++++#################++++++=====================================================+++++++++++++++++++++++++++++++**************************************************************************************************##*****+===========================================================================================================++===+++++++++++++*************************########%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%#%#########################################################################################***********************************##################************************************************####################################%%%%%%%#####********++++===-------==+++********%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#####################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#############################################################################################################################################################################################################################################################################################################################################################################################################################################################################**********##################################################################################################################################################################################
************************************************************++++++++++++++++++++++++++++++++++++++++++*******####################################################################*********************************************************************************************************************************************************+++++***************************************************************************************++++++++++++++++++++++**********************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##************************+++=--::::::::::::::::::::::::::::::::::::::::::::::::-*#####################%%#######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#########################################################################***********+++++++++++++++++++++++++++++++++++++++++++++++++++++================================================++++**+=======================================================================================================================+***********####################################**********************************##***************+*###############################################################################################################%%%%%%%############################################################################################################################################################%##=:::::::::::::::::::::::...:::::::::-++++++++++++++++++++==========================================++++++++++++++++++++++++++++++++++++=------=====++++++++++++++***********************+++++****************************************++++##*#################################################################################################*+++++++************#################*************************************************++++++++++++++++++++++++++++++++++++++++*################*+++++=====================================================++++++++++++++++++++++++++++++++*************************************************************************************************#*##*++============================================================================================================++++=+++++++++=++*************************#########%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%##########################################################################################*************************************###############**************************************************####################################%%%%%%%#####********++++===-------==++*********%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%####################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%############################################################################################################################################################################################################################################################################################################################################################################################################################################################################**********##################################################################################################################################################################################
***********************************************************+++++++++++++++++++++++++++++++++++++++++++*******#####################################################################********************************************************************************************************************************************************+++++**************************************************************************************+++++++++++++++++++++++**********************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#**********************+++=--::::::::::::::::::::::::::::::::::::::::::::::::::+#%##################%%#######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##########################################################################***********+++++++++++++++++++++++++++++++++++++++++++++++++++++===============================================++++***========================================================================================================================+**********#####################################*********************************#******************################################################################################################################%%%#%%##############################################################################################################################################################%*:::::::::::::::::::::::....:::::::::=+++++++++++++++++++==============+=======================+===+++++++++++++++++++++++++++++++++++++=------====+++++++++++++++**********************+++++***************************************+++**####################################################################################################+++++++************#################*************************************************+++++++++++++++++++++++++++++++++++++++++*################*+++++=====================================================+++++++++++++++++++++++++++++++++*************************************************************************************************#**+=============================================================================================================+++++++++++++++++*************************##########%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#########################################################################################**************************************############*****************************************************####################################%%%%%%%#####********++++===-------==++********#%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%####################################################################################################################################################################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%###########################################################################################################################################################################################################################################################################################################################################################################################################################################################################***********##################################################################################################################################################################################
***********************************************************+++++++++++++++++++++++++++++++++++++++++++*******#######################################################################******************************************************************************************************************************************************+++++*************************************************************************************++++++++++++++++++++++++**********************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#*******************+++=--:::::::::::::::::::::::::::::::::::::::::::::::::::=###################%%#######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#########################################################################***********++++++++++++++++++++++++++++++++++++++++++++++++++++++===============================================+++***+========================================================================================================================+*********######################################*******************************##+****************#################################################################################################################%%%#%%########################################################################################################################################################%##%####=::::::::::::::::::::::....:::::::::=+++++++++++++++++++==============++======================+====+++++++++++++++++++++++++++++++++++++=------=====+++++++++++++***********************++++**************************************+++**####################################################################################################*+++++++***********#################*************************************************++++++++++++++++++++++++++++++++++++++++++*################*+++++======================================================++++++++++++++++++++++++++++++++*************************************************************************************************#*+==============================================================================================================++++++++++++++++*************************###########%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#########################################################################################****************************************######*********************************************************####################################%%%%%%%%####********++++====------==++********#%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%####################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%##########################################################################################################################################################################################################################################################################################################################################################################################################################################################################***********##################################################################################################################################################################################
***********************************************************+++++++++++++++++++++++++++++++++++++++++++*******#########################################################################****************************************************************************************************************************************************+++++************************************************************************************+++++++++++++++++++++++++***********************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##****************+++=--::::::::::::::::::::::::::::::::::::::::::::::::::::-#################%%%######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##########################################################################**********++++++++++++++++++++++++++++++++++++++++++++++++++++++===============================================+++***+========================================================================================================================++*********######################################***************************+**#*****************##################################################################################################################%%##%%%##############################################################################################################################################################%*:::::::::::::::::::::.......:::::::-++++++++++++++++++++==============*===============================++==++++++++++++++++++++++++++++++=-:----====+++++++++++++*************************+**************************************+++**#####################################################################################################+++++++***********#################**************************************************+++++++++++++++++++++++++++++++++++++++++++#################+++++======================================================++++++++++++++++++++++++++++++++**********************************************************************************************#*#*+=============================================================================================================+++++++++++++++++**************************##########%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#%######################################################################################*******************************************************************************************************#####################################%%%%%%%%####********++++====------==++********#%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%###################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%##########################################################################################################################################################################################################################################################################################################################################################################################################################################################################************#################################################################################################################################################################################
***********************************************************+++++++++++++++++++++++++++++++++++++++++++*******############################################################################*************************************************************************************************************************************************+++++************************************************************************************+++++++++++++++++++++++++***********************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##************++++==-:::::::::::::::::::::::::::::::::::::::::::::::::::::=#####%##########%%%######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%############################################################################*********+++++++++++++++++++++++++++++++++++++++++++++++++++++++==============================================++++***=========================================================================================================================+*********######################################***********************+*+*+*#******************###################################################################################################################%%#%%%###############################################################################################################################################################%=::::::::::::::::::::.......::::::::++++++++++++++++++++==============++==============================+==++++++++++++++++++++++++++++++++=-:-----====+++++++++++****************************************************************++***####################################################################################################*+++++++**********#################*************************************************+++++++++++++++++++++++++++++++++++++++++++++#################+++++======================================================+++++++++++++++++++++++++++++++++******************************************************************************************#***#*+==============================================================================================================+++++++++++=++++***************************##########%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#%#####################################################################################********************************************************************************************************######################################%%%%%%#####********++++====------==++********#%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%####################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#########################################################################################################################################################################################################################################################################################################################################################################################################################################################################************#################################################################################################################################################################################
**********************************************************++++++++++++++++++++**++++++++++++++++++++++*******##############################################################################************************************************************************************************************************************************++++***********************************************************************************++++++++++++++++++++++++++***********************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##**********+++=--::::::::::::::::::::::::::::::::::::::::::::::::::::::=#####%#########%%%######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%############################################################################**********++++++++++++++++++++++++++++++++++++++++++++++++++++++==============================================++++***+=========================================================================================================================**********######################################***********************+***#*+****************####################################################################################################################%%%%%%###############################################################################################################################################################%#:::::::::::::::::::.........:::::::=++++++++++++++++++++==============++================================++++++++++++++++++++++++++++++++++-:-----=======+++++++**************************************************************+++*#######################################################################################################+++++++**********#################***********************************#######*******++++++++++++++++++++++++++++++++++++++++++++++#################+++++======================================================+++++++++++++++++++++++++++++++++++******************************************************************************************#*++================================================================================================================++++++++=+++=+****************************##########%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#%#%###################################################################*************###*********************************************************************************************************#####################################%%%%%%#####********+++++===------==++********#%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%###################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#########################################################################################################################################################################################################################################################################################################################################################################################################################################################################************#################################################################################################################################################################################
***********************************************************+++++++++++++++++*******+++++++++++++++++++*******################################################################################****************************************************************************************************************************++****************++++***********************************************************************************++++++++++++++++++++++++++***********************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##******++++=--:::::::::::::::::::::::::::::::::::::::::::::::::::::::=#%###%########%%%######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###################%%%%%%%%%###############################################*********+++++++++++++++++++++++++++++++++++++++++++++++++++++++=============================================++++***+=========================================================================================================================+**********######################################**********************+*+##+****************#####################################################################################################################%%%%%%################################################################################################################################################################%=:::::::::::::::::..........:::::::-++++++++++++++++++++===============++=================================+++++++++++++++++++++++++++++++++-:::---=========++++**************************************************************++*#######################################################################################################*+++++++********##################***********************************#########*****+++++++++++++++++++++++++++++++++++++++++++++++#################++++++=====================================================+++++++++++++++++++++++++++++++++++++***************************************************************************************#*+================================================================================================================+=+++++++++++++*****************************##########%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#%#%###################################################***************************#####*********************************************************************************************************#####################################%%%%%%#####********+++++===------==++********#%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%####################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#########################################################################################################################################################################################################################################################################################################################################################################################################################################################################************#################################################################################################################################################################################
*************************************************************+++++++++++++++*********+++++**++++++++++*******#################################################################################***************************************************************************************************************************++*****************++************************************************************************************+++++++++++++++++++++++++************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##****+++=--::::::::::::::::::::::::::::::::::::::::::::::::::::::::-#%###########%%%####%#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###############%%%%%%%%%%%%%%%###############################################*********+++++++++++++++++++++++++++++++++++++++++++++++++++++++============================================+++++***==========================================================================================================================+**********######################################********************+*+*#*+**********+*****######################################################################################################################%%#%%%#################################################################################################################################################################::::::::::::::::...........:::::::-++++++++++++++++++++================+============================+====++++++++++++++++++++++++++++++++++-:::----==========++************************************************************++*#######################################################################################################*++++++*********##################***********************************###########**+++++++++++++++++++++++++++++++++++++++++++++++++*################++++++=====================================================++++++++++++++++=======+++++++++++++++++++++++**++++********************+++**************************************************+================================================================================================================++++++++++++=++******************************##########%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%##################################################********************************#####*********************************************************************************************************#####################################%%%%%%#####********+++++===------==++********#%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%####################################################################################################################################################################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#########################################################################################################################################################################################################################################################################################################################################################################################################################################################################***********#################################################################################################################################################################################
************************************************************************++*******************++++++*++*******###################################################################################**************************************************************************************************************************+******************+************************************************************************************+++++++++++++++++++++++++************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##**++==-:::::::::::::::::::::::::::::::::::::::::::::::::::::::::-*%%%########%%%####%#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###########%%%%%%%%%%%%%%%%%%%###############################################*********++++++++++++++++++++++++++++++++++++++++++++++++++++++++===========================================+++++***+=========================================================================================================================+************#####################################***************++++++*#*+*+**************#######################################################################################################################%%%%%%%################################################################################################################################################################=:::::::::::::::.............::::::+++++++++++++++++++++================+======================+====+=====++++++++++++++++++++++++++++++++++-::::---==========+**********************************************************+++*########################################################################################################*+++++*********##################************************************###%%%%####**+++++++++++++++++++++++++++++++++++++++++++++++++*################++++++=====================================================+++++++++++++============++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***************************************+================================================================================================================+++++++++++++++*******************************##########%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%##%########################%####################***********************************####**********************************************************************************************************####################################%%%%%%#####********+++++===------==++********#%@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%#####################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#########################################################################################################################################################################################################################################################################################################################################################################################################################################################################***********#################################################################################################################################################################################
*********************************************************************************************++++++*++*******####################################################################################*************************************************************************************************************************+******************+************************************************************************************+++++++++++++++++++++++++************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##*+=-:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::*#%########%@%####%#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###################################################********++++++++++++++++++++++++++++++++++++++++++++++++++++++++===========================================+++++***+==========================================================================================================================+*************###################################******++++++++*++++++*#+**++*******+****########################################################################################################################%%%%%%%#############################################################################################################################################################%##*::::::::::::::...............:::::=++++++++++++++++++++=================+==================++++++========+++++++++++++++++++++++++++++++++++-::::-===========+**********************************************************+**#*#######################################################################################################++++++********##################*************************************#%%%%%%%%###*++++++++++++++++++++++++++++++++++++++++++++++++++################++++++======================================================++++++++++================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***************+================================================================================================================++++++++++++++**********************************#########%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%##%#######################%%%%%%%##############*************************************###******************************************************************************************************************************#################%%%%%#####********+++++===------==++********#%@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%#######################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%########################################################################################################################################################################################################################################################################################################################################################################################################################################################################***********#################################################################################################################################################################################
*********************************************************************************************++++++*++*******####################################################################################********************************************************************************************************************************************+************************************************************************************+++++++++++++++++++++++++************************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##*=-::::::::::::::::::::::::::::::::::::::::::::::::::::::::::+#%#######%@%#%%###%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#%%%%%%%%%%%%%%%##############################################################*********+++++++++++++++++++++++++++++++++++++++++++++++++++++++===========================================+++++***+===========================================================================================================================+**************##################################*****++++++++*+++++*#*++++++******+****#########################################################################################################################%%%%%%#################################################################################################################################################################-::::::::::::.................::::-++++++++++++++++++++====================================++++++++===+==++++++++++++++++++++++++++++++++++++-:::============+*********************************************************+**#*#######################################################################################################*++*+*********##################*************************************##%%%%%%%%%##*++++++++++++++++++++++++++++++++++++++++++++++++++################++++++======================================================++++++++===================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******+=================================================================================================================+++++++++++++***********************************#########%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%##%#######################%%%%%%%%##%##########************************************************************************************************************************************************************************###############%%%%%#####********+++++===------==++********#%@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%#########################################################################################################################################################################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%########################################################################################################################################################################################################################################################################################################################################################################################################################################################################************################################################################################################################################################################################
************************************************************************************************++++++******######################################################################################********************************************************************************************************************************************************************************************************************************++++++++++++++++++++++++************************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##*+-::::::::::::::::::::::::::::::::::::::::::::::::::::::::-#%######%%%%#%####%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###################################################################*********+++++++++++++++++++++++++++++++++++++++++++++++++++++++==========================================+++++****============================================================================================================================+***************################################****+**++++++++++++#*+++*++++*********###########################################################################################################################%%%%%############################################################################################################################################################%###%+:::::::::::::.................::::+++++++++++++++++++++====================================++++++=========+++++++++++++++++++++++++++++++++++================+*******************************************************+**##########################################################################################################**+*********###################**************************************#%%%%%%%%%%##*++++++++++++++++++++++++++++++++++++++++++++++++++################+++++++=====================================================+++++++======================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**+*++=============================================================================================================+===++++++=+++++***************************************#######%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%##########################%%#%%%%%%%###########**************************************************************************************************************************************************************************#############%%%%%#####********+++++===------==++********%%@@@@@@@@@@@@@@@@@@@@@@@%%################################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@########################################################################################################################################################################################################################################################################################################################################################################################################################################################################************################################################################################################################################################################################
************************************************************************************************+++*++******######################################################################################********************************************************************************************************************************************************************************************************************************++++++++++++++++++++++++************************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###*+-::::::::::::::::::::::::::::::::::::::::::::::::::::::+#%###%%%%%#%%%#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####################%%%%%%##******#####################################********++++++++++++++++++++++++++++++++++++++++++++++++++++++++=========================================+++++***++============================================================================================================================+****************###############################***++++++++++++++*#*+++++++++++++****###########################################################################################################################%%%#%%#################################################################################################################################################################:::::::::::::.................::::+++++++++++++++++++++=====================================++++++=++=====++++++++++++++++++++++++++++++++++++===============+*********************************************************###########################################################################################################***********###################***************************************#%%%%%%%%%%##*++++++++++++++++++++++++++++++++++++++++++++++++++*###############+++++++=====================================================+++++++======================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**+================================================================================================================++==+++++++=++*********************************************##%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%##########################%%%%%%%%%%%##########****************************************************************************************************************************************************************************###########%%%%######********+++++===------==++********%%@@@@@@@@@@@@@@@@@@@@@@@%#**********#####################################################################################################################################################################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#######################################################################################################################################################################################################################################################################################################################################################################################################################################################################************################################################################################################################################################################################
************************************************************************************************+++*++******######################################################################################********************************************************************************************************************************************************************************************************************************+++++++++++++++++++++++*************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##########*=-:::::::::::::::::::::::::::::::::::::::::::::::::::-*#%##%@%%#%%##%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%################################################*******++++++++++++++++++++++++++++++++++++++++++++++++++++++++========================================++++++*+++=============================================================================================================================+*****************##############################***++++++++++++*#*+++++++++++++++**#############################################################################################################################%%#%%%###############################################################################################################################################################%=:::::::::::....................::=+++++++++++++++++++++========+===========================+++++++++++====++++++++++++++++++++++++++++++++++++==============+********************************************************###########################################################################################################***********###################****************************************#%%%%%%%%%%##*++++++++++++++++++++++++++++++++++++++++++++++++++*###############+++++++======================================================+++++=======================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==================================================================================================================++++++=+==++***********************************************#%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%##########################%%%%%%%%%%%##########******************************************************************************************************************************************************************************#########%%%%######********+++++===------==++*******#%%@@@@@@@@@@@@@@@@@@@@@@@%************####################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#######################################################################################################################################################################################################################################################################################################################################################################################################################################################################************################################################################################################################################################################################
*************************************************************************************************++**+******######################################################################################********************************************************************************************************************************************************************************************************************************+++++++++++++++++++++++*************************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#############++-:::::::::::::::::::::::::::::::::::::::::::::::::-*##%@%%#%%##%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###################*****########################*******+++++++++++++++++++++++++++++++++++++++++++++++++++++++++=======================================++++++*++*==============================================================================================================================+*******************#******************####*###****+++++++++++**+++++++++++++++**################################################################################################################################%%%%###############################################################################################################################################################%*::::::::::......................:-+++++++++++++++++++++========+============================+++++++++++===+++++++++++++++++++++++++++++++++++++=============++******************************************************############################################################################################################**********###################******************************************%%%@@%%%%%##+++++++++++++++++++++++++++++++++++++++++++++++++++*###############*++++++======================================================+++++=======================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*+===================================================================================================================++===++=++*************************************************##%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%###########################%%%%%%%%############*******************************************************************************************************************************************************************************#########%%#######********+++++====-----==++*******#%%@@@@@@@@@@@@@@@@@@@@@@@#*************###################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#######################################################################################################################################################################################################################################################################################################################################################################################################################################################################************################################################################################################################################################################################
*************************************************************************************************+**********######################################################################################*********************************************************************************************************************************************************************************************************************************++++++++++++++++++++++*************************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%################*+--:::::::::::::::::::::::::::::::::::::::::::::::=%%%%#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###################********#######################*******++++++++++++++++++++++++++++++++++++++++++++++++++++++++=======================================++++++*++*+==============================================================================================================================+***************************************************++++++++**+++++++++++++++***################################################################################################################################%%%##################################################################################################################################################################-:::::::.........................-+++++++++++++++++++++========++============================++++++++++++=+++++++++++++++++++++++++++++++++++++++===========++++***************************************************############################################################################################################**********##################********************************************#%%%@%%%%%#*+++++++++++++++++++++++++++++++++++++++++++++++++++*###############*+++++++=====================================================++++++======================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*++===================================================================================================================++++++++++**************************************************##%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%##############################################**********************************************************************************************************************************************************************************################********+++++====-----==++********%%%@@@@@@@@@@@@@@@@@@@@@%#************###################################################################################################################################################################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%######################################################################################################################################################################################################################################################################################################################################################################################################################################################################*************###############################################################################################################################################################################
************************************************************************************************************######################################################################################*********************************************************************************************************************************************************************************************************************************+++++++++++++++++++++*************************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####################*+=-:::::::::::::::::::::::::::::::::::::::::::-%%%%#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##################************######################*******++++++++++++++++++++++++++++++++++++++++++++++++++++++++======================================++++++*++*+===============================================================================================================================++***************************************************++++++**+++++++++++++++**##################################################################################################################################%%#############################################################################################################################################################%####=..:::.::........................:++++++++++++++++++++++========+============================+++++++++++++++++++++++++++++++++++++++++++++++++++++==========+++****************************************************############################################################################################################********###################*********************************************#%%%%%%%%%#*++++++++++++++++++++++++++++++++++++++++++++++++++++###############*+++++++=====================================================++++++++===================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**++===================================================================================================================+==++++++****************************************************##%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#############################################************************************************************************************************************************************************************************************###############********+++++====-----==++********%%%@@@@@@@@@@@@@@@@@@@@@%#***********####################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%######################################################################################################################################################################################################################################################################################################################################################################################################################################################################*************###############################################################################################################################################################################
************************************************************************************************************######################################################################################**********************************************************************************************************************************************************************************************************************************++++++++++++++++++++************************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######################*+=-:::::::::::::::::::::::::::::::::::::::-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###############******************####################*******++++++++++++++++++++++++++++++++++++++++++++++++++++++++======================================++++++*++**================================================================================================================================++***************************************************++++**+++++++++++++++***##################################################################################################################################%%##################################################################################################################################################################*:..:..::............. ..........=+++++++++++++++++++++========+=============================+++++++++++++++++++++++++++++++++++++++++++++++++++++=========+++*+**************************************************###########################################################################################################********###################***********************************************%%%%%%%%%#+++++++++++++++++++++++++++++++++++++++++++++++++++++################+++++++=====================================================+++++++++++===============+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**++==================================================================================================================+++++==+++*****************************************************##%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%##########################################****************************************************************************************************************************************************************************************##############*********+++++===-----===++*******#%%@@@@@@@@@@@@@@@@@@@@@%***********####################################################################################################################################################################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%######################################################################################################################################################################################################################################################################################################################################################################################################################################################################*************###############################################################################################################################################################################
************************************************************************************************************######################################################################################***********************************************************************************************************************************************************************************************************************************+++++++++++++++++++************************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*+++++++*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########################**+=-:::::::::::::::::::::::::::::::::-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###############*************************###################*******++++++++++++++++++++++++++++++++++++++++++++++++++++++++=====================================+++++++*+**=================================================================================================================================++***************************************************+++*++++++++++++++++**####################################################################################################################################%%#############################################################################################################################################################%##%#-:.::.:............. . .......=++++++++++++++++++++++=======++=============================+++++++++++++++++++++++++++++++++++++++++++++++++++++========+++*++**************************************************##########################################################################################################*******###################**********************************************+*%%%%%%%%%*+++++++++++++++++++++++++++++++++++++++++++++++++++++################+++++++=====================================================++++++++++++++++++=====++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****+===================================================================================================================++++==++*******************************************************#%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%########################################******************************************************************************************************************************************************************************************##############*********+++++===-----===++*******#%%@@@@@@@@@@@@@@@@@@@@@%**********#####################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#####################################################################################################################################################################################################################################################################################################################################################################################################################################################################*************###############################################################################################################################################################################
************************************************************************************************************######################################################################################***********************************************************************************************************************************************************************************************************************************++++++++++++++++++*************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##############################**+=-::::::::::::::::::::::::::::-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%%%%@%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##########################*****************+++++++++********#################******+++++++++++++++++++++++++++++++++++++++++++++++++++++++++====================================++++++++++*+=================================================================================================================================++**************************************************++**+++++++++++++++***####################################################################################################################################%###################################################################################################################################################################+::..::::........... .....-++++++++++++++++++++++========+==========================+===+++++++++++++++++++++++++++++++++++++++++++++++++++++=======++++++++*****************************************#******#########################################################################################################*******###################***********************************************+*#%%%%%%%#*+++++++++++++++++++++++++++++++++++++++++++++++++++++################+++++++======================================================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**+*=======================================================================================================================+=+++*******************************************************##%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%###****************##################*********************************************************************************************************************************************************************************************############**********+++++===-----===++*******#%%@@@@@@@@@@@@@@@@@@@@%#*********######################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#####################################################################################################################################################################################################################################################################################################################################################################################################################################################################*************###############################################################################################################################################################################
************************************************************************************************************######################################################################################************************************************************************************************************************************************************************************************************************************+++++++++++++++++*************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####################################**+=---::::::::::::::::::::-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##%##########################****************+++++++++++++********###############******++++++++++++++++++++++++++++++++++++++++++++++++++++++++====================================++++++++++*+==================================================================================================================================++****************************************************++++++++++++++++**#####################################################################################################################################%###################################################################################################################################################################*:::::..:........... .. :++++++++++++++++++++++========+=============================+=+++++++++++++++++++++++++++++++++++++++++++++++++++++======+++++++++***************************************##*******#######################################################################################################*******###################********************************************+*+++*#%%%%%%%#*+++++++++++++++++++++++++++++++++++++++++++++++++++++################+++++++======================================================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**+=================================================================================================================++=++==++*******************************************************####%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%##**********************#########*************************************************************************************************************************************************************************************************############***********++++===------==++*******#%%%@@@@@@@@@@@@@@@@@@@%#*******########################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#####################################################################################################################################################################################################################################################################################################################################################################################################################################################################*************###############################################################################################################################################################################
************************************************************************************************************######################################################################################*************************************************************************************************************************************************************************************************************************************+++++++++++++++*************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##########################################**++===--:::::::::::-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#############################****************++++++++++++++************###########******++++++++++++++++++++++++++++++++++++++++++++++++++++++++====================================+++++++++**====================================================================================================================================+**************************************************++++++++++++++++**######################################################################################################################################%####################################################################################################################################################################-::.::............. .+++++++++++++++++++++++=======================================+++++++++++++++++++++++++++++++++++++++++++++++++++++======++++++++++***************************************##******#######################################################################################################*****####################*********************************************++++++*#%%%%%%#++++++++++++++++++++++++++++++++++++++++++++++++++++++################+++++++======================================================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**+=================================================================================================================+=====+++*******************************************************#####%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%#*********************************************************************************************************************************************************************************************************************************###########************++++===------==++*******#%%%@@@@@@@@@@@@@@@@@@@%#*****#########################################################################################################################################################################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%####################################################################################################################################################################################################################################################################################################################################################################################################################################################################*************###############################################################################################################################################################################
***********************************************************************************************************#######################################################################################*************************************************************************************************************************************************************************************************************************************+++++++++++++++************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##################################################************%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@%%%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%############################**************+++++++++++++++++*************########*******++++++++++++++++++++++++++++++++++++++++++++++++++++++++===================================+++++++++**=====================================================================================================================================+*************************************************++++++++++++++++**######################################################################################################################################%%###################################################################################################################################################################=.:.::............. =++++++++++++++++++++++===================================+====+++++++++++++++++++++++++++++++++++++++++++++++++++++=====+++++++++++***************************************#*******#####################################################################################################*****###################**********************************************+++++++*#%%%%%##++++++++++++++++++++++++++++++++++++++++++++++++++++++################++++++++=====================================================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==================================================================================================================+=++=++*********************************************************#####%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@%**********************************************************************************************************************************************************************************************************************************#########**************++++===------==+++******#%%%@@@@@@@@@@@@@@@@@@%%*****##########################################################################################################################################################################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%####################################################################################################################################################################################################################################################################################################################################################################################################################################################################**************##############################################################################################################################################################################
***********************************************************************************************************#######################################################################################****************++********************************************************************************************************************************************************************************************************************+++++++++++++*************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#################################################%%%########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@%%%@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%############################****************++++++++++++++++++***************######*******++++++++++++++++++++++++++++++++++++++++++++++++++++++++==================================+++++++*+**+=====================================================================================================================================+************************************************+++++++++++++++**#*#####################################################################################################################################%%###################################################################################################################################################################*:.:::............. -+++++++++++++++++++++++===============++=================++====++++++++++++++++++++++++++++++++++++++++++++++++++++====+++++++++++++**************************************#*******#####################################################################################################****###################**********************************************++++++++*#%%%%%##++++++++++++++++++++++++++++++++++++++++++++++++++++++################++++++++=+===================================================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++====================================================================================================================++++***********************************************************#####%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%**********************************************************************************************************************************************************************************************************************************#########**************++++===------===++******#%%%%@@@@@@@@@@@@@@@@%%%****###########################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%####################################################################################################################################################################################################################################################################################################################################################################################################################################################################**************##############################################################################################################################################################################
***********************************************************************************************************######################################################################################***************+++++*******************************************************************************************************************************************************************************************************************+++++++++++++*************************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*+*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#########################################################%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@%%%@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####%%%%%%%%%%%%%%%%%###########################***************+++++++++++++++++++++******************##*******++++++++++++++++++++++++++++++++++++++++++++++++++++++++==================================++++*******+======================================================================================================================================+***********************************************+++++++++++++++*#**#####################################################################################################################################%#####################################################################################################################################################################:.:::............. :+++++++++++++++++++++++==============+++=================+++==++++++++++++++++++++++++++++++++++++++++++++++++++++=====++++++++++++++*************************************##*******###################################################################################################***####################*********************************************++++++++++**#%%%%##++++++++++++++++++++++++++++++++++++++++++++++++++++++################++++++++=+===================================================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=============================================================================================================+++====+=++************************************************************#####%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#***********************************************************************************************************************************************************************************************************************************#######****************+++===------===++******##%%%%%%@@@@@@@@@@@@%%%#****##########################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%####################################################################################################################################################################################################################################################################################################################################################################################################################################################################**************##############################################################################################################################################################################
***********************************************************************************************************######################################################################################**************++++++*******************************************************************************************************************************************************************************************************************+++++++++++++************************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*+++++#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###################################%###############%###%%%%%%%%%%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@%%%%@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########%%%%%%%%%%%%%%%%##########################*************++++++++++++++++++++++++*****************##********++++++++++++++++++++++++++++++++++++++++++++++++++++++++=================================++++********=======================================================================================================================================+*********************************************+++++++++++++++******##########################################################################################################################################################################################################################################################################################################=.:.::............. .++++++++++++++++++++++++========+====++++================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++=====+++++++++++++++*************************************##******##################################################################################################***###################**********************************************+++++++++++**#%%%%##++++++++++++++++++++++++++++++++++++++++++++++++++++++###############*++++++++======================================================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++================================================================================================================++==++=+**+***********************************************************#####%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#***********************************************************************************************************************************************************************************************************************************#######****************+++===------===++*******#%%%%%%%%%%@@@@%%%%%%%*****##########################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%####################################################################################################################################################################################################################################################################################################################################################################################################################################################################*************##############################################################################################################################################################################
***********************************************************************************************************######################################################################################**************++++++*******************************************************************************************************************************************************************************************************************+++++++++++++************************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##################################################%%#%%%#%%%%%%%%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##########%%%%%%%%%%%%%%###########################*************+++++++++++++++++++++++++************+++*##*********++++++++++++++++++++++++++++++++++++++++++++++++++++++++================================++*+********========================================================================================================================================+********************************************+++++++++++++++********########################################################################################################################################################################################################################################################################################################+...:.............. .++++++++++++++++++++++++========+====++++=================+++++++++++++++++++++++++++++++++++++++++++++++++++++++======++++++++++++++++*************************************#******#################################################################################################***###################**********************************************+++++++++++++*#%%%%##++++++++++++++++++++++++++++++++++++++++++++++++++++++###############*+++++*++======================================================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=================================================================================================================+++++++***************************************************************#####%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%************************************************************************************************************************************************************************************************************************************#######****************+++===-------==++********#%%%%%%%%%%%%%%%%%%##*****##########################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%####################################################################################################################################################################################################################################################################################################################################################################################################################################################################*************##############################################################################################################################################################################
***********************************************************************************************************######################################################################################*************++++++++******************************************************************************************************************************************************************************************************************++++++++++++*************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#################################################%%%%%%%%%%%%%%@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@%%@%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%############%%#%%%%%%%############################****************++++++++++++++++++++++++**********+++++*#**********+++++++++++++++++++++++++++++++++++++++++++++++++++++++================================+*++********+=======================================================================================================================================++******************************************+++++++++++++++*********########################################################################################################################################################################################################################################################################################################*::::.:............ =+++++++++++++++++++++++========++===+++++================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++=====++++++++++++++++************************************##******###############################################################################################**####################**********************************************++++++++++++++*#%%%%##++++++++++++++++++++++++++++++++++++++++++++++++++++++###############*++++***++=====================================================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*++=============================================================================================================++===+==++******************************************************************####%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#************************************************************************************************************************************************************************************************************************************#######****************+++===-------==++********###%%%%%%%%%%%%%%%%#*++***##########################################################################################################################################################################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%####################################################################################################################################################################################################################################################################################################################################################################################################################################################################**************#############################################################################################################################################################################
***********************************************************************************************************############################*########################################################**************++++++++******************************************************************************************************************************************************************************************************************++++++++++++************************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%################################################%%%%%%%%%%%%%%%%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%%%%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##########*##%%%%%%%%%%###########################****************+++++++++++++++++++++++++*******+++++++*#*+*********+++++++++++++++++++++++++++++++++++++++++++++++++++++++===============================+**+********+========================================================================================================================================++****************************************+++++++++++++++***********########################################################################################################################################################################################################################################################################################################-..:::............ =++++++++++++++++++++++++========++==+++++=================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++=====++++++++++++++++***********************************##******##############################################################################################**####################**********************************************++++++++++++++++#%%%%##++++++++++++++++++++++++++++++++++++++++++++++++++++++###############*+++*****+=====================================================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=========================================================================================================+==++=======++*+******************************************************************####%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#************************************************************************************************************************************************************************************************************************************#######****************++++==-------==++*********####%%%%%%%%%%%%##*+++***##########################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%####################################################################################################################################################################################################################################################################################################################################################################################################################################################################**************#############################################################################################################################################################################
***********************************************************************************************************###########################****######################################################**************++++++++******************************************************************************************************************************************************************************************************************+++++++++++*************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%############################################%%%%%%%%%%%%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%%%%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##########*####%%%%###############################****************+++++++++++++++++++++++++++***+++++++++*#*++*********+++++++++++++++++++++++++++++++++++++++++++++++++++++++==============================+**+********+==========================================================================================================================================+***********************************+*+++++++++++++++++************#######################################################################################################################################################################################################################################################################################################=..::............. :++++++++++++++++++++++++========++==++++++================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++======++++++++++++++++**********************************##*****###################################################################################################################**********************************************+++++++++++++++++#%%%%##++++++++++++++++++++++++++++++++++++++++++++++++++++++*##############+++******+======================================================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********+***++===========================================================================================================+=======++***********************************************************************###%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#*************************************************************************************************************************************************************************************************************************************#######*****************+++==-------===++*********#######%%%%%%###*++++***##########################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%####################################################################################################################################################################################################################################################################################################################################################################################################################################################################**************#############################################################################################################################################################################
***********************************************************************************************************##########################******#####################################################**************+++++++++*****************************************************************************************************************************************************************************************************************+++++++++++************************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*+**#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######################################%%%%%%%%%%%%%%%%%%%%%%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%@@@@@@@@@@@@@@@@@@@@@@@@@@%@%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###########***####################################****************++++++++++++++++++++++++++++++++++++++++**++++********++++++++++++++++++++++++++++++++++++++++++++++++++++++==============================++***********+==========================================================================================================================================+********************************+++++++=++++++++++++**************######################################################################################################################################################################################################################################################################################################+.::.............. .+++++++++++++++++++++++++========+===+++++================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=====++++++++++++++++**********************************##****#################################################################################################################**********************************************+++++++++++++++++++##%%%##++++++++++++++++++++++++++++++++++++++++++++++++++++++*##############++*******+======================================================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***************++===============================================================================================================++=+++**************************************************************************##%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%**************************************************************************************************************************************************************************************************************************************#######*****************+++===------===++***********#############*+++++***#########################################################################################################################################################################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%####################################################################################################################################################################################################################################################################################################################################################################################################################################################################***************############################################################################################################################################################################
***********************************************************************************************************##########################*******####################################################*************+++++++++++*******************************************************************************************++++*****************************************************************************************************************+++++++++++***********************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*++*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####################################%%%%%%%%%%%%%%%%%%%%%@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#############****##################################****************++++++++++++++++++++++++++++++++++++++++**++++**********+++++++++++++++++++++++++++++++++++++++++++++++++++++=============================++***********+===========================================================================================================================================+******************************+++*+=++++++++++++++****************#####################################################################################################################################################################################################################################################################################################*:::.............. .+++++++++++++++++++++++++========++==++++++============++=+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++====+++++++++++++++++**********************************##***################################################################################################################**********************************************++++++++++++++++++++##%%%##++++++++++++++++++++++++++++++++++++++++++++++++++++++*#############*+********+======================================================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****************++==============================================================================================================++=++++**+************************************************************************##%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#**************************************************************************************************************************************************************************************************************************************#######*****************+++===------===++********+++****######***+===++***#########################################################################################################################################################################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#####################################################################################################################################################################################################################################################################################################################################################################################################################################################################**************############################################################################################################################################################################
***********************************************************************************************************##########################*******####################################################*************+++++++++++******************************************************************************************++++++****************************************************************************************************************+++++++++++***********************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*+++#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##############################%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%%%%%@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###########********################################****************+*++++++++++++++++++++++++++++++++++++++***++++************++++++++++++++++++++++++++++++++++++++++++++++++++=============================+++**********+============================================================================================================================================+****************************+++*+=+++++++++++++++*****************#####################################################################################################################################################################################################################################################################################################-................ ++++++++++++++++++++++++++========+==+++++++============++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===+++++++++++++++++++********************************##****#############################################################################################################**********************************************++++++++++++++++++++++##%%%##++++++++++++++++++++++++++++++++++++++++++++++++++++++*#############**********+=======================================================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******************+=================================================================================================================++**++***************************************************************************#%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#**************************************************************************************************************************************************************************************************************************************#######*****************+++===-------==+++*******++++++********+==-==++***#########################################################################################################################################################################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%####################################################################################################################################################################################################################################################################################################################################################################################################################################################################**************############################################################################################################################################################################
***********************************************************************************************************#########################*********###################################################*************+++++++++++******************************************************************************************++++++****************************************************************************************************************++++++++++************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**+++*#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#############**********#############################****************+*++++++++++++++++++++++++++++++++++++++***++++*****************++++++++++++++++++++++++++++++++++++++++++++++============================+++**********+=============================================================================================================================================+**************************++++*+=+=++++++++++++*******************####################################################################################################################################################################################################################################################################################################=................ =+++++++++++++++++++++++++========++=+++++++==============+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==++++++++++++++++++++*************************************############################################################################################################*********************************************++++++++++++++++++++++++##%%%##*+++++++++++++++++++++++++++++++++++++++++++++++++++++*#############***********+======================================================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******************+=============================================================================================================+===++**+***+**+**********************************************************************#%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#***************************************************************************************************************************************************************************************************************************************#######*****************+++===-------===++*******++====+++++++==---==++***#########################################################################################################################################################################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%####################################################################################################################################################################################################################################################################################################################################################################################################################################################################**************############################################################################################################################################################################
***********************************************************************************************************#########################*********###################################################*************+++++++++++******************************************************************************************++++++****************************************************************************************************************++++++++++***********************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*++++*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###############***********###########################****************+*++++++++++++++++++++++++++++++++++++++***++++********************+++++++++++++++++++++++++++++++++++++++++++============================+++***********+=============================================================================================================================================+***********************+++++*+=++=+++++++++++*********************###################################################################################################################################################################################################################################################################################################+.::.............. =++++++++++++++++++++++++++========+=++++++++=============++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++************************************###########################################################################################################********************************************++++++++++++++++++++++++++##%%%%#*+++++++++++++++++++++++++++++++++++++++++++++++++++++*############************+======================================================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********************+================================================================================================================++**+******+************************************************************************#%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#***************************************************************************************************************************************************************************************************************************************#######*****************+++===-------===++*******++===---==--------==++***#########################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%####################################################################################################################################################################################################################################################################################################################################################################################################################################################################**************############################################################################################################################################################################
***********************************************************************************************************#########################**********#################################################**************++++++++++++++**************************************************************************************+++++++****************************************************************************************************************++++++++++**********************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*++++**%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####%%%%%%%%##%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###############**************#########################******************++++++++++++++++++++++++++++++++++++++***++++***********************+++++++++++++++++++++++++++++++++++++++++===========================++++***********==============================================================================================================================================+********************+++++++*++=++=+++++++=++**********************##################################################################################################################################################################################################################################################################################################*:.::............. -++++++++++++++++++++++++++========++=+++++++=============++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++************************************##########################################################################################################*******************************************++++++++++++++++++++++++++++*#%%%%#*++++++++++++++++++++++++++++++++++++++++++++++++++++++###########*************+=======================================================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********************+======================================================================================================+=++=====+++*******+****************************************************************************%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%****************************************************************************************************************************************************************************************************************************************########****************+++===--------==+++*****+++==--------------==++***#########################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%####################################################################################################################################################################################################################################################################################################################################################################################################################################################################**************############################################################################################################################################################################
***********************************************************************************************************#########################**********#################################################**************++++++++++++++++************************************************************************************+++++++****************************************************************************************************************+++++++++***********************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*+++++*#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##############*****************#######################******************++++++++++++++++++++++++++++++++++++++***++++**************************+++++++++++++++++++++++++++++++++++++++==========================++++***********+===============================================================================================================================================+******************++==++*++=+++=++==++=++***********************#################################################################################################################################################################################################################################################################################################%*::.:............. -+++++++++++++++++++++++++++========+=++++++++============+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***********************************########################################################################################################********************************************+++++++++++++++++++++++++++++*#%%%%#*++++++++++++++++++++++++++++++++++++++++++++++++++++++##########**************+=======================================================++++++++++++++++++++++++++++++++++++++++++++++++*+**************************************+==============================================================================================================++++*************************************************************************************%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#****************************************************************************************************************************************************************************************************************************************########****************+++===--------===++*****+++==--------------==++***#########################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#####################################################################################################################################################################################################################################################################################################################################################################################################################################################################*************############################################################################################################################################################################
**********************************************************************************************************##########################***********################################################*************++++++++++++++++++***********************************************************************************+++++++****************************************************************************************************************+++++++++**********************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*++++++*#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###############*******************######################****************+*++++++++++++++++++++++++++++++++++++++***++++*****************************++++++++++++++++++++++++++++++++++++==========================+++++***********================================================================================================================================================+*******************++++*+==+=+++===++=+************************###################################################################################################################################################################################################################################################################################################::.:............. -++++++++++++++++++++++++++++=======+++++++++++===========++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***********************************######################################################################################################*******************************************+++++++++++++++++++++++++++++++*#%%%%#*++++++++++++++++++++++++++++++++++++++++++++++++++++++#########***************+=+=====================================================+++++++++++++++++++++++++++++++++++++++++++********************************************+======================================================================================================+====+==+++***************************************************************************************#%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@%*****************************************************************************************************************************************************************************************************************************************########****************+++===--------===++*****++===--------------==++***#########################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#####################################################################################################################################################################################################################################################################################################################################################################################################################################################################*************############################################################################################################################################################################
**********************************************************************************************************##########################***********###############################################**************++++++++++++++++++++**********************************************************************************++++++****************************************************************************************************************++++++++**********************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*+++++++*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#############**********************######################***************++++++++++++++++++++++++++++++++++++++++****+++******************************+++++++++++++++++++++++++++++++++++++========================+++++***********+================================================================================================================================================++******************+++++++++=++=++++++************************###################################################################################################################################################################################################################################################################################################-..:............. :++++++++++++++++++++++++++++========++++++++++===========+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***********************************###################################################################################################*******************************************+++++++++++++++++++++++++++++++++*#%%%%#*++++++++++++++++++++++++++++++++++++++++++++++++++++++########*****************+++====================================================+++++++++++++++++++++++++++++++++*****************************************************+==========================================================================================================+===++**++++***********************************************************************************#%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@#*****************************************************************************************************************************************************************************************************************************************########*****************++===---------==+++****++===--------------==++***#########################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%######################################################################################################################################################################################################################################################################################################################################################################################################################################################################***********#############################################################################################################################################################################
**********************************************************************************************************#########################*************##############################################**************++++++++++++++++++++**********************************************************************************++++++****************************************************************************************************************++++++++**********************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*++++++++*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@%%%%%@%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###############***********************#####################***************+*++++++++++++++++++++++++++++++++++++++****++*********************************+++++++++++++++++++++++++++++++++++=========================++++************+===================+============================================================================================================================++*******************+=++==+=++=++=++**************************##################################################################################################################################################################################################################################################################################################=.::............. .+++++++++++++++++++++++++++++=======+++++++++++=========+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********************************##################################################################################################******************************************+++++++++++++++++++++++++++++++++++*#%%%%#*++++++++++++++++++++++++++++++++++++++++++++++++++++++########*****************+=====+================================================+++++++++++++++++++++*************************************************************+**+=============================================================================================================+++**+******++*******************************************************************************#%%@@@@@@@@@@@@@@@@@@@@@@@@@@@%******************************************************************************************************************************************************************************************************************************************########*****************++===---------===++****++===--------------==++***#########################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#######################################################################################################################################################################################################################################################################################################################################################################################################################################################################*********##############################################################################################################################################################################
**********************************************************************************************************########################**************##############################################**************++++++++++++++++++++++*********************************************************************************+++++****************************************************************************************************************++++++++**********************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*+++++++++#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@%%%%@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##############*************************#####################****************++++++++++++++++++++++++++++++++++++++****++**********************************+++++++++++++++++++++++++++++++++++========================+++++***********+===================+==============================================================================================================================+*******************+===+++++=+=++***************************#############################################################################################*####################################################################################################################################################################################################+.::............. .+++++++++++++++++++++++++++++=======+++++++++++=========+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********************************###############################################################################################******************************************+++++++++++++++++++++++++++++++++++++*#%%%%#*++++++++++++++++++++++++++++++++++++++++++++++++++++++#######******************++====+================================================++**********************************************************************************+====================================================================================================+===+====++**++******++********************************************************************************#%%%@@@@@@@@@@@@@@@@@@@@@@@@@@#******************************************************************************************************************************************************************************************************************************************########*****************+++==---------===+++**+++===--------------==++***#########################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#######################################################################################################################################################################################################################################################################################################################################################################################################################################################################*******################################################################################################################################################################################
**********************************************************************************************************#######################****************############################################***************+++++++++++++++++++++++********************************************************************************++++*****************************************************************************************************************+++++++**********************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*++++++++++#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@%%%%@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##############**************************####################****************++++++++++++++++++++++++++++++++++++++******************************************++++++++++++++++++++++++++++++++++=======================+++++************+==================+===============================================================================================================================+*******************+=++=++==+=++****************************##########################################################################################*****##################################################################################################################################################################################################*:::............. ++++++++++++++++++++++++++++++======++++++++++++========+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********************************#############################################################################################******************************************++++++++++++++++++++++++++++++++++++++*#%%%%#*++++++++++++++++++++++++++++++++++++++++++++++++++++++######*******************++=+===================================================+**********************************************************************************+============================================================================================================+++*******++**+*********************************************************************************#%%%@@@@@@@@@@@@@@@@@@@@@@@@@%*******************************************************************************************************************************************************************************************************************************************########*****************+++==----------==++++++++==---------------==++***#########################################################################################################################################################################################@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%##############################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################
**********************************************************************************************************#######################****************############################################***************+++++++++++++++++++++++*********************************************************************************++******************************************************************************************************************+++++++**********************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*++++++++++*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%%%%@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#############***************************#####################***************+++++++++++++++++++++++++++++++++++++**********************************************++++++++++++++++++++++++++++++++======================+++++*********+**+==================+================================================================================================================================++******************+=++++==+++*****************************#########################################################################################********################################################################################################################################################################################################*:.:............. =++++++++++++++++++++++++++++++=====+++++++++++++=======++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********************************###########################################################################################*****************************************++++++++++++++++++++++++++++++++++++++++*#%%%%#*++++++++++++++++++++++++++++++++++++++++++++++++++++++#####********************++=+===================================================+*********************************************************************************+=========================================================================================================+==++************************************************************************************************%%%@@@@@@@@@@@@@@@@@@@@@@@@@#*******************************************************************************************************************************************************************************************************************************************########*****************+++==-----------==+++++++==---------------==++***########################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%##############################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################
**********************************************************************************************************#########*******************************##########################################****************++++++++++++++++++++++++****************************************************************************************************************************************************************************************************+++++++*********************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*+++++++++++*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%%%%@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##############****************************#####################**************+++++++++++++++++++++++++++++++++++***************************************************+++++++++++++++++++++++++++++======================++++++**********+*+================+++================================================================================================================================++******************+=+++++++*********************##*******################*******################################################################*************##############################################################################################################################################################################################:............... =++++++++++++++++++++++++++++++=====++++++++++++++=====++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***********************************#######################################################################################******************************************+++++++++++++++++++++++++++++++++++++++++*#%%%%#*++++++++++++++++++++++++++++++++++++++++++++++++++++++*###**********************=+====================================================+********************************************************************************+========================================================================================================+==++**************************************************************************************************#%%@@@@@@@@@@@@@@@@@@@@@@@@%#*******************************************************************************************************************************************************************************************************************************************#########****************+++==-----------==+++++++==---------------==++***########################################################################################################################################################################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%##############################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################
**********************************************************************************************************#########*******************************##########################################****************+++++++++++++++++++++++++***************************************************************************************************************************************************************************************************++++++**********************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*++++++++++++#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%%%%@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#############****************************#####################**************+++++++++++++++++++++++++++++++++++*********************************************+++*****++++++++++++++++++++++++++++=====================++++++************+================++++================================================================================================================================++******************+==+++++*******************####********###############************************####**#######################################******************######****#################################################################################################################################################################################:............... -+++++++++++++++++++++++++++++++=====++++++++++++++====+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***********************************#####################################################################################******************************************++++++++++++++++++++++++++++++++++++++++++*#%%%%#*++++++++++++++++++++++++++++++++++++++++++++++++++++++*##***********************++====================================================+*************************************************************************+******+=================================================================================================+========+**++************************************************************************************************#%%@@@@@@@@@@@@@@@@@@@@@@@@%********************************************************************************************************************************************************************************************************************************************#########****************+++===----------===+++++===---------------==++***########################################################################################################################################################################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%##############################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################
**********************************************************************************************************#########********************************#########################################****************+++++++++++++++++++++++++***************************************************************************************************************************************************************************************************++++++********##*****************####***************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*+++++++++++++#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%%@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%############*****************************#####################*************+++++++++++++++++++++++++++++++++++********************************************+++++++****+++++++++++++++++++++++++++====================+++++++************+==============+++++=================================================================================================================================++******************+=+=++********************###************++++++********************************************############################********************************################################################################################################################################################################################:............... :++++++++++++++++++++++++++++++++====+++++++++++++++===++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***********************************##################################################################################******************************************++++++++++++++++++++++++++++++++++++++++++++*#%%%%#*++++++++++++++++++++++++++++++++++++++++++++++++++++++**************************++++==================================================+*********************************************************+++++**+**************==========================================================================================================++**++*************************************************************************************************#%%@@@@@@@@@@@@@@@@@@@@@@@@#********************************************************************************************************************************************************************************************************************************************##########***************+++===----------===+++++===---------------==++***########################################################################################################################################################################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%##############################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################
**********************************************************************************************************########**********************************#######################################*****************++++++++++++++++++++++++++**************************************************************************************************************************************************************************************************++++++*******###****************#####***************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*+++++++++++++*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%############****************************######################***********+++++++++++++++++++++++++++++++++++**********************************************++++++++****++++++++++++++++++++++++++===================+++++++************+=============+++++++=================================================================================================================================++******************+==++*******************####*****+++++++++++++**++**********************************************##################************************************################################################################################################################################################################################-............... .++++++++++++++++++++++++++++++++=====+++++++++++++++==+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***********************************################################################################################******************************************+++++++++++++++++++++++++++++++++++++++++++++*#%%%%#*++++++++++++++++++++++++++++++++++++++++++++++++++++++**************************++=+==================================================+*****************************************************++++++++++***************=========================================================================================================+++*++**+*************************************************************************************************%%%@@@@@@@@@@@@@@@@@@@@@@%#********************************************************************************************************************************************************************************************************************************************##########***************+++===-----------===++++===---------------==++***########################################################################################################################################################################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%####################################################################################################################################################################################################################################################################################################################################################################################################################################################################%%%%%%#%%%################################################################################################################################################################################
**********************************************************************************************************#######*************************************####################################*****************++++++++++++++++++++++++++++*************************************************************************************************************************************************************************************************++++++******####***************######***************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*++++++++++++++*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##########***************************#######################************++++++++++++++++++++++++++++++++++************************************************++++++++*******++++++++++++++++++++++==================++++++++**********+*+===========++++++++==================================================================================================================================++******************++=+*******************##**++++++++++++++++++++****************************#####*********************************************************************################################################################################################################################################################################=............... .+++++++++++++++++++++++++++++++++====+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***********************************#############################################################################*******************************************++++++++++++++++++++++++++++++++++++++++++++++*#%%%%#*+++++++++++++++++++++++++++++++++++++++++++++++++++++***************************++=+==================================================+****************************************************++++++++++***************======================================================================================================+==++*+++***+*************************************************************************************************#%%@@@@@@@@@@@@@@@@@@@@@@%#********************************************************************************************************************************************************************************************************************************************##########***************+++===-----------===++++===---------------==++***########################################################################################################################################################################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%###################################################################################################################################################################################################################################################################################################################################################################################################################################################################%%%%%%%%%%%%%##############################################################################################################################################################################
**********************************************************************************************************######***************************************##################################******************++++++++++++++++++++++++++++*************************************************************************************************************************************************************************************************+++++******#########**********#######****************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*+++++++++++++++*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##########***************************#######################***********++++++++++++++++++++++++++++++++++************************************************++++++++++******++++++++++++++++++++++=================++++++++*********+**+==========+++++++++===================================================================================================================================++******************+++*********************+++++++++++++++++++++++***************************#########*****************************************************************################################################################################################################################################################################+.:............. =+++++++++++++++++++++++++++++++++====++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***********************************#########################################################################*******************************************++++++++++++++++++++++++++++++++++++++++++++++++*#%%%%#*++++++++++++++++++++++++++++++++++++++++++++++++++++*****************************+=+==================================================+******************************************+++**+++++++++++++++*************+========================================================================================================+++*++***++************************************************************************************############*##%%@@@@@@@@@@@@@@@@@@@@@@%#********************************************************************************************************************************************************************************************************************************************###########***************++===-----------====++===----------------==++***########################################################################################################################################################################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%###################################################################################################################################################################################################################################################################################################################################################################################################################################################################%%%%%%%%%%%%%%#############################################################################################################################################################################
**********************************************************************************************************######******************************************##############################*******************+++++++++++++++++++++++++++++************************************************************************************************************************************************************************************************+++++******#########**********########******************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*++++++++++++++++#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##########************************########################***********+++++++++++++++++++++++++++++++++**************************************************+++++++++++****+++++++++++++++++++++++================+++++++++************+=========++++++++++====================================================================================================================================+******************+++*******************++++++*+****+++++++++++******************************############************************************************************################################################################################################################################################################################*.:............. =++++++++++++++++++++++++++++++++++===+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***********************************######################################################################*******************************************++++++++++++++++++++++++++++++++++++++++++++++++++*##%%%##+++++++++++++++++++++++++++++++++++++++++++++++++++******************************+++==================================================+*********************************+++***+*+++++++++++++++++++++************+=======================================================================================================++++*+***++**+**********************************************************************************################%%@@@@@@@@@@@@@@@@@@@@@%%#********************************************************************************************************************************************************************************************************************************************###########***************+++==------------========----------------==++***########################################################################################################################################################################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%###################################################################################################################################################################################################################################################################################################################################################################################################################################################################%%%%%%%%%%%%%%#############################################################################################################################################################################
**********************************************************************************************************######*******************************************###########################*********************+++++++++++++++++++++++++++++************************************************************************************************************************************************************************************************+++++*****##########*********#########*********************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*++++++++++++++++*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%############*********************######%%%################**********+++++++++++++++++++++++++++++++++*****##*******************************************+++++++++++++++++++++++++++++++++++++++===============+++++++++************+=========++++++++++====================================================================================================================================++*******************+*****+***********************++++++++++++++*******************************################******************************************************################################################################################################################################################################################*::............. =++++++++++++++++++++++++++++++++++====++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++************************************###################################################################*******************************************++++++++++++++++++++++++++++++++++++++++++++++++++++*##%%%##++++++++++++++++++++++++++++++++++++++++++++++++++*******************************+++++================================================+******************************++*++++*+++++++++++++++++++++++++**********+=======================================================================================================+++**+******************************************************************************************#################%%@@@@@@@@@@@@@@@@@@@@@%%#********************************************************************************************************************************************************************************************************************************************###########***************+++==------------========----------------==++***########################################################################################################################################################################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%###################################################################################################################################################################################################################################################################################################################################################################################################################################################################%%%%%%%%%%%%%%#############################################################################################################################################################################
**********************************************************************************************************#####*********************************************########################**********************++++++++++++++++++++++++++++++++++********************************************************************************************************************************************************************************************++++******##########*********#########**************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*+++++++++++++++++*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%############********************####%%%%%%%#############***********++++++++++++++++++++++++++++++++*****#*********************************************+++++++++++++++++++++++++++++++++++++++==============++++++++++************+========++++++++++======================================================================================================================================+*******************+++++++++*****##**********++++++++++++++++++********************************##################**************************************************#################################################################################################################################################################################::............. -++++++++++++++++++++++++++++++++++====++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**************************************##############################################################**********************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++#%%%###+++++++++++++++++++++++++++++++++++++++++++++++++********************************+=++=+===============================================+**********************++++++++++++++++++++++++++++++++++++*+++*********+=================================================================================================++=====+++**+******************************************************************************************###################%%@@@@@@@@@@@@@@@@@@@%%%#********************************************************************************************************************************************************************************************************************************************############**************+++==------------========----------------==++***########################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%###################################################################################################################################################################################################################################################################################################################################################################################################################################################################%%%%%%%%%%%%%%%############################################################################################################################################################################
**********************************************************************************************************#####*********************************************########################**********************+++++++++++++++++++++++++++++++++++*******************************************************************************************************************************************************************************************++++*****###########********##########****************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*++++++++++++++++++*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%############*****************#####%%%%%%%%#############**********++++++++++++++++++++++++++++++++*#####*********************************************+++++++++++++++++++++++++++++++++++++++===============+++++++++************+========+++++++++++=====================================================================================================================================++********************+++++*****###*++++****++++++++++++++++++++***********************************###################*********************************************##################################################################################################################################################################################:.:............ -++++++++++++++++++++++++++++++++++=====+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**************************************##########################################################***********************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++#%%%###++++++++++++++++++++++++++++++++++++++++++++++++*********************************+=++=+===============================================+**********************++++++++++++++++++++++++++++++++++*+++**+**+****+====================================================================================================++=++++*+++++****************************************************************************************###################%%@@@@@@@@@@@@@@@@@@@%%%#********************************************************************************************************************************************************************************************************************************************############**************+++==------------========----------------==++***########################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%##################################################################################################################################################################################################################################################################################################################################################################################################################################################################%%%%%%%%%%%%%%%%############################################################################################################################################################################
**********************************************************************************************************#####**********************************************##################*##************************++++++++++++++++++++++++++++++++++++*******************************************************************************************************************************************************************************************++******###########********##########*****************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*+++++++++++++++++++#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#############***************#####%%%%%%%%#############***********++++++++++++++++++++++++++++++**#####**********************************************+++++++++++++++++++++++++++++++++++++++==============+++++++++*************=========++++++++++======================================================================================================================================++***************************####*++++++++++++++++++++++++++++++*************************************#################********************************************##################################################################################################################################################################################=.::........... :++++++++++++++++++++++++++++++++++=====++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**************************************########################################################**********************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++##%%%##+++++++++++++++++++++++++++++++++++++++++++++++**********************************++++=+===============================================+******************+++++++++++++++++++++++++++++++++++++++***++******+====================================================================================================+===+++**++++*+****************************************************************************************####################%%@@@@@@@@@@@@@@@@@@%%%#********************************************************************************************************************************************************************************************************************************************############**************+++===------------=======----------------==++***########################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%##################################################################################################################################################################################################################################################################################################################################################################################################################################################################%%%%%%%%%%%%%%%%############################################################################################################################################################################
**********************************************************************************************************####************************************************#################***************************++++++++++++++++++++++++++++++++++++++*****************************************************************************************************************************************************************************************++*****############********##########*******************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*++++++++++++++++++++#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##############***********######%%%%%%%%%#############**********++++++++++++++++++++++++++++++*######***********************************************+++++++++++++++++++++++++++++++++++++++=============++++++++++************+========++++++++++========================================================================================================================================+************************####**+++++++++++++++++++++++++++++++****************************************##############********************************************##################################################################################################################################################################################+:.:........... :++++++++++++++++++++++++++++++++++=====+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***************************************####################################################***********************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++##%%%##*+++++++++++++++++++++++++++++++++++++++++++++************************************+++=+================================================*******************++++++++++++++++++++++++++++++++***++**++******++=======================================================================================================+++**+++++**+*****************************************************************************************################**##%@@@@@@@@@@@@@@@@@@%%%#********************************************************************************************************************************************************************************************************************************************#############*************+++===------------=======----------------==++***########################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%##################################################################################################################################################################################################################################################################################################################################################################################################################################################################%%%%%%%%%%%%%%%%############################################################################################################################################################################
**********************************************************************************************************####**************************************************################**************************++++++++++++++++++++++++++++++++++++++++**********************************************************************************************************************************************************************************************############*******###########********************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*++++++++++++++++++++*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#############################%%%%%%%%%#############**********++++++++++++++++++++++++++++++########*********************************+************+++++++++++++++++++++++++++++++++++++++=============++++++++++*************========++++++++++========================================================================================================================================++**********************#####*+++++++++++++++++++++++++++++++++******************************************###########********************************************##################################################################################################################################################################################*:............. :+++++++++++++++++++++++++++++++++======+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**************************************##################################*##############***********************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#%%%##*++++++++++++++++++++++++++++++++++++++++++++*************************************+=+==================================================****************************+++++++**********************+***+***+=======================================================================================================+++*++*++++++++******************************************************************************************##########*******##%%@@@@@@@@@@@@@@@@@%%%#********************************************************************************************************************************************************************************************************************************************#############*************+++===-------------======----------------==++***########################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%##################################################################################################################################################################################################################################################################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%###########################################################################################################################################################################
**********************************************************************************************************##****************************************************################**************************++++++++++++++++++++++++++++++++++++++++*********************************************************************************************************************************************************************************************#############*******###########*********************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*+++++++++++++++++++++*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###########################%%%%%%%%%##############*********+++++++++++++++++++++++++++++*########********************************+++**+*********+++++++++++++++++++++++++++++++++++++++============+++++++++++************+=======+++++++++++========================================================================================================================================++******************#######**++=++++++++++++++++++++++++++++++********************************************#########********************************************###################################################################################################################################################################################-:............ :+++++++++++++++++++++++++++++++++======+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***************************************##############################*#############************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*##%%##*+++++++++++++++++++++++++++++++++++++++++++**************************************+++=+================================================****************************************************************+=======================================================================================================+++*+**+*++++++*************************************************************************************************************##%@@@@@@@@@@@@@@@@@%%##********************************************************************************************************************************************************************************************************************************************#############*************+++===-------------======----------------==++***########################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%##################################################################################################################################################################################################################################################################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%###########################################################################################################################################################################
**********************************************************************************************************##*******************************************************#*************************************++++++++++++++++++++++++++++++++++++++++++********************************************************************************************************************************************************************************************#############***#***##########***********************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*++++++++++++++++++++++#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########################%%%%%%%%%##############**********++++++++++++++++++++++++++++*###########*####*#***********************++++++********+++++++++++++++++++++++++++++++++++++++============+++++++++++*************=======+++++++++++=========================================================================================================================================+++*****************######****++++++++++++++++++++++++++++++++**********************************************######********************************************###################################################################################################################################################################################=:............ .++++++++++++++++++++++++++++++++++======++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****************************************########################################************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*##%%##*++++++++++++++++++++++++++++++++++++++++++***************************************+++=+================================================**************************************************************++======================================================================================================++++++++***+++++***************************************************************************************************************#%%@@@@@@@@@@@@@@@%%%##*********************************************************************************************************************************************************************************************************************************************############*************+++===-------------======----------------==++***########################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%##################################################################################################################################################################################################################################################################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%##########################################################################################################################################################################
**********************************************************************************************************#**********************************************************************************************++++++++++++++++++++++++++++++++++++++++++********************************************************************************************************************************************************************************************#############**##***##########***********************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++*++++++++++++++++++++++++++++++++*+++++++++++++++++++++++#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####################%%%%%%%%%%##############*********+++++++++++++++++++++++++++*#######################*******************+++++++********+++++++++++++++++++++++++++++++++++++++===========+++++++++++*************+======+++++++++++==========================================================================================================================================++****************##########***++++++++++++++++++++++++++++++*************************************************###*******************************************####################################################################################################################################################################################+::........... .+++++++++++++++++++++++++++++++++++++===+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******************************************#######################***##########*************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*##%%%#*+++++++++++++++++++++++++++++++++++++++++****************************************+++++++==============================================*++++********************************************************+=======================================================================================================++*+*++++++*++***+**************************************************************************************************************#%%@@@@@@@@@@@@@@@%%%#**********************************************************************************************************************************************************************************************************************************************############*************+++===-------------======----------------==++***#########################################################################################################################################################################################@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%##################################################################################################################################################################################################################################################################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%##########################################################################################################################################################################
*********************************************************************************************************##************************************************************##********************************+++++++++++++++++++++++++++++++++++++++++++******************************************************************************************************************************************************************************************###############******##########************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++******++++++++++++++++++++++++++++*++++++++++++++++++++++++#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#################%%%%%%%%%%%##############*********+++++++++++++++++++++++++++*##########################*****************+++++++++*****++++++++++++++++++++++++++++++++++++++++==========++++++++++++************+======+++++++++++==========================================================================================================================================+++***************##############***+++++++++++++++++++++++++***+************************************************##******************************************####################################################################################################################################################################################+-..:......... ++++++++++++++++++++++++++++++++++++++===++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******************************************#################***############**************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*##%%##*++++++++++++++++++++++++++++++++++++++++******************************************++++++++============================================++++*+*****************************************************++======================================================================================================+++*+++++++++++*******************************************************************************************************************##%%@@@@@@@@@@@@@@%%%#**********************************************************************************************************************************************************************************************************************************************############*************++++==-------------======----------------==++***###############################################################****######################################################################################################################@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%##################################################################################################################################################################################################################################################################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%##########################################################################################################################################################################
*********************************************************************************************************##**********************************************************************************************++++++++++++++++++++++++++++++++++++++++++*******************************************************************************************************************************************************************************************###############*******#########************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++*******++++++++++++++++++++++++++++*++++++++++++++++++++++++*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###############%%%%%%%%%%%%###############*********++++++++++++++++++++++++++*###########################****************+++++++++++***++++++++++++++++++++++++++++++++++++++++==========+++++++++++++************+=====+++++++++++==========================================================================================================================================+++***************##***##############****+++++++++++++++++++++++********************************************************************************************####################################################################################################################################################################################*=::.......... +++++++++++++++++++++++++++++++++++++++===+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*************************************************#**********#############*************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*##%%%#*+++++++++++++++++++++++++++++++++++++++*******************************************++++++++============================================++++**********##########################******************++============================================================================================+========++++++*++++++++++********************************************************************************************************************#%%%@@@@@@@@@@@@@%%%#**********************************************************************************************************************************************************************************************************************************************############**************+++==--------------=====----------------==++***#############################################################******######################################################################################################################@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%##################################################################################################################################################################################################################################################################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%#########################################################################################################################################################################
*********************************************************************************************************###*********************************************************************************************++++++++++++++++++++++++++++++++++++++++++*******************************************************************************************************************************************************************************************###############*******########************************************************************************####**********************************+++++++++++++++++++++++++++++++++++++++++++++++++*+********++++++++++++++++++++++++++++*+++++++++++++++++++++++++*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######%%%%%%%%%%%%%%%%%##############*********++++++++++++++++++++++++++############################*****************++++++++++*+++++++++++++++++++++++++++++++++++++++++++=========+++++++++++++************+++==+++++++++++++=========================================================================================================================================+++***************#*******############********++++++++++++++++**********************************************************************************************####################################################################################################################################################################################*+::.......... =+++++++++++++++++++++++++++++++++++++++==++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******************************************************###############***++*********************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++##%%%#*++++++++++++++++++++++++++++++++++++++********************************************++++++++============================================++++********###############################**************+======================================================================================================+++*+++*++++++++**********************************************************************************************************************#%%%@@@@@@@@@@@@@%%##**********************************************************************************************************************************************************************************************************************************************#############*************+++==--------------=====----------------==++***############################################################********#####################################################################################################################@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%##################################################################################################################################################################################################################################################################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%#########################################################################################################################################################################
*********************************************************************************************************###*********************************************************************************************+++++++++++++++++++++++++++++++++++++++++**************************************************************+++++************************************************************************************************************************################*******#######*************************************************************************######********************************++++++++++++++++++++++++++++++++++++++++++++++++***********++++++++++++++++++++++++++++*++++++++++++++++++++++++++*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###############*********++++++++++++++++++++++++*#############################*****************+++++++++*++*+++++++++++++++++++++++++++++++++++++++++=========++++++++++++*************+++++++++++++++++=========================================================================================================================================++++*************************#############*********++++++++*++++***************************************************#****************************************####################################################################################################################################################################################*+-........... -++++++++++++++++++++++++++++++++++++++++==+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******************************#****************###################*+++*********************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++##%%%##+++++++++++++++++++++++++++++++++++++*#*******************************************+++++++++===========================================++++*******################################************++==================================================================================================+===+++*++++*++++++++**********************************************************************************************************************##%%@@@@@@@@@@@@%%%##**********************************************************************************************************************************************************************************************************************************************#############*************+++===-------------====-----------------==++***############################################################*********####################################################################################################################@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#################################################################################################################################################################################################################################################################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%#########################################################################################################################################################################
********************************************************************************************************####********************************************************************************************++++++++++++++++++++++++++++++++++++++++++*************************************************************+++++++**********************************************************************************************************************#################********######************************************************************************#######*********************************++++++++++++++++++++++++++++++++++++++++++++++*************+++++++++++++++++++++++++++*+++++++++++++++++++++++++++#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###############********++++++++++++++++++++++++###############################*****************+++++++++++**+++++++++++++++++++++++++++++++++++++++++========++++++++++++****************+++++++++++++++========================================================================================================================================++++***************************###############*********+++++++****************************************************###***************************************#####################################################################################################################################################################################+=..:........ -++++++++++++++++++++++++++++++++++++++++===+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********************************#*************##################**++++******************+++**********************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++##%%%##++++++++++++++++++++++++++++++++++++***********************************************+++++++++++========================================++++******################################***********+++=====================================================================================================+++*+++**+++++++*************************************************************************************************************************##%%@@@@@@@@@@@@%%%##**********************************************************************************************************************************************************************************************************************************************#############*************+++===----------------------------------==++***############################################################*********####################################################################################################################@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#################################################################################################################################################################################################################################################################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%########################################################################################################################################################################
********************************************************************************************************####********************************************************************************************++++++++++++++++++++++++++++++++++++++++++*****####***************************************************++++++++**********************************************************************************************************************################**********####************************************************************************########*********************************++++++++++++++++++++++++++++++++++++++++++++++*************+++++++++++++++++++++++++++*++++++++++++++++++++++++++++#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###############********++++++++++++++++++++++*###############################******************+++++++++++++++++++++++++++++++++++++++++++++++++++++========++++++++++++****************+++++++++++++++========================================================================================================================================++++*****************************#####################******+++***************************************************####*************************************######################################################################################################################################################################################++:.......... :++++++++++++++++++++++++++++++++++++++++===+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********************************************###################**+++++++***********+++++++++******************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++##%%%##*++++++++++++++++++++++++++++++++++************************************************+++++++++++========================================++++******###############################******++++*++=====================================================================================================+++*++***++++++++***************************************************************************************************************************##%%@@@@@@@@@@%%%##***********************************************************************************************************************************************************************************************************************************************#############*************+++===----------------------------------==++***############################################################*********####################################################################################################################@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%################################################################################################################################################################################################################################################################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%########################################################################################################################################################################
********************************************************************************************************####********************************************************************************************+++++++++++++++++++++++++++++++++++++++++*****#####***************************************************+++++++++********************************************************************************************************************#################**************************************************************************************########*********************************++++++++++++++++++++++++++++++++++++++++++++++*************+++++++++++++++++++++++++++*+++++++++++++++++++++++++++++#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###############*******++++++++++++++++++++++*#########*######################*******************++++++++++++++++++++++++++++++++++++++++++++++++++++=======++++++++++++*****************++++++++++++++========================================================================================================================================++++********************************######################*****+**************************************************####*************************************######################################################################################################################################################################################++-.......... .++++++++++++++++++++++++++++++++++++++++===++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****************************#************##################**++++++++++****++++++++++++++++**************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#%%%##*+++++++++++++++++++++++++++++++++*************************************************+++++++++++========================================++++******##############################******+++++++===================================================================================================+=++*++****++++*++++****************************************************************************************************************************#%%@@@@@@@@@@%%###***********************************************************************************************************************************************************************************************************************************************#############*************+++===----------------------------------==++**#############################################################*********####################################################################################################################@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%################################################################################################################################################################################################################################################################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%########################################################################################################################################################################
********************************************************************************************************#####*******************************************************************************************+++++++++++++++++++++++++++++++++++++++++****#######**************************************************+++++++++********************************************************************************************************************#################*************************************************************************************#########**********************************+++++++++++++++++++++++++++++++++++++++++++++****+********+++++++++++++++++++++++++++*+++++++++++++++++++++++++++++*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%################******++++++++++++++++++++++#########**######################********************+++++++++++++++++++++++++++++++++++++++++++++++++++=======++++++++++++**************+***+++++++++++++========================================================================================================================================++++**********************************########################****************************************************####*************************************######################################################################################################################################################################################*+=.......... .+++++++++++++++++++++++++++++++++++++++++=+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***************************************##################**++++++++++++++++++++++++++++++++*********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#%%%##*++++++++++++++++++++++++++++++++**************************************************+++++++++++========================================++++*******#######################**********+++++++======================================================================================================+++++*++++**+++********************************************************************************************************************************##%%@@@@@@@@@%%##************************************************************************************************************************************************************************************************************************************************##############************+++===----------------------------------==++**#############################################################*********####################################################################################################################@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%################################################################################################################################################################################################################################################################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%########################################################################################################################################################################
********************************************************************************************************#####*******************************************************************************************++++++++++++++++++++++++++++++++++++++++****########**************************************************+++++++++*******************************************************************************************************************##################*************************************************************************************#########**********************************++++++++++++++++++++++++++++++++++++++++++++++**************+++++++++++++++++++++++++*++++++++++++++++++++++++++++++*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###############*******++++++++++++++++++++*#########**#######################*********************++++++*++++++++++++++++++++++++++++++++++++++++++++=====++++++++++++******************++++++++++++++=======================================================================================================================================++++*************************************########################*************************************************####************************************#######################################################################################################################################################################################*++::........ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****************************#******###################*+++++++++++++++++++++++++++++++++******++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*##%%##*+++++++++++++++++++++++++++++++**#************************************************+=+++++++++========================================+++++**************************************+++++++=============================================================================================+===+===++++++++++++++++**********************************************************************************************************************************##%@@@@@@@@@%##*************************************************************************************************************************************************************************************************************************************************##############*************++===----------------------------------==++***##############################################################******#####################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%################################################################################################################################################################################################################################################################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%#######################################################################################################################################################################
********************************************************************************************************#####*******************************************************************************************++++++++++++++++++++++++++++++++++++++++***#########**************************************************+++++++++*******************************************************************************************************************##################*************************************************************************************#########**********************************++++++++++++++++++++++++++++++++++++++++++++****************+++++++++++++++++++++++++*+++++++++++++++++++++++++++++++*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#############*******+++++++++++++++++++##########**#######################*********************++++++++++++++++++++++++++++++++++++++++++++++++++++====++++++++++++******************++++++++++++++========================================================================================================================================+++***************************************########################****+*******************************************##*************************************#######################################################################################################################################################################################*++-.......... +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***************************#******###################*+++++++++++++++++++++++++++++++++++***++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*##%%##*++++++++++++++++++++++++++++++*****************************************************+++++++++++=======================================++++++************************************+++++++===========================================================================================++=======++++++++++++++++++**********************************************************************************************************************************##%%@@@@@@@%%#**************************************************************************************************************************************************************************************************************************************************##############*************++===----------------------------------==++***##############################################################******#####################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%################################################################################################################################################################################################################################################################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%#######################################################################################################################################################################
********************************************************************************************************####*******************************************************************************************++++++++++++++++++++++++++++++++++++++++****#########*************************************************++++++++++*******************************************************************************************************************##################************************************************************************************##########**********************************+++++++++++++++++++++++++++++++++++++++++++*****************+++++++++++++++++++++++++*++++++++++++++++++++++++++++++++*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##############******++++++++++++++++++*##########**########################**********************++++++++++++++++++++++++++++++++++++++++++++++++++====++++++++++++*******************++++++++++++++=======================================================================================================================================+++******************************************#######################*************************************************************************************#######################################################################################################################################################################################*++=:........ +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********************++++*******##################*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*##%%##*+++++++++++++++++++++++++++++******************************************************++++++++++++======================================++++++++*****************************+++++++++++===============================================================================================+====++*+++++++++++++++************************************************************************************************************************************##%%@@@@@@%##********************************************************************************************************************#*****************************************************************************************************************************##############*************+++===---------------------------------==++***##############################################################****#######################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%###############################################################################################################################################################################################################################################################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%#######################################################################################################################################################################
********************************************************************************************************####*******************************************************************************************++++++++++++++++++++++++++++++++++++++++****##########************************************************++++++++++******************************************************************************************************************###################************************************************************************************##########**********************************+++++++++++++++++++++++++++++++++++++++++*******************+++++++++++++++++++++++++*+++++++++++++++++++++++++++++++++#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##############*****++++++++++++++++++###########**########################***********************+++++++++++++++++++++++++++++++++++++++++++++++++====++++++++++++*******************++++++++++++++=======================================================================================================================================+++********************************************########################***++****************************************************************************#########################################################################################################################################################################################+++-........ +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******************+++++****###################*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*##%%%##++++++++++++++++++++++++++++*******************************************************++++++++++++======================================++++++++++*********++++++++++++++++++++++++++++===================================================================================================++*++*++++++++++++++*************************************************************************************************************************************#%%@@@@@%%#*********************************************************************************************************************##****************************************************************************************************************************##############*************+++===---------------------------------==++**************##############################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%###############################################################################################################################################################################################################################################################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%######################################################################################################################################################################
********************************************************************************************************####*******************************************************************************************+++++++++++++++++++++++++++++++++++++++****###########************************************************++++++++++*****************************************************************************************************************####################********###*************************************************************************##########**********************************+++++++++++++++++++++++++++++++++++++++*********************+++++++++++++++++++++++++*++++++++++++++++++++++++++++++++++#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@%@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@%%%%%%%%%%%%%@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##############******++++++++++++++++*###########**#########################************************+++++++++++++++++++++++++++++++++++++++++++++++++=+++++++++++++*******************++++++++++++++=======================================================================================================================================+++**********************************************###########%%%##########******************************************************************************##########################################################################################################################################################################################+++=:....... =+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***************++++++**###################*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*##%%%##++++++++++++++++++++++++++*********************************************************+=+++++++++++=====================================++++++++++++++++++++++++++++++++++++++++++++++==============================================================================================++==++*++**++++++++*++++++*************************************************************************************************************************************#%%%%@@@%%#*********************************************************************************************************************###***************************************************************************************************************************###############************+++===---------------------------------==++****************############################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%###############################################################################################################################################################################################################################################################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%######################################################################################################################################################################
********************************************************************************************************####*******************************************************************************************+++++++++++++++++++++++++++++++++++++++****###########************************************************++++++++++*****************************************************************************************************************###################********#####************************************************************************#########***********************************+++++++++++++++++++++++++++++++++++++************************++++++++++++++++++++++++*++++++++++++++++++++++++++++++++++*#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@%%%%@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###############*****+++++++++++++++*############**#########################*************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******************+++++++++++++++======================================================================================================================================+++***********************************************###########%%%%%##########***+***********************************************************************##########################################################################################################################################################################################++++=:....... =++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++************+++++++*#################*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++##%%%##+++++++++++++++++++++++++**********************************************************+++++++++++++=====================================++++++++++++++++++++++++++++++++++++++++++++==============================================================================================+===++++++*++++++++++*++++++*************************************************************************************************************************************##%%%%%%%%#*********************************************************************************************************************###****************************************************************************************************************************##############************+++===---------------------------------==++*********+*******###########################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%###############################################################################################################################################################################################################################################################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%######################################################################################################################################################################
********************************************************************************************************###*******************************************************************************************++++++++++++++++++++++++++++++++++++++++****###########************************************************+++++++++*****************************************************************************************************************####################********#####************************************************************************#########************************************+++++++++++++++++++++++++++++++++++*************************++++++++++++++++++++++++*+++++++++++++++++++++++++++++++++++*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@%%%@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###############******++++++++++++++*############*##########################**************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******************+++++++++++++++======================================================================================================================================++**************************************************#############%%%##########************************************************************************###########################################################################################################################################################################################+++++=:....... =+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********+++++*################**++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#%%%##++++++++++++++++++++++++*****#******************************************************++++++=+++++=====================================+++++++++++++++++++++++++++++++++++++++++++===============================================================================================+=+++++++++++++++++++++++++***************************************************************************************************************************************#%%%%%%%%#*********************************************************************************************************************####***************************************************************************************************************************##############************+++===---------------------------------==++*****++++++++*****##########################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%###############################################################################################################################################################################################################################################################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%######################################################################################################################################################################
********************************************************************************************************###*******************************************************************************************++++++++++++++++++++++++++++++++++++++++****####%######************************************************+++++++++*****************************************************************************************************************####################*******######************************************************************************########*************************************+++++++++++++++++++++++++++++++++++*************************++++++++++++++++++++++++*++++++++++++++++++++++++++++++++++++*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@%%%%@@@@@@%%@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%################*****+++++++++++++*#############*##########################**************************+++*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******************+++++++++++++++======================================================================================================================================++***************************************************########%%%%%%%%%%#########**********************************************************************###########################################################################################################################################################################################++++++=:..... =+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********++++*#################*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****+++++++++++++++++++++*#%%%##*++++++++++++++++++++++*************************************************************++++++=+++++=====================================++++++++++++++++++++++++++++++++++++++++++==============================================================================================+==+++**++*++++++++*+++++++++***************************************************************************************************************************************##%%%%%%#**********************************************************************************************************************####***************************************************************************************************************************##############************+++===---------------------------------==++****++++++++++****##########################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%###############################################################################################################################################################################################################################################################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%#####################################################################################################################################################################
********************************************************************************************************###*******************************************************************************************++++++++++++++++++++++++++++++++++++++++***####%%######************************************************++++++++++***************************************************************************************************************#####################*******######***********************************************************************#########*************************************+++++++++++++++++++++++++++++++++****************************+++++++++++++++++++++++*++++++++++++++++++++++++++++++++++++**%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@%@@@%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@%%%%%@@@@@%%%@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%##%%%%%%%%%%%%######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#################*****++++++++++++##############*###########################*************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******************++++++++++++++++=====================================================================================================================================+****************************************************##########%%%%%%%%%%%########*******************************************************************############################################################################################################################################################################################*++++++=-...... . -+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******++***##############*#**++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*************************+++++++++++++++++++*##%%##*+++++++++++++++++++++**************************************************************++++++++++++++====================================+++++++++++++++++++++++++++++++++++++++===============================================================================================+=+++++****++++++++++++++*********************************************************************************************************************************************###%%%##***********************************************************************************************************************###***************************************************************************************************************************##############************+++===---------------------------------==+++**+++======+++****#########################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%###############################################################################################################################################################################################################################################################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%#####################################################################################################################################################################
********************************************************************************************************###*******************************************************************************************++++++++++++++++++++++++++++++++++++++++***####%%######************************************************+++++++++****************************************************************************************************************#####################*******######***********************************************************************#########*************************************++++++++++++++++++++++++++++++++*****************************+++++++++++++++++++++++*+++++++++++++++++++++++++++++++++++++**%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@%@@@%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@%%%%%%%%%@@@@@%%%%@@@@@@%%%%%%%%%%%%%%%#############################%%%%##########%%%%%%%%%%%%%%%%%%%%%#################*****+++++++++++*##########################################*********************++****++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******************++++++++++++++++====================================================================================================================================++****************************************************#############%%%%%#%%%%#######*****************************************************************#############################################################################################################################################################################################*+++++++=-:...... .. -+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********#############*#**++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=+++++++++++++++++++++++***********************************++++++++++++++++++*##%%##*++++++++++++++++++++***************************************************************++++++++++++++====================================++++++++++++++++++++++++++++++++++++++===========================================================================================+==++=+++*******++++++++++++++**********************************************************************************************************************************************######************************************************************************************************************************###***************************************************************************************************************************##############************+++===---------------------------------==+++++++=========++****########################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%##############################################################################################################################################################################################################################################################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%#####################################################################################################################################################################
********************************************************************************************************##********************************************************************************************++++++++++++++++++++++++++++++++++++++++***####%%######***********************************************++++++++++****************************************************************************************************************#####################*******######***********************************************************************#########*************************************++++++++++++++++++++++++++++++++*****************************+++++++++++++++++++++++*+++++++++++++++++++++++++++++++++++++++#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@%%@@%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@%%%%%%%%%%@@@@@%%%@@@@@@@%%%%%%%%%%%%%%%%############################%%%##%%%#########%%%%%%%%%%%%%%%%###################*****++++++++++*############################################********************++******++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******************++++++++++++++++====================================================================================================================================+*****************************************************################%%%%%%%%%%######***************************************************************#############################################################################################################################################################################################*++++++++==--:...::-: :++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*++****##########***#*++=+++++++++++++++++++++++++++++++++++++++++++++++++===========+++++++++++++++++++***************************************++++++++++++++++++*##%%%#*+++++++++++++++++++****************************************************************++++++++++++++====================================+++++++++++++++++++++++++++++++++++++==========================================================================================+=====++**********+++++++++++***************************************************************************************************************************************************##**************************************************************************************************************************####**************************************************************************************************************************###############***********+++===---------------------------------==++++++====---====++***########################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%##############################################################################################################################################################################################################################################################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%####################################################################################################################################################################
******************************************************************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++***####%%%#####***********************************************++++++++++***************************************************************************************************************######################*******#####************************************************************************#########*************************************++++++++++++++++++++++++++++++++*****************************+++++++++++++++++++++++*++++++++++++++++++++++++++++++++++++++++#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@%%%%%%@%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@%%%%%%%%%%%@@@@@%%%@@@@@@@%%%%%%%%%%%%%%%%%%#########################%%%%##%%%###########%%%%%%%%%%%%%%####################*****+++++++++##############################################*****************************++++++++++++++++++++++++++++++++++++++++++++++*+++++++++******************++++++++++++++++===================================================================================================================================+*******************************************************#################%%%%%%%%%%#######***********************************************************##############################################################################################################################################################################################*++++++++============. .++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*+**########*****++++++++++++++++++++++++++++++++++++++++++++++++++==============+++++++++++++++********************************************+++++++++++++++++*##%%%#*++++++++++++++++++*#****************************************************************++++=+++++++++===================================++++++++++++++++++++++++++++++++++++===============================================================================================+++************+++++++++********************************************************************************************************************************************************************************************************************************************************************************####**************************************************************************************************************************###############************+++==---------------------------------==++++++===-----===++****#######################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%##############################################################################################################################################################################################################################################################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%####################################################################################################################################################################
******************************************************************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++***####%%%#####***********************************************++++++++++***************************************************************************************************************#####################********#####************************************************************************########**************************************++++++++++++++++++++++++++++++++****************************++++++++++++++++++++++++*++++++++++++++++++++++++++++++++++++++++*#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@%%%%%%%%%%%%@@@@@%%@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######%%%%##%%%%%#############%%%%%%%%%%%####################*****++++++++*##############################################******************************+++++++++++++++++++++++++++++++++++++++++++++**++++++++*******************+++++++++++++++==================================================================================================================================++*******************************************************####################%%%%%%%%%%%####**********************************************************###############################################################################################################################################################################################++++++++++==========: ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**#######*****++++++++++++++++++++++++++++++++++++++++++++++================++++++++++++++++++++*****************************************++++++++++++++++++*##%%%#*++++++++++++++++**#*****************************************************************++++=+++++++++===================================+++++++++++++++++++++++++++++++++++==============================================================================================+++*****************++++++********************************************************************************************************************************************************************************************************************************************************************************####**************************************************************************************************************************###############************+++==---------------------------------==+++++===-------===++***#######################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%###############################################################################################################################################################################################################################################################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%####################################################################################################################################################################
*****************************************************************************************************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++***####%%%#####***********************************************++++++++++***************************************************************************************************************#####################********####*************************************************************************########**************************************++++++++++++++++++++++++++++++++***************************+++++++++++++++++++++++++*+++++++++++++++++++++++++++++++++++++++++*#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@%%%%%%%%%%%%%@@@@@%%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####%%%%##%%%%%###############%%%%%%%%%####################******++++++*###############################################*******************************++++++++++++++++++++++++++++++++++++++++++++***+++++++*******************+++++++++++++++==================================================================================================================================+********************************************************#######################%%%%%%%%%%#####******************************************************################################################################################################################################################################################################+++++++++===========- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**#####*##**++++++++++++++++++++++++++++++++++++++++++++++==============+++++++++++++++++++++++*****************************************+++++++++++++++++++###%%#*+++++++++++++++*********************************************************************++++=++++++++++==================================++++++++++++++++++++++++++++++++++=============================================================================================++++*******************++++*********************************************************************************************************************************************************************************************************************************************************************************####**************************************************************************************************************************###############************+++==---------------------------------===+++====--------==+++***######################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%###############################################################################################################################################################################################################################################################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###################################################################################################################################################################
*****************************************************************************************************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++***####%%%#####**********************************************+++++++++++**************************************************************************************************************######################********####*************************************************************************########**************************************++++++++++++++++++++++++++++++++***************************+++++++++++++++++++++++++*++++++++++++++++++++++++++++++++++++++++++*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@%%%%%%%%%%%%%%@@@@@%%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###%%%%%################%%%%%%%%#####################******+++++################################################*********************************++++++++++++++++++++++++++++++++++++++++++****++++++*******************+++++++++++++++=================================================================================================================================+*********************************************************##########################%%%%%%%%#####*****************************************************################################################################################################################################################################################################+++++++++============ =++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***###*****+=+++++++++++++++++++++++==+++++++++++++++++++=============+++++++++++++++++++++++++*****************************************+++++++++++++++++++###%%##++++++++++++++**#**#****************************************************************++++++++++++++++=================================+++++++++++++++++++++++++++++++++=============================================================================================+++**+******************+************************************************************************************************************************************************************************************************************************************************************************************####**************************************************************************************************************************###############************+++===--------------------------------===+++===---------===++***######################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%###############################################################################################################################################################################################################################################################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###################################################################################################################################################################
*****************************************************************************************************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++***####%%%#####**********************************************+++++++++++*********************************************************************************************+****************######################********####*************************************************************************########**************************************++++++++++++++++++++++++++++++++***************************+++++++++++++++++++++++++*+++++++++++++++++++++++++++++++++++++++++++*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@%%%%%%%%%%%%%%@@@@@@%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###%%%%%##############*#%%%%%%%%#####################******++++*###############################################***********************************+++++++++++++++++++++++++++++++++++++++++****++++++*******************+++++++++++++++=================================================================================================================================+*********************************************************############################%%%%%%%%#%##***************************************************#################################################################################################################################################################################################+++++++++============. =++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********++++++++++++++++++++++++++===+++++++++++++++++========++++++++++++++++++++++++++++++++++**************************************++++++++++++++++++++###%###+++++++++++++************************************************************************+++++++++++++++=================================+++++++++++++++++++++++++++++++==============================================================================================++++*********************+************************************************************************************************************************************************************************************************************************************************************************************####**************************************************************************************************************************###############************+++===--------------------------------====+====----------==++***######################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%##############################################################################################################################################################################################################################################################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###################################################################################################################################################################
*****************************************************************************************************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++***###%%%%#####**********************************************+++++++++++***************************************************************************************+++++++***************#######################*********##**************************************************************************#######***************************************+++++++++++++++++++++++++++++++++*************************++++++++++++++++++++++++++*++++++++++++++++++++++++++++++++++++++++++++*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%@@@@@@@@%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@%%%%%%%%%%%%%%%@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##%%%%%%#################%%%%%%%#####################******+++*###############################################**************************************+++++++++++++++++++++++++++++++++++++++*****+++++*******************+++++++++++++++================================================================================================================================+**********************************************************###############################%%%%%%%%#**************************************************##################################################################################################################################################################################################++++++++++===========- =+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****#*++++++++++++++++++++++=========++++++++++++++++=====++++++++++++++++++++++++++++++++++++++++***********************************++++++++++++++++++++##%%%##++++++++++++*************************************************************************+++++++++++++++++=====++++======================++++++++++++++++++++++++++++++=============================================================================================+++*************************************************************************************************************************************************************************************************************************************************************************************************************#####*************************************************************************************************************************################***********+++===--------------------------------========-----------===++**######################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%##############################################################################################################################################################################################################################################################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##################################################################################################################################################################
*****************************************************************************************************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++***###%%%%#####**********************************************+++++++++++***************************************************************************************+++++++***************#######################**************************************************************************************######***************************************+++++++++++++++++++++++++++++++++************************+++++++++++++++++++++++++++*+++++++++++++++++++++++++++++++++++++++++++++*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%@@@@@@@@%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@%%%%%%%%%%%%%%%%@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##%%%%%##################%%%%%%%#####################*******+*################################################***************************************++++++++++++++++++++++++++++++++++++++*****+++++*******************++++++++++++++++==============================================================================================================================++*********************************************************##################################%%%%%##**************************************************##################################################################################################################################################################################################+++++++++============= =+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******++++++++++++++++++++============++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********************************++++++++++++++++++++###%%##+++++++++++**************************************************************************+++++++++++++++++====++++++=====================+++++++++++++++++++++++++++++==================================================================================+==++==+==+++**+************************************************************************************************************************************************************************************************************************************************************************************************************#####*************************************************************************************************************************################***********+++===--------------------------------========-----------===++***#####################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%##############################################################################################################################################################################################################################################################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##################################################################################################################################################################
*****************************************************************************************************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++***####%%%#####**********************************************++++++++++***************************************************************************************++++++++***************#######################**************************************************************************************######***************************************++++++++++++++++++++++++++++++++++*******************+++++++++++++++++++++++++++++++*++++++++++++++++++++++++++++++++++++++++++++++#%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%@@@@@@@@%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@%%%%%%%%%%%%%%%%@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%################%%%%%%%######################*******#################################################*****************************************++++++++++++++++++++++++++++++++++++******++++*******************++++++++++++++++=============================================================================================================================++**********************************************************######################################%##*************************************************###################################################################################################################################################################################################+++++++++=============: =+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****++++++++++++++++++++=============++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******************************++++++++++++++++++++*##%%##*+++++++++***************************************************************************++++++++++++++++++===+++++++====================+++++++++++++++++++++++++++++===================================================================================++==+===++++++*************************************************************************************************************************************************************************************************************************************************************************************************************#####*************************************************************************************************************************################***********+++===--------------------------------========------------==++***#####################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%##############################################################################################################################################################################################################################################################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#################################################################################################################################################################
****************************************************************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++****###%%%######*********************************************++++++++++**************************************************************************************+++++++++***************#######################**************************************************************************************######***************************************+++++++++++++++++++++++++++++++++++***************++++++++++++++++++++++++++++++++++*+++++++++++++++++++++++++++++++++++++++++++++++#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%@@@@@@@@@@@%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@%%%%%%%%%%%%%%%%%%@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%#################%%%%%%%%#####################*******#################################################******************************************+++++++++++++++++++++++++++++++++++******++++*******************++++++++++++++++=============================================================================================================================+***********************************************************#########################################*************************************************###################################################################################################################################################################################################*++++++++=============- =+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***+++++++++++++++++++++=============++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****************************++++++++++++++++++++*##%%##*+++++++******************************************************************************+++++++++++++++++++++++++++++==================++++++++++++++++++++++++++++=========================================================================================++++++++***************************************************************************************************************************************************************************************************************************************************************************************************************####*************************************************************************************************************************################***********+++===--------------------------------========------------===+****#####################################################################################################################################################################@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%##############################################################################################################################################################################################################################################################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#################################################################################################################################################################
****************************************************************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++****###%%%######*********************************************++++++++++**************************************************************************************+++++++++**************########################**************************************************************************************######***************************************+++++++++++++++++++++++++++++++++++++************+++++++++++++++++++++++++++++++++++*++++++++++++++++++++++++++++++++++++++++++++++++#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%@@@@@@@@@@@@@%%%%%@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%@%%%%##################%%%%%%%#####################******#%%###############################################***************++**************************++++++++++++++++++++++++++++++++++*******+++*******************++++++++++++++++============================================================================================================================++***********************************************************#########################################************************************************####################################################################################################################################################################################################*++++++++============== -++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++============+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****************************+++++++++++++++++++*##%%##*++++++*******************************************************************************+++++++++++++++++++++++++++++++================+++++++++++++++++++++++++++=========================================================================================+++++++***+*************************************************************************************************************************************************************************************************************************************************************************************************************####*************************************************************************************************************************################***********+++===---------------------------------======-------------===++***#####################################################################################################################################################################@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%##############################################################################################################################################################################################################################################################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#################################################################################################################################################################
****************************************************************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++****###%%%######*********************************************++++++++++*************************************************************************************++++++++++**************#######################***************************************************************************************######***************************************++++++++++++++++++++++++++++++++++++++**********++++++++++++++++++++++++++++++++++++*+++++++++++++++++++++++++++++++++++++++++++++++++#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@%%%%%%%%%%%@@%%%@@@@@@@@@@@@@@@@%@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@%%%%%%%%%%%%%%%%%%%%@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%##################%%%%%%%#######################***#%%%%##############%%%#############################**************+++++*************************++++++++++++++++++++++++++++++++++******+++*******************+++++++++++++++++==========================================================================================================================++**************++*********************************************########################################************************************************####################################################################################################################################################################################################*++++++++==============: -+++++++++++++++++++++++++++++++++++++++++++++++++++++=+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=++===+++++++++++++=============+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****************************+++++++++++++++++++*##%%##*+++++********************************************************************************++++++++++++++++++++++++++++++++===============++++++++++++++++++++++++++=========================================================================================++++++**+++**************************************************************************************************************************************************************************************************************************************************************************************************************####*************************************************************************************************************************################***********+++===-----------------------------------===---------------==++***#####################################################################################################################################################################@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%##############################################################################################################################################################################################################################################################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%################################################################################################################################################################
****************************************************************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++****###%%%######*********************************************++++++++++************************************************************************************+++++++++++**************#######################****************************************************************************************#####***************************************+++++++++++++++++++++++++++++++++++++++++*****++++++++++++++++++++++++++++++++++++++*+++++++++++++++++++++++++++++++++++++++++++++++++*#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@%%%%%%%%%%%@@%%%@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%######%%%#######%%%%%%#####%%%%%%%#######################**#%%%%%###########%%%%%%%############################**************++++++++************************++++++++++++++++++++++++++++++++******+++*******************+++++++++++++++++=====================================================================================================================+++++++*+***********+++++*******************************************#######################################************************************************#####################################################################################################################################################################################################*++++++++==============- :++++++++++++++++++++++++++++++++++++++++++++++++++++==++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++====+==++++++++++++=============+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***************************+++++++++++++++++++*##%%##*++++*********************************************************************************+++++++++++++++++++++++++++++++++==============++++++++++++++++++++++++++=====================================================================================+=++++++++++++++*************************************************************************************************************************************************************************************************************************************************************************************************************####*************************************************************************************************************************################***********++++==-----------------------------------------------------==++***#############################################################################################%%%%####################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#############################################################################################################################################################################################################################################################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%################################################################################################################################################################
****************************************************************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++****###%%%######*********************************************++++++++++***********************************************************************************++++++++++++*************########################****************************************************************************************#####***************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*++++++++++++++++++++++++++++++++++++++++++++++++*+*#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@%%%%%%%%%%%@@%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@%%######%@%%####%%%%%%%%######%%%%%%%#########################%%%%#%%%######%%%%%%%%%#############################*************+++++++++************************+++++++++++++++++++++++++++++++*******++*******************+++++++++++++++++====================================================================================================================++++++++*+***********+++++++*****++***********************************#####################################**+**********************************************#####################################################################################################################################################################################################*++++++++===============. :++++++++++++++++++++++++++++++++++++++++++++++++++++==++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++======++++++++++++====+=======+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****************************++++++++++++++++++*##%%##*+++**********************************************************************************+++++++++++++++++++++++++++++++++==============+++++++++++++++++++++++++======================================================================================+++++++*+++++++**************************************************************************************************************************************************************************************************************************************************************************************************************####*************************************************************************************************************************################***********++++==-----------------------------------------------------==++***#############################################################################################%%%%%###################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#############################################################################################################################################################################################################################################################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%################################################################################################################################################################
***************************************************************************************************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++***####%%%######*********************************************++++++++++*********************************************************************************++++++++++++++************########################******************************************************************************************####**************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*+++++++++++++++++++++++++++++++++++++++++++++++++*+*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@%%@%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%%%%%%%%%%%%%%%#%%%%@%%%#########%%%%%%%#######################%%%%%####%#%%#%#%%%%%%%%%#############################*************+++++++++++***********************++++++++++++++++++++++++++++++*******+********************+++++++++++++++++===================================================================================================================+++++++++++**********++++++++++********++++++**************************##################################***************************************************#######################################################################################################################################################################################################++++++++===============- .++++++++++++++++++++++++++++++++++++++++++++++++++++++=+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++========+====+++++=====+===++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**************************++++++++++++++++++*##%%##*++************************************************************************************++++++++++++++++++++++++++++++++++===========++++++++++++++++++++++++++====================================================================================++++++++++++++++++*************************************************************************************************************************************************************************************************************************************************************************************************************#####***********************************************************************************************************************##################**********++++===----------------------------------------------------===++***############################################################################################%%%%%%##################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#############################################################################################################################################################################################################################################################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%################################################################################################################################################################
***************************************************************************************************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++***####%%%######*********************************************++++++++++********************************************************************************+++++++++++++++************########################******************************************************************************************####**************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*++++++++++++++++++++++++++++++++++++++++++++++++++++*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%@@%%###########%%%%%%%######################%%%%%#########%%%%%%%%%%%%#############################*************++++++++++++************************++++++++++++++++++++++++++++****************************++++++++++++++++++==================================================================================================================++++++++++***********++++++++++++++********+++++++*********************##############################*****++************************************************#######################################################################################################################################################################################################++++++++================. ++++++++++++++++++++++++++++++++++++++++++++++++++++++=++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++========+==++++==+=======+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++************************++++++++++++++++++*###%##***************************************************************************************++++++++++++++++++++++++++++++++++++=========++++++++++++++++++++++++++======================================================================+===++===+===+++++++++++++++++++*************************************************************************************************************************************************************************************************************************************************************************************************************#####***********************************************************************************************************************##################**********++++===-----------------------------------------------------==++***############################################################################################%%%%%%##################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#############################################################################################################################################################################################################################################################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%################################################################################################################################################################
***************************************************************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++****####%%%######*********************************************+++++++++********************************************************************************++++++++++++++++************########################*******************************************************************************************##***************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*+++++++++++++++++++++++++++++++++++++++++++++++++++++*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%@%%%#############%%%%%%#####################%%%%%######***#%%%%%%%%%%%%##############################************++=++++++++++*************************++++++++++++++++++++++++++****************************++++++++++++++++++==================================================================================================================+++++++++***********++++++++++++++++++++*******++++++++++**************#############################*******************************************************########################################################################################################################################################################################################++++++++================- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=======================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********************+++++++++++++++++++###%%##**************************************************************************************+++++++++++++++++++++++++++++++++++++========+++++++++++++++++++++++++=========================================================================++===+===+++++++++++++++++++++*************************************************************************************************************************************************************************************************************************************************************************************************************#####***********************************************************************************************************************##################**********++++===-----------------------------------------------------==++***############################################################################################%%%%%%##################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#############################################################################################################################################################################################################################################################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###############################################################################################################################################################
**************************************************************************************************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++****####%%%%#####*********************************************+++++++++*******************************************************************************+++++++++++++++++************########################***********************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*++++++++++++++++++++++++++++++++++++++++++++++++++++*+*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######%%%%%%%%%%%%%%%%%%%%%@%%%###############%%%%%%###################%%%%%%#####**+**#%%%%%%%%%%%##############################************++=+==+++++++++*************************++++++++++++++++++++++++*****************************+++++++++++++++++==================================================================================================================+++++++++***********++++++++++++++++++++++++********++++++++++**********##############################*********++******************************************########################################################################################################################################################################################################++++++++=================. +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********************+++++++++++++++++++###%%##**************************************************************************************+++++++++++++++++++++++++++++++++++++========+++++++++++++++++++++++++==================================================================+++==+==+++===+++++++++++++++++++++++*************************************************************************************************************************************************************************************************************************************************************************************************************#####***********************************************************************************************************************##################**********++++===-----------------------------------------------------==++****############################################################################################%%%%%##################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#############################################################################################################################################################################################################################################################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###############################################################################################################################################################
**************************************************************************************************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++****####%%%%#####*********************************************+++++++++*****************************************************************************++++++*+++++++++++++**********#########################***********************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*++++++++++++++++++++++++++++++++++++++++++++++++++++*++*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##########%@%%%%%%%%%%%%%%%%%@%%################%%%%%%##################%%%%%%#####**++++#%%%%%%%%%%%##############################************++=+==+===+++++++************************+++++++++++++++++++++++*****************************+++++++++++++++++==================================================================================================================+++++++++**********++++++++++++++++++++++++++++*********+++++++++++******#################################************************************************#########################################################################################################################################################################################################++++++++=================- =+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********************+++++++++++++++++++###%%##**+++++*********************************+**********************************************++++++++++++++++++++++++++++++++++++++++====+++++++++++++++++++++++++================================================================++++++++=++++++++++++++++++++++++++++++**************************************************************************************************************************************************************************************************************************************************************************************************************####***********************************************************************************************************************##################**********++++===-----------------------------------------------------===++***###############################################################################################%###################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%############################################################################################################################################################################################################################################################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###############################################################################################################################################################
**************************************************************************************************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++****####%%%%#####*********************************************+++++++++****************************************************************************+++++++++++++++++++++**********#########################***********************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*++++++++++++++++++++++++++++++++++++++++++++++++++++++++*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#########*#%%@%%%%%%%%%%%%%@%%%%#################%%%%%##################%%%%%######*+++++*#%%%%%%%%%%##############################************++=++=+===++++++++************************++++++++++++++++++++++*****************************++++++++++++++++++=================================================================================================================++++++++***********+++++++++++++++++++++++++++++++**********+++++++++++*****################*#################********************************************#########################################################################################################################################################################################################*+++++++==================. =++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******************+++++++++++++++++++##%%%##*+++++++*****************************++++++++******************************************++++++++++++++++++++++++++++++++++++++++++==+++++++++++++++++++++++++===============================================================+++++++++++==++++++++++++++++++++++++++***************************************************************************************************************************************************************************************************************************************************************************************************************####**********************************************************************************************************************###################**********++++===------------------------------------------------------==++***###################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#############################################################################################################################################################################################################################################################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##############################################################################################################################################################
**************************************************************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++****####%%%#####********************************************++++++++++****************************************************************************+++++++++++++++++++++*********##########################**********************************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*+++++++++++++++++++++++++++++++++++++++++++++++++++*+++*+*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%###############%%@@%%%%%%%%%%%%%%%%################%%%%%#################%%%%%#####***++++++*#%%%%%%%%%###############################***********+++++=++==+++++++++*************************++++++++++++++++++++*****************************++++++++++++++++++=================================================================================================================++++++++**********++++++++++++++++++++++++++++++++++***********+++++++++++******########*********#################***************************************##########################################################################################################################################################################################################*+++++++==================- -+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******************+++++++++++++++++++##%%%##*++++++++**************************+++++++++++*****************************************++++++++++++++++++++++++++++++++++++++++++==++++++++++++++++++++++++++==============================================================+++++++++==++++*+++*+++++++++++++++++++***************************************************************************************************************************************************************************************************************************************************************************************************************####**********************************************************************************************************************###################**********++++===--------------------------------------------=---------==++***###################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#############################################################################################################################################################################################################################################################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##############################################################################################################################################################
*************************************************************************************************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++****#####%%#####********************************************++++++++++****************************************************************************+++++++++++++++++++++*********#########################***********************************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%%%%@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%################%%%@%%%%%%@@%%%%%%%%###############%%%%%################%%%%%%##*#****+++++++#%%%%%%%%%###############################***********+=+++=+======+++++++*************************+++++++++++++++++++******************************+++++++++++++++++=================================================================================================================+++++++**********+=++=+++++++++++++++++++++++++++++++++************+++++++++++++****#****+++++*******################************************************##########################################################################################################################################################################################################*+++++++===================. :++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******************+++++++++++++++++++##%%%#**+++++++++************************++++++++++++++***************************************+++++++++++++++++++++++++++++++++++++++++++=++++++++++++++++++++++++==+=============================================================++++++++=+++++++++++++++++++++++++++++****************************************************************************************************************************************************************************************************************************************************************************************************************####**********************************************************************************************************************###################**********++++===-------------------------------------------====-------==++***###################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%############################################################################################################################################################################################################################################################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##############################################################################################################################################################
*************************************************************************************************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++****#####%######*********************************************+++++++++*************************************************************************++++++++++++++++++++++++*********#########################**********************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%%%%%%@@@@@@@@@@@@@@@@%%%%%%%@@%%%@@@@%@@@@@@@@@@@@@@%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%@%%################%%%%%%@%%%@@%%%%%%%%%##############%%%%%###############%%%%%###******++++++++*#%%%%%%%%###############################***********+++++=+++=+++++++++++*************************++++++++++++++++++******************************+++++++++++++++++==============================================================================================================++++=+++++**********++==+=+++++++++++++++++++++++++++++++++++********##****+++++++++++++*++++++++*****+*****################*******************************###########################################################################################################################################################################################################*++++++++==================- .++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==============+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****************++++++++++++++++++*##%%%##*++++++++++++**+++++++++++++*****++++++++++++++++*#************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++========================================++======+++++====+++===++=++++==+++++++++++++++++++++++++++++++***************************************************************************************************************************************************************************************************************************************************************************************************************#####********************************************************************************************************************####################**********++++===------------------------------------------=====-------===++***##################################################################################################################################################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#############################################################################################################################################################################################################################################################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#############################################################################################################################################################
*************************************************************************************************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++*****###########*********************************************+++++++++************************************************************************+++++++++++++++++++++++++*********#########################*********************************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@%%%%%%@@@@@@@@@@@@@@@@%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%################%%%%%%%%%%@@%%%%%%%%%%#############%%%%%%#############%%%%####******++++++++++*##%%%%%%###############################***********+++++=++++++++++++++++**************************++++++++++++++++******************************+++++++++++++++++==============================================================================================================+++++++++**********+=======++++++++++++++++++++++++++++++++++++********#####***+++++++++++++++++++++**++**+****#################***************************###########################################################################################################################################################################################################*++++++++===================- .++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=========++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***************++++++++++++++++++**#%%%##*+++++++++++++++++++++++++++++++++++++++++++++++++**************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++============================================++++++++===+========++===++++++++++++++++++++++++++++++++++**************************************************************************************************************************************************************************************************************************************************************************************************************#####*******************************************************************************************************************#####################**********++++===------------------------------------------======-------==++***##################################################################################################################################################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%############################################################################################################################################################################################################################################################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#############################################################################################################################################################
*************************************************************************************************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++*****###########*********************************************+++++++++***********************************************************************++++++++++++++++++++++++++********##########################********************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%%%%%%%@@@@@@@@@@@@@@@@%%@%@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%########%%%%%%%%%%@@%%%%%%%%%%%%#########%##%%%%%%#############%%%####*******++++++++++*###%%%%################################**********++++++++++++++++++++++++**************************+++++++++++++++*******************************+++++++++++++++++============================================================================================================++++++++++**********+===+=+=====+++++++++++++++++++++++++++++++++++****##########**++++++**+*****++++++**++*+++****##################**********************############################################################################################################################################################################################################*++++++++====================:.++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++======++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**************++++++++++++++++*+**#%%%##*++++++++++++++++++++++++++++++++++++++++++++++++++*************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=====================================++======++++========+++++==+++++++++++++++++++++++++++++++++++++***************************************************************************************************************************************************************************************************************************************************************************************************************####*******************************************************************************************************************#####################**********++++===-----------------------------------------========------==++***##################################################################################################################################################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%############################################################################################################################################################################################################################################################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#############################################################################################################################################################
************************************************************************************************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++*****##########*********************************************+++++++++********************************************************************+++++++++++++++++++++++++++++********#########################********************************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*++#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%%%%%%%%@@@@@@@@@@@@@@@@%%@%@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%####%%%%%%%%%%@@%%%%%%%%%%%%%%#####%%%%#%%%%%%%%###########%%%#####******++++++++++++#####%#################################**********+++++++++++++++++++++++++***************************+++++++++++++********************************++++++++++++++++============================================================================================================+++++++++***********+=+==========++++++++++++++++++++++++++++++++++++****############***+++**++++++*+++********++++****#################*******************############################################################################################################################################################################################################*++++++++=====================-+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*************++++++++++++++***+**#%%%##*+++++++++++++++++++++++++++++++++==+++++++++++++++++***********************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=====================================+==========++++++========+++++++++++++++++++++++++++++++++++++++***************************************************************************************************************************************************************************************************************************************************************************************************************####******************************************************************************************************************######################**********++++===-----------------------------------------========------==++***##################################################################################################################################################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%############################################################################################################################################################################################################################################################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#############################################################################################################################################################
************************************************************************************************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++******##########********************************************+++++++++********************************************************************+++++++++++++++++++++++++++++********#########################********************************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@%%%%%%%%%@@@@@@@@@@@@@@@%%@%@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%####%%%%%%%%%%%%%%%#########%%%#####*******++++++++++++*####%##################################*********++++++++++++++++++++++++++***************************++++++++++++********************************++++++++++++++++============================================================================================================++++++++***********+=++==============+++++++++++++++++++++++++++++++++++***#############***+++***++***+++++++*******+++***#################***************#############################################################################################################################################################################################################*++++++++======================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++************+++++++++++++****+++*##%###*+++++++++++++++++++++++++++++++++====++++++++++++++++**********************************+++++++++++++++++++++++++++++++++++++++++++=++++++++++++++++++++++++++========================================+++++++++=======+++++++++++++++++++++++++++++++++++++++++++++***************************************************************************************************************************************************************************************************************************************************************************************************************####*****************************************************************************************************************#######################**********++++===-----------------------------------------========------===++**###################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%############################################################################################################################################################################################################################################################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%############################################################################################################################################################
************************************************************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++*****##########********************************************++++++++*******************************************************************+++++++++++++++++++++++++++++++*******#########################*******************************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@%%%%%%%%%@@@@@@@@@@@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@%%%%%%%%%%%%%%%%@@@@@@@@%@@%%%%%%%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%#%%%%%%%%%%%%%%%%########%%%%####*******+++++++++++++*#######################################*********+++++++++++++++++++++++++++****************************++++++++++*********************************+++++++++++++++===========================================================================================================+++++++++***********+=+================+++++++++++++++++++++++++++++++++++****###############***++**+++++++++*****++***********#################***********#############################################################################################################################################################################################################*++++++++======================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***********++++++++++++****++++*##%###*++++====++++++++++++++++++++++++=======+++++++++++++++**********************************++++++++++++++++++++++++++++++++++++++++++=++++++++++++++++++++++++++=============================================+=====++++++++++++++++++++++++++++++++++++++++++++++++++***************************************************************************************************************************************************************************************************************************************************************************************************************####*****************************************************************************************************************#######################*********+++++====----------------------------------------=========-----===++**###################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%############################################################################################################################################################################################################################################################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%############################################################################################################################################################
************************************************************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++******#########********************************************++++++++******************************************************************++++++++++++++++++++++++++++++++*******#########################******************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@%%%%%%%%%%@@@@@@@@@@@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@%%%%%%%%%%%%%%@@@@@@@@@%%%@@%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######%%%%#####******+++++++++++++++#######################################*********+++++++++++++++++++++++++++******************************++++++++*********************************+++++++++++++++===========================================================================================================++++++++************+===++==============+++++++++++++++++++++++++++++++++++*****################***+**+++*****++++**+*************#################*******##############################################################################################################################################################################################################*+++++++++=====================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***********+++++++++***+**++++*#####*+++=======+++++++++++++++++++++++========++++++++++++++++********************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=========================================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***************************************************************************************************************************************************************************************************************************************************************************************************************####****************************************************************************************************************########################*********+++++====---------------------------------------==========------==++***##################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%############################################################################################################################################################################################################################################################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%############################################################################################################################################################
************************************************************************************************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++******#######*********************************************++++++++*****************************************************************+++++++++++++++++++++++++++++++++*******#########################******************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*+++++#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@%%%%%%%%%%%@@@@@@@@@@@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@%%%%%%%%%%%@@@@@@@@@@@%%%%@@%%%%%%%%%%%%%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####%%%%######******+++++++++++++++#######################################*********++++++++++++++++++++++++++++*******************************++++++*********************************+++++++++++++++==========================================================================================================+++++++++************+++++++================+=+++++++++++++++++++++++++++++++******##################****+**+++************************################****##############################################################################################################################################################################################################*+++++++++======================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++====+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++************++++++*****+***++*#####*++=========++++++++++++++++++++++=========++++++++++++++++*******************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=================================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***************************************************************************************************************************************************************************************************************************************************************************************************************####***************************************************************************************************************#########################*********+++++====---------------------------------------====++====------==++***##################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%############################################################################################################################################################################################################################################################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%############################################################################################################################################################
***********************************************************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++******#######*********************************************+++++++*******************************************************************++++++++++++++++++++++++++++++++******#########################**********************************************************************************************+++*****************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@%%%%%%%%@@@@@@@@@@@@%%%%%@@@%%%%%%%%%%%%@%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##%%%%%######******++++++++++++++++*#######################################********+++++++++++++++++++++++++++++**********************************+***********************************+++++++++++++++=========================================================================================================++++++++*******************+====================++++++++++++++++++++++++++++**********##################***++++***************************###############################################################################################################################################################################################################################*+++++++++======================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++=======++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******++************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++************+**********++++*#####*+===========+++++++++++++++++++++==========+++++++++++++++++*****************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=++++++++====++================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***************************************************************************************************************************************************************************************************************************************************************************************************************#####**************************************************************************************************************#########################*********+++++====---------------------------------------===++++====-----==++***##################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%############################################################################################################################################################################################################################################################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%############################################################################################################################################################
***********************************************************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++*******######*********************************************+++++++*************************************************************+******+++++++++++++++++++++++++++++++******########################**********************************************************************************************++++*****************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@%%%%@@@@@@@@@@@@@@%%%%%%@@%%%%%%%%%%%%@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######******++++++++++++++++*#######################################********+++++++++++++++++++++++++++++**********************************************************************+++++++++++++++========================================================================================================+++++++++*******************+====================+++++++++++++++++++++++++++**************##################****+++***+******+****************############################################################################################################################################################################################################################*++++++++++======================+++++++++++++++++++++++++++++++++++++++++++++++++++++++========++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++====+++++++++********************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********************+++++*#####*+===========+++++++++++++++++++++==========++++++++++++++++++*****************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++====++++++=====+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***************************************************************************************************************************************************************************************************************************************************************************************************************#####**************************************************************************************************************#########################*********+++++====---------------------------------------===+++++===-----===+***##################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#############################################################################################################################################################################################################################################################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%############################################################################################################################################################
***********************************************************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++********#####*********************************************+++++++*************************************************************+*****++++++++++++++++++++++++++++++++******########################**********************************************************************************************+++++***************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*++++*#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@%@@@@@@@@@@@@@@@@@@%%%%%%%%@@@%%%%%%%%@%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######*****+++++++++++++++++*#######################################*******+++++++++++++++++++++++++++++++*********************************************************************+++++++++++++++========================================================================================================++++++++*********************+===================+++++++++++++++++++++++++++****************####################***++****************************#########################################################################################################################################################################################################################*++++++++++======================++++++++++++++++++++++++++++++++++++++***++++++++++++===========+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++========+++++++***************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********************+++++*#####*+============+++++++++++++++++++++==========++++++++++++++++++****************************++++++++++++++++++++++++++++++++++++++++++=++++++++++++++++++++++++++++++========++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***************************************************************************************************************************************************************************************************************************************************************************************************************#####**************************************************************************************************************#########################*********+++++====---------------------------------------===++++++==-----===++***#################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#############################################################################################################################################################################################################################################################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%############################################################################################################################################################
***********************************************************************************************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++********###**********************************************++++++*******************************************************************+++++++++++++++++++++++++++++++++******#######################***********************************************************************************************+++++**************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@%%%%%%%@@@@@@@@@@%%%%%%%%%%%%@@%%%%%%%@@%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########*****+++++++++++++++++*########################################******++++++++++++++++++++++++++++++++********************************************************************+++++++++++++++========================================================================================================++++++++*********************+=====================+++=+++++++++++++++++++++********************###################***********+*********************######################################################################################################################################################################################################################*++++++++++=======================+++++++++++++++++++++++++++++++++******+++++++++++==============++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===============++++++*******+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******************++++++*#####*+============+++++++++++++++++++++==========++++++++++++++++++++**************************++++++++++++++++++++++++++++++++++++++++++=+++++++++++++++++++++++++++======+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****************************************************************************************************************************************************************************************************************************************************************************************************************####*************************************************************************************************************##########################*********+++++====---------------------------------------===++++++===----===++***#################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#############################################################################################################################################################################################################################################################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%############################################################################################################################################################
**********************************************************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++*********************************************************++++++**************************++++***************************************+++++++++++++++++++++++++++++++******########################*********************************************************************************************+++++++************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%%%%%%@%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######*****+++++++++++++++++++*####%##################################******+++++++++++++++++++++++++++++++++********************************************************************++++++++++++++========================================================================================================++++++++*********************+==========================+++++++++++++++++++***********************#####################***++***************************###################################################################################################################################################################################################################*++++++++++========================+++++++++++++++++++++++++++++++*********++++++==================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******************++++++*#####*+============++++++++++++++++++++++==========++++++++++++++++++++*************************++++++++++++++++++++++++++++++++++++++++++=++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****************************************************************************************************************************************************************************************************************************************************************************************************************####*************************************************************************************************************##########################*********+++++====---------------------------------------===+++++++===---===+++***################################################################################################################################################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#############################################################################################################################################################################################################################################################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%############################################################################################################################################################
**********************************************************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++*********************************************************+++++************************++++++++++************************************+++++++++++++++++++++++++++++++******########################*********************************************************************************************+++++++**********##***********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*++#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@%%%%@%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########*****+++++++++++++++++++*####%##################################******++++++++++++++++++++++++++++++++++*******************************************************************++++++++++++++======================================================================================================+++++++++**********************+===========================++++++++++++++++++**************************######################******************************#################################################################################################################################################################################################################*+++++++++++=========================+++++++++++++++++++++++++++++********+++++====================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******************++++++*#####*+============++++++++++++++++++++++==========++++++++++++++++++++++************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***************************************************************************************************************************************************************************************************************************************************************************************************************####*************************************************************************************************************##########################*********+++++====----------------------------------------==++***+++===--====++***################################################################################################################################################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#############################################################################################################################################################################################################################################################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###########################################################################################################################################################
**********************************************************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++*********************************************************+++++************************++++++++++++*******+++**++**********************+++++++++++++++++++++++++++++******#######################**********************************************************************************************+++++++*******########*******++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@%%@@%@@%%%%%%%%%%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%#########****++++++++++++++++++++*#######################################******++++++++++++++++++++++++++++++++++*******************************************************************++++++++++++++======================================================================================================+++++++++**********************==============================+++++++++++++++++****************************######################***************************#################################################################################################################################################################################################################*+++++++++++====================================++++++++++++++++++++**++++++++======================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******************+++++++*####*+============++++++++++++++++++++++==========+++++++++++++++++++++++***********************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**************************************************************************************************************************************************************************************************************************************************************************************************************#####************************************************************************************************************##########################*********+++++====---------------------------------------===++****+++========++****################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#############################################################################################################################################################################################################################################################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###########################################################################################################################################################
**********************************************************************************************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++********************************************************+++++***********************+++++++++++++++**+++++++++++**********##***********+++++++++++++++++++++++++++******######################***********************************************************************************************++++++++*****##########******++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*++++*#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@%@%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%#########****+++++++++++++++++++++*######################################******+++++++++++++++++++++++++++++++++++******************************************************************+++++++++++++++====================================================================================================+++++++++********##************+==============================+++++++++++++++++******************************#######################************************#################################################################################################################################################################################################################++++++++++++=====================================+++++++++++++++++++++++++++++=======================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===============+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****************+*++++++*###**+============+++++++++++++++++++++++=========++++++++++++++++++++++++**********************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**************************************************************************************************************************************************************************************************************************************************************************************************************#####************************************************************************************************************##########################*********+++++====-------------------------------==------===++*****++========++****################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#############################################################################################################################################################################################################################################################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###########################################################################################################################################################
**********************************************************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++*******************************************************++++***********************+++++++++++++++++++++++++++++++********##************++++++++++++++++++++++++++******#######################**********************************************************************************************++++++++*****##########*****+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*+*#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%##########***++++++++++++++++++++++*######################################*****+++++++++++++++++++++++++++++++++++++*****************************************************************+++++++++++++++===================================================================================================++++++++++*******##*************+===============================++++++++++++++++++*******************************#######################********************#################################################################################################################################################################################################################*++++++++++++==================================================++++++++++++++++========================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==============++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***************++++++++*###**+============+++++++++++++++++++++++==========+++++++++++++++++++++++++*******+++++++++****++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****************************************************************************************************************************************************************************************************************************************************************************************************************#####***********************************************************************************************************###########################*********+++++====-------------------------------===-----===++******+++=====+++****################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#############################################################################################################################################################################################################################################################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###########################################################################################################################################################
*************************************************************************************************++++*****************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++******************************************************+++************************+++++++++++++++++++++++++++++++********##************++++++++++++++++++++++++++******#######################***********************************************************************************************+++++++*****###########****+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*+*#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##########***+++++**+++++++++++++++**#####################################*****++++++++++++++++++++++++++++++++++++++*****************************************************************++++++++++++++===================================================================================================+++++++++******###**************+===============================++++++++++++++++++****************++++++++**********#######################*****************#################################################################################################################################################################################################################*++++++++++++===================================================++++++++++++++++========================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++============+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***************++++++++*###**+============++++++++++++++++++++++++=========+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****************************************************************************************************************************************************************************************************************************************************************************************************************#####***********************************************************************************************************###########################*********+++++====------------------------------=====----==++********++++++++++****################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#############################################################################################################################################################################################################################################################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###########################################################################################################################################################
************************************************************************************************+++++++++*************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***************************************************+++************************+++++++++++++++++++++++++++++++********##*************+++++++++++++++++++++++++******#######################***********************************************************************************************+++++++****############****+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*+++++*#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###########**++++++**+++++++++++++++**######################################****+++++++++++++++++++++++++++++++++++++++****************************************************************++++++++++++++===================================================================================================+++++++++*****####**************+===============================+++++++++++++++++++++++++++++++++++++++++++++*********#########################*************#################################################################################################################################################################################################################++++++++++++====================================================+++++++++++++++++=======================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===========+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**************++++++++*###**+============++++++++++++++++++++++++=========++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****************************************************************************************************************************************************************************************************************************************************************************************************************#####***********************************************************************************************************###########################*********+++++=====-----------------------------======---===+**********++++++******################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%##############################################################################################################################################################################################################################################################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###########################################################################################################################################################
************************************************************************************************++++++++++++++********************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****************************************************************************+++++++++++++++++++++++++++++++********##**************++++++++++++++++++++++++******#######################************************************************************************************************+++++*****####%%######****+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*++*++*#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%############**++++++++++++++++++++++++*######################################****++++++++++++++++++++++++++++++++++++++++***************************************************************+++++++++++++++=================================================================================================+++++++++****####****************+===============================+++++++++++++++++++++++++++++++++++++++++++++************#########################*********#################################################################################################################################################################################################################*++++++++++++==================================================++++++++++++++++++++=======================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==========++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*************++++++++*###**+============+++++++++++++++++++==============+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******************************************************************************************************************************************************************************************************************************************************************************************************************#####**********************************************************************************************************##############%#############*********+++++=====-----------------------------=======-===++*********************#################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%##############################################################################################################################################################################################################################################################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%############################################################################################################################################################
***********************************************************************************************++++++++++++++++++++++++***********************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***************************************************************************+++++++++++++++++++++++++++++++********##***************++++++++++++++++++++++*******########################**************************************************************************************************++*****####%%%%####****+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###########**+++++++++++++++++++++++++**#####################################****+++++++++++++++++++++++++++++++++++++++++**************************************************************+++++++++++++++================================================================================================++++++++++*######*****************+===============================+++++++++++++++++++++++++++++++++++++++++++++++++**********##########################******#################################################################################################################################################################################################################*++++++++++++=================================================+++++++++++++++++++++========================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++==========+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++************++++++++*###**+============+++++++++++++++===================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******************************************************************************************************************************************************************************************************************************************************************************************************************#####*********************************************************************************************************###############%#############*********++++++====----------------------------============++***####************###################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%###############################################################################################################################################################################################################################################################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%############################################################################################################################################################
***********************************************************************************************+++++++++++++++++++++++++++++++++++***********************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**************************************************************************++++++++++++++++++++++++++++++*********##***************++++++++++++++++++++++*******########################*********************************************************************************************************####%%%%####***++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*+*++*+++*#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%@%%%%%@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%############**+++++++++++++++++++++++++**#####################################****++++++++++++++++++++++++++++++++++++++++++*************************************************************+++++++++++++++================================================================================================+++++++++*######******************++==============================++++++++++++++++++++++++++++++++++++++++++++++++++***********###########################***#################################################################################################################################################################################################################++++++++++++==================================================++++++++++++++++++++++========================+++++++++++++++++++++++++++++++++++++++++++++++++++++++========+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***********++++++++*##***+============+++++++++++++=====================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********************************************************************************************************************************************************************************************************************************************************************************************************************####*******************************************************************************************************#################%#############*********++++++====----------------------------============++***######********#####################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%################################################################################################################################################################################################################################################################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%############################################################################################################################################################
**********************************************************************************************+++++++++++++++++++++++++++++++++++++++++**********************+++++++*************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*************************************************************************++++++++++++++++++++++++++++++*********##****************+++++++++++++++++++++*******########################**********************************************************************************************************###%%%%###****++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*++*+*+*+*#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###########**++++++++++++++++++++++++++**#####################################****+++++++++++++++++++++++++++++++++++++++++++*************************************************************++++++++++++++===============================================================================================+++++++++*######*******************+===============================+++++++++++++++++++++++++++++++++++++++++++++++++***************############################################################################################################################################################################################################################################++++++++++++=================================================+++++++++++++++++++++++=========================++++++++++++++++++++++++++++++++++++++++++++++++++++=======+++++++++++++++++++++++++++++=+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********++++++++*##***+============+++++++++++=======================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********************************************************************************************************************************************************************************************************************************************************************************************************************##*****************************************************************************************************###################%%%#############********++++++====----------------------------===========++****###################################################################################################################################################################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%################################################################################################################################################################################################################################################################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#############################################################################################################################################################
**********************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***********************************************************************+++++++++++++++++++++++++++++++*********##****************+++++++++++++++++++++*******#########################*********************************************************************************************************###%%%####****++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*+*+*#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@%%%@%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%############**++++++++++++++++++++++++++**#####################################****++++++++++++++++++++++++++++++++++++++++++++************************************************************++++++++++++++===============================================================================================++++++++*######********************+===============================+++++++++++++++++++++++++++++++++++++++++++++++++++***************##########################################################################################################################################################################################################################################++++++++++++================================================++++++++++++++++++++++++==========================+++++++++++++++++++++++++++++++++++++++++++++++++======+++++++++++++++++++++++++++===+++=++++++=++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********++++++++*#****+============+++++++++++=======================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************####*###################%%%#############********++++++====----------------------------====+++++++++***#####################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%################################################################################################################################################################################################################################################################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#############################################################################################################################################################
**********************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***********************************************************************+++++++++++++++++++++++++++++++*********#%*****************++++++++++++++++++++*********########################********************************************************************************************************####%%####****++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*++#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%###########**+++++++++++++++++++++++++++**#####################################*****++++++++++++++++++++++++++++++++++++++++++++***********************************************************+++++++++++++++=============================================================================================++++++++*######*********************++==============================++++++++++++++++++++++++++++++++++++++++++++++++++++****************########################################################################################################################################################################################################################################++++++++++++===============================================+++++++++++++++++++++++++============================+++++++++++++++++++++++++++++++++++++++++++========++++++++++++++++++++++++++=================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********++++++++*##***+============+++++++++==========================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************########################%%%#############********++++++====----------------------------===+++++++++****#####################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#################################################################################################################################################################################################################################################################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#############################################################################################################################################################
**********************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********************************************************************+++++++++++++++++++++++++++++++*********#%#****************++++++++++++++++++++**********######################*********************************************************************************************************#########*****++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@%%%%%%%%%%%%%############**+++++++++++++++++++++++++++**#####################################*****+++++++++++++++++++++++++++++++++++++++++++++**********************************************************+++++++++++++++============================================================================================++++++++*#######*********************+===============================+++++++++++++++++++++++++++++++++++++++++++++++++++++*****************######################################################################################################################################################################################################################################++++++++++++===============================================+++++++++++++++++++++++++=============================+++++++++++++++++++++++++++++++++++++++++======++++++++++++++++++++++++++====================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********++++++++*##***+============+++++++============================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************########################%%%#############********++++++====----------------------------==++++*+********#####################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#################################################################################################################################################################################################################################################################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##############################################################################################################################################################
**********************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********************************************************************++++++++++++++++++++++++++++++**********#%#****************++++++++++++++++++++******************###############********************************************************************************************************#########****+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*++*++#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@%%%%%%%%%%%%%############**+++++++++++++++++++++++++++**####################################******++++++++++++++++++++++++++++++++++++++++++++++**********************************************************++++++++++++++===========================================================================================+=++++++*#######**********************+==============================+++++++++++++++++++++++++++++++++++++++++++++++++++++++******************###################################################################################################################################################################################################################################*++++++++++++=============================================+++++++++++++++++++++++++++===============================+++++++++++++++++++++++++++++++++++++=====+++++++++++++++++++++++++++======================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********++++++++*##***+============+++++===============================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************############################%%%#############********++++++====---------------------------===+++*********#######################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%##################################################################################################################################################################################################################################################################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##############################################################################################################################################################
**********************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******************************************++***********************++++++++++++++++++++++++++++++**********#%#*****************+++++++++++++++++++************************#########********************************************************************************************************########****++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@%%%%%%%%%%%%%%###########***++++++++++++++++++++++++++++*####################################*******+++++++++++++++++++++++++++++++++++++++++++++**********************************************************++++++++++++++==============+++==========================================================================+++++++*#######***********************+==============================++++++++++++++++++++++++++++++++++++++++++++++++++++++++********************################################################################################################################################################################################################################################*++++++++++++============================================+++++++++++++++++++++++++++==================================++++++++++++++++++++++++++++++++++====+++++++++++++++++++++++++==++==++++================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********+++++++*##***+================================================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************##############################%%%#############********++++++====---------------------------===++*********########################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%##################################################################################################################################################################################################################################################################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###############################################################################################################################################################
***********************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******************************************+++**********************++++++++++++++++++++++++++++++**********#%#*****************+++++++++++++++++++*************************#######*********************************************************************************************************#######*****++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*+++++*+**%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@%%%%%%%%%%%%%%###########***++++++++++++++++++++++++++++**###################################******+++++++++++++++++++++++++++++++++++++++++++++++**********************************************************++++++++++++++============+++++========================================================================+++++++*########***********************+============================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********************#############################################################################################################################################################################################################################+++++++++++++===========================================++++++++++++++++++++++++++++=====================================++++++++++++++++++++++++++++++==++++++++++++++++++++++++=================================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******+++++++*###**+==================================--============++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************##############################%%%%############********++++++====---------------------------===++*******##########################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%###################################################################################################################################################################################################################################################################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###############################################################################################################################################################
***********************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****************************************+++++*********************++++++++++++++++++++++++++++++**********#%#******************++++++++++++++++++*****************************************************************************************************************************************######*****+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*++*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@%%%%%%%%%%%%%##########****++++++++++++++++++++++++++++**###################################*******+++++++++++++++++++++++++++++++++++++++++++++++*******************+++***********************************++++++++++++++==========+++++++++++===================================================================+++++++*########************************+============================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********************###########################################################################################################################################################################################################################+++++++++++++==========================================+++++++++++++++++++++++++++++========================================++++++++++++++++++++++++++++++++++++++++++++++++++++====+++============================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******+++++++*###**+================================-----===========++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**++++++**********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************##############################%%%%############********++++++====---------------------------===++****#############################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%####################################################################################################################################################################################################################################################################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%################################################################################################################################################################
***********************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****************************************++++++********************++++++++++++++++++++++++++++++**********#%#******************++++++++++++++++++****************************************************#*************************************************************************************###******++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*++**+++*+*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@%%%%%%%%%%%##########****++++++++++++++++++++++++++++**###################################*******++++++++++++++++++++++++++++++++++++++++++++++++******************++++**********************************+++++++++++++++=======+++++++++++++++================================================================+++++++*########*************************============================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********************#########################################################################################################################################################################################################################++++++++++++++========================================+++++++++++++++++++++++++++++===========================================+++++++++++++++++++++++++++++++++++++++++++++++==+==+++===+++===+====================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******+++++++*####*+===============================-------==========++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*************+++***********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************#############################%%%%############********++++++====---------------------------===++***##############################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#####################################################################################################################################################################################################################################################################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%#################################################################################################################################################################
************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****************************************+++++++*******************+++++++++++++++++++++++++++++***********#%#******************++++++++++++++++++***************************************************####************************************************************************+++++**************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*+**++*++**+*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%##########****++++++++++++++++++++++++++++**###################################*******++++++++++++++++++++++++++++++++++++++++++++++++******************+++++*********************************++++++++++++++++======++++++++++++++++==============================================================+++++++**#######**************************============================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********************#######################################################################################################################################################################################################################*+++++++++++++++======================================++++++++++++++++++++++++++++++===============================================+++++++++++++++++++++++++++++++++++++++++++++==++++====+=========================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****+++++++*####*+==============================---------=========++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****++++++++++++***************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************#############################%%%%############********++++++====---------------------------===++***###############################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#####################################################################################################################################################################################################################################################################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%##################################################################################################################################################################
***********************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***************************************+++++++*******************++++++++++++++++++++++++++++++**********#%#******************+++++++++++++++++++***********++++++*******************************#######************************************************************++++++++++++++++************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*+**+*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@%%%%%%%%%%%%%%@@%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%##########****++++++++++++++++++++++++++++**#%#################################*******++++++++++++++++++++++++++++++++++++++++++++++++++***************++++++**********************************+++++++++++++++++++++++++++++++++++++==============================================================++=+++*########***************************============================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********************#####################################################################################################################################################################################################################*+++++++++++++++=====================================++++++++++++++++++++++++++++++==========================================================+++++++++++++++++++++++++++++++++++========================================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******++++++*####*+=============================-----------=========++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******++++++**********++++++++************+++************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************#############################%%%%############********++++++=====--------------------------===++***###############################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#######################################################################################################################################################################################################################################################################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%####################################################################################################################################################################
************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***************************************+++++++*******************+++++++++++++++++++++++++++++***********#%#******************+++++++++++++++++++**********+++++++++++***************************########******************************************************+++++++++++++++++++++***********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*+**+*#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%@%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%##########****++++++++++++++++++++++++++++**#%################################*********+++++++++++++++++++++++++++++++++++++++++++++++++***************++++++**********************************+++++++++++++++++++++++++++++++++++++++===========================================================++++++**####*******************************============================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********************####################################################################################################################################################################################################################+++++++++++++++++===================================++++++++++++++++++++++++++++++==========================================================++++++++++++++++++++++++++++++++++++========================================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******+++++*#####*============================------------==========+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******++++++**********++++++++************+++*************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************############################%%%%############********++++++=====--------------------------===++***###############################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%######################################################################################################################################################################################################################################################################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%#####################################################################################################################################################################
************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***+++++++*******++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**************************************+++++++*******************+++++++++++++++++++++++++++++***********#%#******************+++++++++++++++++++*********+++++++++++++++************************#########**************************************************++++++++++++++++++++++++**********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*++**+*#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@%%%%%%%%%%%%%%%%%%%%@@@@%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@%%%%%%%%%%%%%##########****++++++++++++++++++++++++++++**##################################*********++++++++++++++++++++++++++++++++++++++++++++++++++***************++++++*********************************+++++++++++++++++++++++++++++++++++++++==========================================================++=++++*####********************************=============================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********************#################################################################################################################################################################################################################*+++++++++++++++++=================================++++++++++++++++++++++++++++++++=========================================================+++++++++++++++++++++++++++++++++++++========================================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****+++++*#####*+===========================------------=======++=++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********++++******************************+++*************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************############################%%%%############********++++++=====--------------------------===++***###############################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%######################################################################################################################################################################################################################################################################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%#######################################################################################################################################################################
************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*************************************++++++++******************+++++++++++++++++++++++++++++***********#%#******************+++++++++++++++++++********+++++++++++++++++++++++++++++++*********##########************************************************+++++++++++++++++++++++++********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**+**+*#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%%%%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%##########****++++++++++++++++++++++++++++**##%###############################*********++++++++++++++++++++++++++++++++++++++++++++++++++***************++++++*********************************++++++++++++++++++++++++++++++++++++++++========================================================+++++++#####*********************************=============================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********************###############################################################################################################################################################################################################*++++++++++++++++++++++==========================+++++++++++++++++++++++++++++++++=======================================================++++++++++++++++++++++++++++++++++++++++========================================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****+++++*#####*+=============================-----------=========+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********+++******************************++**************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************############################%%%%############********++++++=====--------------------------===++***###############################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%######################################################################################################################################################################################################################################################################################################################################################################################################################################################################%%%%%%%%%%%%%#########################################################################################################################################################################
*************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*************************************++++++++******************+++++++++++++++++++++++++++++***********#%#******************++++++++++++++++++++******+++++++++++++++++++++++++++++++++++++****##########***********************************************++++++++++++++++++++++++++******+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**+++*+*#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%@@@@%%%%%%%%%%%%%%%%%%%%%%%@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%##########****++++++++++++++++++++++++++++*###%###############################*********++++++++++++++++++++++++++++++++++++++++++++++++++***************++++++**********************************++++++++++++++++++++++++++++++++++++++++=========================================================++++*####**********************************=============================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******************###############################################################################################################################################################################################################+++++++++++++++++++++++++==--==================+++++++++++++++++++++++++++++++++++=====================================================++++++++++++++++++++++++++++++++++++++++++===========================================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****+++**######*++++===============+++++++======----------=======+=+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++************+*******************************++**************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************############################%%%%############********++++++=====--------------------------===++***###############################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%#####################################################################################################################################################################################################################################################################################################################################################################################################################################################################%%%%%%%%%############################################################################################################################################################################
*************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***********************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*************************************+++++++******************+++++++++++++++++++++++++++++***********#%#******************++++++++++++++++++++*****+++++++++++++++++++++++++++++++++++++++***#############*******************************************+++++++++++++++++++++++++++*****++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**+++**+**+*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%##########****++++++++++++++++++++++++++++*###%###############################*********+++++++++++++++++++++++++++++++++++++++++++++++++++**************++++++**********************************+++++++++++++++++++++++++++++++++++++++++========================================================+++*####***********************************==============================++==+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******************#############################################################################################################################################################################################################*++++++++++++++++++++++++++====================++++++++++*+*********++++++++++++++++=================================================+++++++++++++++++++++++++++++++++++++++++++++============================================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********###%##*++++++===+++++++===+++++++++++====--------=========+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********************************************++**************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************###########################%%%%%#############*******++++++=====---------------------------==++***###############################################################################################################################################################################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%#########################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################
*************************************************************************************************++++++++++++++++++++++***++++++++++++++++++++++++++++++++++++++++************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++************************************+++++++******************+++++++++++++++++++++++++++++***********#%#*******************+++++++++++++++++++****++++++++++++++++++++++++++++++++++++++++***###############******************************************++++++++++++++++++++++++++***++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*++*+++*++*+*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%##########****++++++++++++++++++++++++++++*###%###############################**********++++++++++++++++++++++++++++++++++++++++++++++++++*************+++++++**********************************++++++++++++++++++++++++++++++++++++++++++======================================================+++*####************************************==================================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******************####**####################################################################################################################################################################################################*++++++++++++++++++++++++++====++++++======++++++++++++*************++++++++++++++++++++===========================================+++++++++++++++++++++++++++++++++++++++++++++++============================================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********###%##*+++++++++++++++++==++++++++++++++===-------=========++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************###########################%%%%%#############*******++++++=====---------------------------==++***###############################################################################################################################################################################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%#######################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################
*************************************************************************************************++++++++++++++++++++******+++++++++++++++++++++++++++++++++++++++************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***********************************+++++++******************+++++++++++++++++++++++++++++***********#%#*******************++++++++++++++++++++***++++++++++++++++++++++++++++++++++++++++***#################*****************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*++**+**+**+*#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%@@@@%%@@%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%##########****++++++++++++++++++++++++++++*###%###############################**********++++++++++++++++++++++++++++++++++++++++++++++++++*************+++++++**********************************++++++++++++++++++++++++++++++++++++++++++========================++++=========================+++*####*************************************==================================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********************#####################################################################################################################################################################################################****+++++++++++++++++++++++++==++++++++++++++++++++++++*************+++++++++++++++++++++++++====================================++++++++++++++++++++++++++++++++++++++++++++++++++============================================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********###%%#*++++++++++++++++++==++++++++++++++==----------======++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************###########################%%%%%#############*******++++++=====---------------------------==++***###############################################################################################################################################################################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%######################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################
************************************************************************************************++++++++++++++++++++*********+++++++++++++++++++++++++++++++++++**************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***********************************+++++++******************+++++++++++++++++++++++++++++***********#%#*******************+++++++++++++++++++++*+++++++++++++++++++++++++++++++++++++++++***####%%#################***************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********************+*+**+*#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%%%%%%%%%%%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%##########*****+++++++++++++++++++++++++++*###%###############################**********+++++++++++++++++++++++++++++++++++++++++++++++++++*************++++++**********************************++++++++++++++++++++++++++++++++++++++++++++====================+++++++++=====================+++*####*************************************+====================================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**************************##############################################################################################################################################################################################******++++++++++++++**++++++++++++++++++++++++++++++*****************+++++++++++++++++++++++++=================================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==========================================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******##%%##+++++++++++++++++++==++++++++++**++==-----------====+=++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********************++****************************************************************************************************************************************************************************************************************************########****************************************************************************************************************************************************************************************************************###########################%%%%%#############*******++++++=====---------------------------==++**#################################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%######################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################
************************************************************************************************++++++++++++++++++++**********+++++++++++++++++++++++++++++***++**************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********************************+++++++******************+++++++++++++++++++++++++++++***********#%#*******************+++++++++++++++++++++*+++++++++++++++++++++++++++++++++++++++++***###%%%%%###########################******************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++************************++*++*#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%%%%%%%%%%%@@@@%@%%%%%%%%%%%%%%%%%%%%@%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##########*****+++++++++++++++++++++++++++*###%################################*********+++++++++++++++++++++++++++++++++++++++++++++++++++*************++++++***********************************+++++++++++++++++++++++++++++++++++++++++++==================+++++++++++===================+==+**###**************************************+====================================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****************************#########################################################################################################################################################################################*********++++++++********++++++++++++++++++++++++++*******************++++++++++++++++++++++++++=============================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===========================================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******##%%##+++++++++++++++++++==++++++++++**+++==-------------==+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*************************************************************************************************************************************************************************************************************************************************##########***************************************************************************************************************************************************************************************************************###########################%%%%%%############*******++++++=====---------------------------==++**#################################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%#####################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################
*************************************************************************************************++++++++++++++++++***********++++++++++++++++++++++++++**********************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********************************++++++++*****************+++++++++++++++++++++++++++++***********#%%*******************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***###%%%%%%%#########################*********************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***********************+*++**++*#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@%%%%%%%%%%%@@@@%%%%%%%%%%%%%%%%%%%%%%@%%@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##########*****+++++++++++++++++++++++++++*###%#################################********+++++++++++++++++++++++++++++++++++++++++++++++++++*************++++++***********************************++++++++++++++++++++++++++++++++++++++++++++===============++++++++++++++==================+=+*#####**************************************+====================================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****************************************#*########################################################################################################################################################################****************************+++++++++++++++++++++*********************++++++++++++++++++++++++++++=========================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++============================================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******##%%##+++++++++++++++++++++=++++++++***++++=--------------==++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***********************************************************************************************************************************************************************************************************************************************##############***##********************************************************************************************************************************************************************************************************###########################%%%%%%############*******++++++=====---------------------------==++**#################################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%####################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################
**************************************************************************************************+++++++++++++++++************+++++++++++++++++++++++++*++++*****************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********************************++++++++*****************+++++++++++++++++++++++++++++***********#%%*******************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***###%%%%%%%%#########################**********************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*************************+**++**++*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%%%%%%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###########*****+++++++++++++++++++++++++++*##%%#################################********+++++++++++++++++++++++++++++++++++++++++++++++++++*************++++++***********************************+++++++++++++++++++++++++++++++++++++++++++++========++++++++++++++++++++=============+==+==+**####***************************************+=======================================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++************************************************#########################################################################********#############################################################################*********************************+++++++++++++++++**********************++++++++++++++++++++++++++++++==========+=========++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==============================================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**+***##%%##*++++++++++++++++++++==+++++++*#*+++++=-:-:----------==+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********************************************************************************************************************************************************************************************************************************************#########################****************************************************************************************************************************************************************************************************###########################%%%%%%############*******++++++=====---------------------------==++**#################################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%##################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################
***************************************************************************************************+++++++++++++++**************++++++++++++++++++++++++++++++***************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******************************++++++++*****************+++++++++++++++++++++++++++++***********#%%*******************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***###%%%%%%%%%%%######################***********************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****************************++**++++*+*#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@%%%%%%%%%%%@@@@%%%%%%%%%%%%%%%%%%%%%%%@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###########******++++++++++++++++++++++++++*###%#################################********++++++++++++++++++++++++++++++++++++++++++++++++++++************++++++***********************************++++++++++++++++++++++++++++++++++++++++++++++=======++++++++++++++++++++=============+==+=+*#####****************************************+=======================================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****************************************************##########################################################********************##################################********##############################************************************+++++*********************************+++++++++++++++++++++++++++++++++++=====+======++++++++++++++++++++++++++++++=====++++++++++++++++++++++++++++++++++++++++================================================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**+***##%%##*+++++++++++++++++++++=+++++++*#*+++++=-::::::--------==++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****************************************************************************************************************************************************************************************************************************************#######################################*******************************************************************************************************************************************************************************************###########################%%%%%%############*******++++++======--------------------------==++**#################################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%##################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################
***************************************************************************************************+++++++++++++++*************+++++++++++++++++++++++++++++++***************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****************************+++++++++****************++++++++++++++++++++++++++++************#%%#******************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**####%%%%%%%%%%%%%%##################*************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****************************++++***+*+*+*#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@%%%%%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###########******+++++++++++++++++++++++++**###%#################################********++++++++++++++++++++++++++++++++++++++++++++++++++++************++++++************************************+++++++++++++++++++++++++++++++++++++++++++++++=====+++++++++++++++++++++================+*#####*****************************************+=======================================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******************************************************################################################****************************#####################********************************************###***************************************************************************++++++++++++++++++++++++++++++++++++========+++++++++++++++++++++++++++++++===========++++++++++++++++++++++++++++++++++++===================================================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*+*##%%##*+++++++++++***+++++++++++++++*#**+++++=-::::::--------=++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***************************************************************************************************************************************************************************************************************************************###########################################****************************************************************************************************************************************************************************************###########################%%%%%%############*******++++++======--------------------------==++**#################################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%#################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################
****************************************************************************************************++++++++++++++*************+++++++++++++++++++++++++++++++++*************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***************************+++++++++****************++++++++++++++++++++++++++++************#%%#******************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***###%%%%%%%%%%%%%%%%%%%%%%%%%#######**************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********************************++****+****%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@%%%%%%%%%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###########******+++++++++++++++++++++++++**###%##################################*******++++++++++++++++++++++++++++++++++++++++++++++++++++************++++++************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==========+===++#####******************************************+=======================================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********************************************************###############################*******************************************#############*******************************************************************************************************************************+++++++++++++++++++++++++++++++++++=====+=+++++++++++++++++++++++========================++++++++++++++++++++++++++++++++====================================================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*##%%##*++++++++++*****+++++++++++++**##*+++++=-::::::::-------==++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**++**************************************************************************************************************************************************************************************************************************************############################################****************************************************************************************************************************************************************************************###########################%%%%%%############*******++++++======--------------------------==++**#################################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################
*****************************************************************************************************+++++++++++++************++++++++++++++++++++++++++++++++++*+***********************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**************************+++++++++****************++++++++++++++++++++++++++++************#%%#******************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***###%%%%%%%%%%%%%%%%%%%%%%%%%%%#####**************************************+++++++++++++++++++++++++++++++++++++++++++++++++++****+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******************************+*****+*+**+*+**%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@%%%%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###########******+++++++++++++++++++++++++**###%##################################*******+++++++++++++++++++++++++++++++++++++++++++++++++++++***********++++++************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=++++++++++++++===========+==+#####*******************************************+=======================================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********************************************************######################****************************************************##***************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===============================++++++========++++++++++++++++====================================================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*##%%##++++++++++*******++++++++++++*###*++++++=::::::::::------=+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***++**************************************************************************************************************************************************************************************************************************************#############################################***************************************************************************************************************************************************************************************###########################%%%%%%############*******++++++======--------------------------==++**#################################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################
********************************************************************************************************++++++++++************++++++++++++++++++++++++++++++++++++++*****************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***********************+++++++++++**************+++++++++++++++++++++++++++++************#%%#******************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***####%%%%%%%%%%%%%%%%%%%%%%%%%%%####*************************************++++++++++++++++++++++++++++++++++++++++++++++++**********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***********************+*****++*****************#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@%%%%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%@@@@%@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###########******+++++++++++++++++++++++++**##%%%#################################********++++++++++++++++++++++++++++++++++++++++++++++++++++************++*++*************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++===++++++++++++++++==+==+==+====+#####********************************************+========================================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********************************************************###########****************************************************************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=================================================++++++++++++========================================================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*##%%##++++++++++********+++++++++++*###*++++++=:::::::::::------==++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++****++*************************************************************************************************************************************************************************************************************************************###############################################***************************************************************************************************************************************************************************************##########################%%%%%%############*******++++++======--------------------------==++***################################################################################################################################################################################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%###############################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################
********************************************************************************************************++++++++++++********++++++++++++++++++++++++++++++++++++++++++**+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********************+++++++++++**************+++++++++++++++++++++++++++++************#%%#******************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***###%%%%%%%%%%%%%%%%%%%%%%%%%%%%####***********************************++++++++++++++++++++++++++++++++++++++++++++++***************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++************************************************#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@%%%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###########******+++++++++++++++++++++++++**##%%%#################################********+++++++++++++++++++++++++++++++++++++++++++++++++++++***********++++**************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++==++++++++++++++++++==++=++=+==+#####*********************************************+========================================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***************************************************#######*********************************************************************************************************************************************#########################*************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++=====================================================++++++++++++========================================================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*##%%##++++++++++********++++++++++*#####++++++=-::::::::::::::---=++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******************************************************************************************************************************************************************************************************************************************###############################################***************************************************************************************************************************************************************************************##########################%%%%%%############*******++++++======--------------------------==++***################################################################################################################################################################################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%###############################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################
*********************************************************************************************************++++++++++++++**+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******************+++++++++++**************+++++++++++++++++++++++++++++************#%%#******************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***###%%%%%%%%%%%%%%%%%%%%%%%%%%%%###*****+++++++++******************++++++++++++++++++++++++++++++++++++++++++++++++++****************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++************************************************+*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@%%%%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###########******+++++++++++++++++++++++++**##%%%#################################********+++++++++++++++++++++++++++++++++++++++++++++++++++++************+++**************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++==++++++++++++++++++++++==+====+#####**********************************************+========================================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******************************************########************************************************+**********************************+++++++++++++++++++++++++++++++************************************#############################*****************************+++++++++++++++++++++++++++++++++++++++++++++++++++========================================================+++++++++++=========================================================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*##%%##++++++++++*********+++++++++*#####+++++++-:::::::::::::::---=+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********************************************************************************************************************************************************************************************************************************************################################################***************************************************************************************************************************************************************************************##########################%%%%%%############*******++++++======--------------------------==++***#################################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%##############################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################
**********************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******************+++++++++++**************+++++++++++++++++++++++++++++************#%%#*******************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***###%%%%%%%%%%%%%%%%%%%%%%%%%%%%###****++++++++++++++**********+++++++++++++++++++++++++++++++++++++++++++++++++++++++***************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***********************************************+***#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@%%%%%%%%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%@@@@@@@@%@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###########******+++++++++++++++++++++++++*###%%%#################################********+++++++++++++++++++++++++++++++++++++++++++++++++++++*****************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++==++++++++++++++++++++++=++==++=+*#####**********************************************+=========================================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********************************************************************************++++++++++++++++++++++*******************+++++++++++++++++++++++++++++++++++++++++************************************################################***********************+++++++++++++++++++++++++++++++++++++++++++++++++=========================================================++++++++++===========================================================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*##%%#*++++++++++**********++++++++*#####+++++++-:::::::::::::::::-==++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****************************************************************************************************************************************************************************************************************************************************################################################**************************************************************************************************************************************************************************************###########################%%%%%%%###########*******++++++======--------------------------==++***#################################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%##############################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################
**********************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****************+++++++++++***************++++++++++++++++++++++++++++************#%%#*******************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***###%%%%%%%%%%%%%%%%%%%%%%%%%%%%###****+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******++************************************+*****#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@%%%%%%%%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###########******+++++++++++++++++++++++++*###%%%#################################********++++++++++++++++++++++++++++++++++++++++++++++++++++++*****************************************************++++++++++++++++++++++++++++++++++++++++++++++++++==++++++++++++++++++++++=+==+=++######***********************************************==========================================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********************************################################********************+++++++++++++++++++++++++++++++++++++++++++++++============================================================++++++=============================================================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*##%%#*++++++++++**********++++++++*#####*++++++-:::::::::::::::::--==++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*+*+++++++++++++++++++++++++++++++++++++++*++*************************************************************************************************************************************************************************************************************************************************########################################################*************************************************************************************************************************************************************************************###########################%%%%%%%###########********+++++======--------------------------==++***#################################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%#############################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################
***********************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****************+++++++++++**************++++++++++++++++++++++++++++************#%%#*******************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***###%%%%%%%%%%%%%%%%%%%%%%%%%%%%###****++++++++++++++++++++++++++++++++==============+++++++++++++++++++++++++++++++++++++***********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****+++++*************************************+**+**#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@%%%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###########******+++++++++++++++++++++++++*###%%%#################################********++++++++++++++++++++++++++++++++++++++++++++++++++++++*****************************************************++++++++++++++++++++++++++++++++++++++++++++++++++=++++++++++++++++++++++++=====+######************************************************==========================================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******************************###################################****************++++++++++++++++++++++++++++++++++++++++++++==============================================================+++++===============================================================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#####*++++++++++**********++++++++*#####*++++++-::::::::::::::::::--=++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*+*+++++++++++++++++++++++++++++++++++++*****************************************************************************************************************************************************************************************************************************************************#########################################################*************************************************************************************************************************************************************************************###########################%%%%%%%###########********++++++=====--------------------------==++***#################################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%#############################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################
***********************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***************+++++++++++**************++++++++++++++++++++++++++++************#%%#*******************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****##%%%%%%%%%%%%%%%%%%%%%%%%%%%####****+++++++++++++++++++++++++++++======================+++++++++++++++++++++++++++++++++++******+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****+++++***********************************+***+**+*#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@%%%%%%%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###########******+++++++++++++++++++++++++*###%%%#################################********+++++++++++++++++++++++++++++++++++++++++++++++++++++++****************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=++==*######*************************************************==========================================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++************************######################################**************+++++++++++++++++++++++++++++++++++++++++=================================================================++++================================================================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#####*+++++++++++**********++++++++###**+++++++-::::::::::::::::::--==+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*+*++++++++++++++++++++++++++++++++++++***************************************************************************************************************************************************************************************************************************************************############################################################*************************************************************************************************************************************************************************************###########################%%%%%%%###########********++++++=====--------------------------==++***#################################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%############################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################
***********************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**************+++++++++++**************++++++++++++++++++++++++++++************#%%#*******************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***###%%%%%%%%%%%%%%%%%%%%%%%%%%####****++++++++++++++++++++++++++++============================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****+++++**********************************************%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@%%%%%%%%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###########******+++++++++++++++++++++++++*###%%%#################################********+++++++++++++++++++++++++++++++++++++++++++++++++++++++****************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=+*######**************************************************==========================================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***********************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***********************###*******###########################***********+++++++++++++++++++++++++++++++++++++++===================================================================++++================================================================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**#####*+++++++++++**********++++++++**++++==--==--::::::::::::::::::--==++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*+*+++++++++++++++++++++++++++++++++++****************************************************************************************************************************************************************************************************************************************************############################################################************************************************************************************************************************************************************************************############################%%%%%%%###########********++++++=====--------------------------==++***#################################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%############################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################
**********************************************************************************************************++++++++++++++++++++++++++++**++++++++*********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***************++++++++++**************++++++++++++++++++++++++++++************#%%#*******************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***###%%%%%%%%%%%%%%%%%%%%%%%%%%###*****+++++++++++++++++++++++++++++=+===============================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**************************************++*#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@%%%%%%%@@@@@@@%%%%%%%%%%%%%%%@%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###########*******+++++++++++++++++++++++++*###%%%#################################********+++++++++++++++++++++++++++++++++++++++++++++++++++++++****************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=+*######**************************************************+===========================================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********************************###########################**********++++++++++++++++++++++++++++++++++++=======================================================================================================================================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**#####*+++++++++++**********++++++++++++++==-----:::::::::::::::::::---==+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*+****+++++++++++++++++++++++++++++++++************************************************************************************************************************************************************************************************************************************************###############################################################*************************************************************************************************************************************************************************************###########################%%%%%%%############*******++++++=====--------------------------==++***#################################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%############################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################
**********************************************************************************************************+++++++++++++++++++++++++++***+++++++***********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***************++++++++++**************++++++++++++++++++++++++++++************#%%#*******************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***####%%%%%%%%%%%%%%%%%%%%%%%%%###*****++++++++++++++++++++++++++++++++========================================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++************************************+**+*#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@%%%%%%%@@@@@@%%%%%%%%%%%%%%%@@%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###########*******++++++++++++++++++++++++**###%%%#################################********+++++++++++++++++++++++++++++++++++++++++++++++++++++++****************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=+++=+=+*######***************************************************+===========================================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********************************###########################*********++++++++++++++++++++++++++++++++++====================================================================================================================================================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**#####*+++++++++++**********++++++++++++++==------::::::::::::::::::-----==+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*+****+++++++++++++++++++++++++++++****************************************************************************************************************************************************************************************************************************************************###############################################################*************************************************************************************************************************************************************************************###########################%%%%%%%############*******++++++=====--------------------------==++***#################################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%###########################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################
**********************************************************************************************************+++++++++++++++++++++++++++***********************++**+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******##*****++++++++++**************++++++++++++++++++++++++++++************#%%#*******************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****###%%%%%%%%%%%%%%%%%%%%%%%%####*****+++++++++++++++++++++++++++++++++++===========================================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*************************************++++**#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@%%%%%%@@@@@@@%%%%%%%%%%%%%%%@@%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###########*******++++++++++++++++++++++++**###%%%%#################################*******++++++++++++++++++++++++++++++++++++++++++++++++++++++++****************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=+*######****************************************************+==========================================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********************************#########################*********+++++++++++++++++++++++++++++++=======================================================================================================================================================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**#####*++++++++++***********++++++++++++++==------:::::::::::::::::::------=++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*+******+++++++++++++++++++++++++++***************************************************************************************************************************************************************************************************************************************************################################################################*************************************************************************************************************************************************************************************###########################%%%%%%%############*******++++++=====--------------------------==++***#################################################################################################################################################################################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%###########################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################
**********************************************************************************************************++++++++++++++++++++++++++****************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******##*****++++++++++**************++++++++++++++++++++++++++++*************%%#*******************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****####%%%%%%%%%%%%%%%%%%%%%%#####*********++++++++++*****+++++++++++++++++++++=========================================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*************************************+**++*#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@%%%%%%%@@@@@@%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###########********+++++++++++++++++++++++**###%%%%#################################*******++++++++++++++++++++++++++++++++++++++++++++++++++++++++****************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*######*****************************************************+==========================================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*************************************####################*************++++++++++++++++++++++++++==========================================================================================================================================================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**#####*++++++++++***********++++++++++++++==------::::::::::::::::::::------=+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*+*********+++++++++++++++++++++*****************************************************************************************************************************************************************************************************************************************************#################################################################*************************************************************************************************************************************************************************************###########################%%%%%%%############******+++++++=====--------------------------==++***#################################################################################################################################################################################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##########################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################
**********************************************************************************************************++++++++++++++++++++++++++******************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******##*****++++++++++**************+++++++++++++++++++++++++++**************%%#*******************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***####%%%%%%%%%%%%%%%%%%%%%%####****************************++++++++++++++++++++++++++=====================================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***************************************+**+**#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@%%%%%%%@@@@@@%%%%%%%%%%%%@%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###########********+++++++++++++++++++++++**###%%%%#################################*******+++++++++++++++++++++++++++++++++++++++++++++++++++++++++***************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*######******************************************************+=========================================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***********************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*************************************###################**************++++++++++++++++++++++++=============================================================================================================================++++++++======================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**#####*++++++++++***********++++++++++++++==-----:::::::::::::::::::::::::::-=++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*+*********+++++++++++++++++++******************************************************************************************************************************************************************************************************************************************************##################################################################*************************************************************************************************************************************************************************************###########################%%%%%%%############******+++++++=====--------------------------==++***#################################################################################################################################################################################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##########################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################
**********************************************************************************************************++++++++++++++++++++++++++********************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*************++++++++++**************++++++++++++++***+++++++++***************%%#*******************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****####%%%%%%%%%%%%%%%%%%%%####*********************************++++++++++++++++++++++++++++++================================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*************************************+*****++*#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@%%%%%%@@@@@@%%%@%%%%%%@@@@@%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###########*********++++++++++++++++++++++**###%%%%##################################******++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=++*######*******************************************************+=========================================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*************************************#################**************+++++++++++++++++++++++==============================================================================================================================++++++++++===================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#####*++++++++++***********++++++++++++++==----:::::::::::::::::::::::::::::-=+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***************************+*****************************************************************************************************************************************************************************************************************************************************#####################################################################*************************************************************************************************************************************************************************************###########################%%%%%%%############******+++++++======-------------------------==++***#################################################################################################################################################################################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##########################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################
**********************************************************************************************************+++++++++++++++++++++++++**********************************+++++++++++++++++++++++++++**************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*************+++++++++**************++++++++++++*****************************%%#*******************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****#####%%%%%%%%%%%%%%%%%#####************************************++++++++++++++++++++++++++++++++++++==========================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********************************+**+**+***+**#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@%%%%%%@@@@@@%%@@@%%%%%@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###########**********++++++++++++++++++++***###%%%%##################################******+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*######********************************************************+=========================================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++************************************##############****************++++++++++++++++++++++++===============================-------================================================+++++++++++++++++++++++++++++++++++++++++++++++++++++===============+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#####*++++++++++***********++++++++++++++==----::::::::::::::::::::::::::::::-=++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********************************************************************************************************************************************************************************************************************************************************************************#####################################################################**************************************************************************************************************************************************************************************###########################%%%%%%%############*******++++++======-------------------------==++***#################################################################################################################################################################################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##########################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################
**********************************************************************************************************+++++++++++++++++++++++++**********************************+++++++++++++++++++++++++++****************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++************+++++++++**************+++++++++++******************************%%#*******************++++++++++++++++++++*+++++++++++++++++++++++++++++++++++++++++++****#####%%%%%%%%%%%%%%%%#####*****************************************+++++++++++++++++++++++++++++++++++===========================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********************************************+*#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@%%%%%@@@@@@@%%@@@%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@%%%%%%@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###########***********+++++++++++++++++++***###%%%%##################################******+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=+*######*********************************************************+========================================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++************************************###########*****************+++++++++++++++++++++++++===========================-----------===============================================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#####*++++++++++***********++++++++++++++==----::::::::::::::::::::::::::::::--=+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******************************************************************************************************************************************************************************************************************************************************************************######################################################################**************************************************************************************************************************************************************************************###########################%%%%%%%############*******++++++======-------------------------==++***#################################################################################################################################################################################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##########################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################
**********************************************************************************************************+++++++++++++++++++++++++*************************************++++++++***********************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++************++++++++++*************++++++++++*******************************%%%*******************++++++++++++++++++++*++++++++++++++++++++++++++++++++++++++++++++****######%%%%%%%%%%%%#######**********************************************+++++++++++++++++++++++++++++++++++++==========================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***************************************************%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@%%%%%@@@@@@%%@@%@%%%%@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###########************++++++++++++++++++***###%%%##################################*******+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***********************###**************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*######**********************************************************+=======================================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*************************************#######*****************+++++++++++++++++++++++===========================------------===========================================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#####*++++++++++***********++++++++++*+++==----::::::::::::::::::::::::::::::--=++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**+********+********************************************************************************************************************************************************************************************************************************************************************######################################################################************************************************************************************************************************************************************************************#############################%%%%%%%############******+++++++======-------------------------==++***#################################################################################################################################################################################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##########################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################
**********************************************************************************************************+++++++++++++++++++++++++********************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***********++++++++++*************+++++++++******############**************%%%*******************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****#######%%%%%%%#########**************************************************+++++++++++++++++++++++++++++++++++++==========================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****************************************************#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@%%%%%@@@@@@%@@@%@%%%%@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###########*************+++++++++++++++*****###%%%##################################********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++************************#####***********************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*######***********************************************************+=======================================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**************************************####*****************++++++++++++++++++++++++=======================----------------===========================================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#####*++++++++++***********++++++++++++++==----::::::::::::::::::::::::::::::--==+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++************++******++**********************************************************************************************************************************************************************************************************************************************************######################################################################************************************************************************************************************************************************************************************#############################%%%%%%%%###########*******++++++======-------------------------==++***#################################################################################################################################################################################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##########################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################
**********************************************************************************************************+++++++++++++++++++++++++**********************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***********++++++++++*************+++++++++*****#################**********%%%*******************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****###################**********************************************************++++++++++++++++++++++++++++++++++=========================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***************************************************+*#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@%%%%@@@@@@@%@@@%@%%%%@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###########**************++++++++++++*******###%%%##################################********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++************************#######*********************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++=+++=+*######***********************************************************+========================================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********************************************************+++++++++++++++++++++++++====================-------------------===========================================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#####*++++++++++***********++++++++++++++==---:::::::::::::::::::::::::::::::---=++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**+++++++++++*******************************************************************************************************************************************************************************************************************************************************************########################################################################***********************************************************************************************************************************************************************************#############################%%%%%%%%###########*******++++++======-------------------------==++***#################################################################################################################################################################################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##########################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################
**********************************************************************************************************+++++++++++++++++++++++++***********************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********+++++++++++*************+++++++++****###################*********%%%*******************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****#################****************************************************************+++++++++++++++++++++++++++++++++++++++==========+=========++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***************************************************+**%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@%%%%%@@@@@@@%@@%%@@%%%%%%%@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###########****************+++++++++*********##%%%%##################################********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++************************########********************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*######************************************************************+========================================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****************************************************++++++++++++++++++++++++++======================-==--------------==========================================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#####*++++++++++************+++++++++++++==---:::::::::::::::::::::::::::::::---=++**+++++++++++++++++++++++++++++++++++++++++++++++++++++**++++++++++++++++++++++++++++**************************************************************************************************************************************************************************************************************************************************#########################################################################***********************************************************************************************************************************************************************************#############################%%%%%%%%###########*******++++++======-------------------------===+***#################################################################################################################################################################################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##########################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################
**********************************************************************************************************++++++++++++++++++++++++************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********+++++++++++*************+++++++++****#####%%%###########*********%%%#******************++++++++++++++++++++*++++++++++++++++++++++++++++++++++++++++++++++++*******############**********************************************************************++++++++++++++++++++++++++++++++++++++========++++++++======++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****************************************************+*#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@%%%%@@@@@@@@%@@%%@%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###########**********************************##%%%%#################################*********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++************************#########********************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=+*######*************************************************************+========================================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***********************************************+++++++++++++++++++++++++++===========================-----------===========================================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#####*++++++++++************+++++++++++++==---:::::::::::::::::::::::::::::::---=+++**+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********************+****************************************************************************************************************************************************************************************************************###########################################################################***********************************************************************************************************************************************************************************#############################%%%%%%%%###########*******++++++======-------------------------===+***#################################################################################################################################################################################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##########################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################
**********************************************************************************************************++++++++++++++++++++++++************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******++++++++++++************++++++++++*****####%%%%%%%#######*********%%%#******************++++++++++++++++++****++++++++++++++++++++++++++++++++++++++++++++++++********************************************************************************************+++++++++++++++++++++++++++++++++++++++++=+++++============++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****************************************************++**%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@%%%%@@@@@@@@%@@%%@@%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@%%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###########**********************************##%%%%#################################*********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++************************###########******************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++=+*######**************************************************************+========================================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******************************************++++++++++++++++++++++++++++============================---------===========================================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#####*++++++++++***********++++++++++++++==---:::::::::::::::::::::::::::::::---=+++***+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****************************************************************************************************************************************************************************************************************************###########################################################################***********************************************************************************************************************************************************************************#############################%%%%%%%%###########*******++++++======-------------------------===+***#################################################################################################################################################################################################%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##########################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################
**********************************************************************************************************+++++++++++++++++++++++***************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***+++++++++++++************+++++++++++****#####%%%%%%%%#####*********%%%#******************++++++++++++++++++****++++++++++++++++++++++++++++++++++++++++++++++++++********************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++===========++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***********************************************************#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@%%%%@@@@@@@%%@@%%@@@%%@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%############**********************************##%%%%#################################*********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***********************###########******************++++++++++++++++++++++++++++++++++++++++++++++++++++++=+++*######***************************************************************+========================================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**+************************************++++++++++++++++++++++++++++===============================---=============================================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#####*++++++++++***********+++++++++++++==---::::::::::::::::::::::::::::::::---=++*****++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++************************************************************************************************************************************************************************************************************###############################################################################***********************************************************************************************************************************************************************************#############################%%%%%%%%###########******+++++++======-------------------------===+***#################################################################################################################################################################################################%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##########################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################
**********************************************************************************************************++++++++++++++++++++++****************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++************++++++++++++****####%%%%%%%%#####*********%%%#******************++++++++++++++++++***+++++++++++++++++++++++++++++++++++++++++++++++++++++********************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++============++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********++++++++++++++++++++*************************************************************#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@%%@%@@@@@@%%%@@%%@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%############**********************************##%%%%#################################*********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***********************############******************++++++++++++++++++++++++++++++++++++++++++++++++++++++++*######****************************************************************+========================================++++++++++++++++++++++++++++++++++++++++++++++++++++++******************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++************************************+++++++++++++++++++++++++++++===============================================================================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#####*++++++++++***********++++++++++++===---::::::::::::::::::::::::::::::::---=++*******++++++++++++++++++++++++++++++++++++++++++++++*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******************************************************************************************************************************************************************************************************###############################################################################***********************************************************************************************************************************************************************************#############################%%%%%%%%###########******+++++++======-------------------------===+***#################################################################################################################################################################################################%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##########################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################
***********************************************************************************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***********+++++++++++++****###%%%%%%%%#####*********#%%#*******************++++++++++++++++******+++++++++++++++++++++++++++++++++++++++++++++++++++++*******************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++==============++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***********************++++++++++++*++++***************************************************************#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@%%%@@@@@@@%%@@%%%@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@%%%%%%%@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%############*******************************####%%%%%%################################*********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********************############*****************++++++++++++++++++++++++++++++++++++++++++++++++++++++=+*######*****************************************************************+======================================++++++++++++++++++++++++++++++++++++++++++++++++++++*******************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********************************++++++++++++++++++++++++++++++==============================================================================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#####*+++++++++***********+++++++++++====----::::::::::::::::::::::::::::::::---=+++*********++++++++++++++++++++++++++++++++++++++++++*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******************************************************************************************************************************************************************************************###################################################################################*************************************************************************************************************************************************************************************###########################%%%%%%%%###########*******++++++======-------------------------===+***#################################################################################################################################################################################################%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##########################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################
***********************************************************************************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***********+++++++++++++****###%%%%%%%%#####*********#%%#*******************++++++++++++++++******++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***********************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********************************************************************************************************#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@%%%@@@@@@@%%%@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@%%%%%%%@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%############********##############%%%%%%%%%%%%%%%%%%%################################*********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********************#############*****************++++++++++++++++++++++++++++++++++++++++++++++++++++=+*######******************************************************************+======================================+++++++++++++++++++++++++++++++++++++++++++++++++********************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********************************+++++++++++++++++++++++++++++++=============================================================================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#####*+++++++++***********+++++++++=====----:::::::::::::::::::::::::::::::::---=+++*******##**++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***********************************************************************************************************************************************************************************###################################################################################*************************************************************************************************************************************************************************************###########################%%%%%%%%###########*******++++++======--------------------------==+***#################################################################################################################################################################################################%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##########################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################
***********************************************************************************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***********++++++++++++++***####%%%%%%%#####*********#%%#*******************++++++++++++++++******+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++===============+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********************************************************************************************************#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@%%@@@@@@@@@%%%@@@%@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@%%%%%%%%@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#########%####%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#%##############################*********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********************#############*****************+++++++++++++++++++++++++++++++++++++++++++++++++++=+*######*******************************************************************+====================================++++++++++++++++++++++++++++++++++++++++++++++++********************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********************************+++++++++++++++++++++++++++++++++=============================================================================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#####*+++++++++***********++++++++====-----::::::::::::::::::::::::::::::::::---=+++********#****++++++++++++++++++++++++++++++++++++**++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***************************************************************************************************************************************************************************###################################################################################************************************************************************************************************************************************************************************############################%%%%%%%%###########******+++++++======--------------------------==+***##################################################################################################################################################################################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###########################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################
***********************************************************************************************************************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********++++++++++++++****###%%%%%%%#####*********#%%#*******************++++++++++++++++******++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++==========++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++************************************************************************************************************%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@%%@@@@@@@@@%%%@@@@@@@@@@@@@@@@@@@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%################################*********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********************#############******************+++++++++++++++++++++++++++++++++++++++++++++++++++*######********************************************************************+====================================++++++++++++++++++++++++++++++++++++++++++++++********************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******************************++++++++++++++++++++++++++++++++++++===========================================================================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#####*+++++++++***********++++++=====-----:::::::::::::::::::::::::::::::::::---==++********#*****++++++++++++++++++++++++++++++++++**++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******************************************************************************************************************************************************************###################################################################################************************************************************************************************************************************************************************************############################%%%%%%%%###########******+++++++======--------------------------==+***##################################################################################################################################################################################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###########################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################
***********************************************************************************************************************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********++++++++++++++++***###%%%%%%%#####*********#%%#*******************++++++++++++++++******++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*************************************************************************************************************#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@%%@@@@@@@@%%@@%%%@@@@@@@@@@@@@@@@@@@@@%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%@@@@@@%%%%%%%%%################################*********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********************##############******************+++++++++++++++++++++++++++++++++++++++++++++++++*#######********************************************************************+=================================++++++++++++++++++++++++++++++++++++++++++++++********************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****************************++++++++++++++++++++++++++++++++++++++++==========================================================================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#####*++++++++************+++++=====-----::::::::::::::::::::::::::::::::::::---==++********#*******++++++++++++++++++++++++++++++****++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***************************************************************************************************************************************************************#####################################################################################***********************************************************************************************************************************************************************************############################%%%%%%%%###########******+++++++======--------------------------==+***##################################################################################################################################################################################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%############################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################
***********************************************************************************************************************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********++++++++++++++++***###%%%%%%%#####*********#%%#******#************++++++++++++++++******++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***************************************************************************************************************#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@%%@@@@@@@@%%%@%%@@@@@@@@@@@@@@@@@@@%@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@%%%@@@@@%%%%%%%%%%%%%@@@@@%%%%%%%%%%###############################*********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***********************#############*******************+++++++++++++++++++++++++++++++++++++++++++++++*#########*******************************************************************+================================++++++++++++++++++++++++++++++++++++++++++++**********************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********************++++++++++++++++++++++++++++++++++++++++++++++++==========================================================================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*######*+++++++***********+++++=====-----:::::::::::::::::::::::::::::::::::::---==++********#*********+++++++++++++++++++++++++++******++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*************************************************++++++******************************************************************************************************######################################################################################**********************************************************************************************************************************************************************************#############################%%%%%%%%###########******++++++++======-------------------------==++***#################################################################################################################################################################################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%############################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################
***********************************************************************************************************************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********++++++++++++++++***###%%%%%%%#####*********#%%#******#************++++++++++++++++******++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****************************************************************************************************************##%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@%%@@@@@@@@%%%%%@@@@@@@@@@@@@@@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@%%@@@@@@@@%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@%%%%@@@@%%%%%%%%%%%%%%%@@@@@@@@%%%%%%%#%##%############################*********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***********************##############******************++++++++++++++++++++++++++++++++++++++++++++++*##########*******************************************************************================================++++++++++++++++++++++++++++++++++++++++++***********************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****************++++++++++++++++++++++++++++++++++++++++++++++++++++++========================================================================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*######*+++++++***********++++=====-----:::::::::::::::::::::::::::::::::::::::--==++********#************++++++++++++++++++++++***+****++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********************************************++++++++++****************************************************************************************************######################################################################################**********************************************************************************************************************************************************************************#############################%%%%%%%%###########*******+++++++======-------------------------==++***##################################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%############################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################
***********************************************************************************************************************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********++++++++++++++++***###%%%%%%%#####*********#%%#******#************+++++++++++++++*******++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******************************************************************************************************************#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@%@@@@@@@@@%%%%%@@@@@@@@@@@@@@@@@%%@@@%@@@@%@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@%%%%%%%%%@@@@@@@@@%%%%%%%%#%%#%############################*********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***********************##############******************++++++++++++++++++++++++++++++++++++++++++++++###########*******************************************************************================================+++++++++++++++++++++++++++++++++++++++***********************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**++****+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++========================================================================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*######*+++++++***********++++=====----::::::::::::::::::::::::::::::::::::::::--==++*************************+++++++++++++++************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********************************************+++++++++++***************************************************************************************************######################################################################################**********************************************************************************************************************************************************************************#############################%%%%%%%%###########*******+++++++======-------------------------==++***##################################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%############################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################
*********************************************************************************************************************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********++++++++++++++++***###%%%%%%%#####*********#%%#******#************+++++++++++++++*******+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*************************************************************#**************************************************#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@%@@@@@@@@@%%%%@@@@@@@@@@@@@@@@@%%@%@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%@@@@@@@@@@%%%%%%%%%%################################*********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***********************##############*******************++++++++++++++++++++++++++++++++++++++++++++############******************************************************************+=+===========================+++++++++++++++++++++++++++++++++++++++************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=======================================================================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#####***+++++++*********++++=====-----::::::::::::::::::::::::::::::::::::::::--==++****************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******************************************++++++++++++++***********************************************************************************************########################################################################################*******************************************************************************************************************************************************************************################################%%%%%%%%###########*******+++++++======-------------------------===+***##################################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%#############################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################
*********************************************************************************************************************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********++++++++++++++++***###%%%%%%%#####*********#%%#******#************+++++++++++++++*******+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****************************************************************************************************************#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@%@@@@@@@@@%%%@@@@@@@@@@@@@@@@@@%%@@@@@@@@@@@@@@@@@@%@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%@@@@@@@@@@@%%%%%%%%%%################################*********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***********************###############******************+++++++++++++++++++++++++++++++++++++++++++*############******************************************************************+=============================++++++++++++++++++++++++++++++++++++*************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=======================================================================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#####***+++++++*********+++=====-----:::::::::::::::::::::::::::::::::::::::::--==++*****************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******************************************+++++++++++++++***********************************************************************************************#########################################################################################******************************************************************************************************************************************************************************################################%%%%%%%%###########*******+++++++======--------------------------==++**##################################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%##############################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################
*********************************************************************************************************************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********++++++++++++++++***###%%%%%%%#####*********#%%#******#************+++++++++++++++*******+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****************************************************************************************************************##%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@%@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@%%%@@@@@@@@@@@@@@@%@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%@@@@@@@@@@@%%%%%%%%%%################################*********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***********************###############******************++++++++++++++++++++++++++++++++++++++++++*#############******************************************************************+===========================++++++++++++++++++++++++++++++++++++************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===================================------=============================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#####****+++++**********+++===-------:::::::::::::::::::::::::::::::::::::::::--==++******************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****************************************++++++++++++++++**********************************************************************************************#########################################################################################*******************************************************************************************************************************************************************************###############################%%%%%%%%###########*******+++++++======--------------------------==++***#################################################################################################################################################################################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%##############################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################
********************************************************************************************************************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********++++++++++++++++***###%%%%%%%#####*********#%%%******#************+++++++++++++++*******+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*************************************************************************************************************##%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@%@@@@@@@@@%%@@@@@@@@@@@@@@@@@%%%%@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%@@@@@@@@@@@%%%%%%%%%%%%##############################***********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++************************###############*****************+++++++++++++++++++++++++++++++++++++++++*###############*****************************************************************+=========================+++++++++++++++++++++++++++++++++++************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==================================--------===========================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#####****+++++**********++===--------:::::::::::::::::::::::::::::::::::::::::---=++*******************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****************************************+++++++++++++++++********************************************************************************************##########################################################################################*******************************************************************************************************************************************************************************###############################%%%%%%%%###########*******+++++++======--------------------------==++***#################################################################################################################################################################################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%###############################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################
********************************************************************************************************************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********++++++++++++++++***###%%%%%%%#####*********#%%%******#************+++++++++++++++*******+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***********************************************************************************************#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@%@@@@@@@@@%@@@@@@@@@@@@@@@@@%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%%@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@@@@@@@@@%%%%%%%%%%%%%##############################***********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++************************###############******************+++++++++++++++++++++++++++++++++++++++*################*****************************************************************+=========================+++++++++++++++++++++++++++++++++***********************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=================================-==================================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#####*****++++*********+++===-------::::::::::::::::::::::::::::::::::::::::::---=++********************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****************************************+++++++++++++++++++*******************************************************************************************##########################################################################################******************##***********************************************************************************************************************************************************###############################%%%%%%%%###########*******+++++++======--------------------------==++***#################################################################################################################################################################################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%###############################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################
*******************************************************************************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********++++++++++++++++***###%%%%%%%#####*********#%%%******##***********+++++++++++++++*******+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***************************************************************************************#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%%%%@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%@@@@@@@@@@%%%%%%%%%%%%%%###############################**********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++************************################*****************+++++++++++++++++++++++++++++++++++++++##################****************************************************************+=======================++++++++++++++++++++++++++++++++***********************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===================================================================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#####*****++++*********+++==-------:::::::::::::::::::::::::::::::::::::::::::---=++*********************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*************************************+++++++++++++++++++++*******************************************************************************************###########################################################################################****************####**********************************************************************************************************************************************************###############################%%%%%%%%###########*******+++++++======--------------------------===+***##################################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%######################################################################################################################################################%%#######################################################################################################################################################################################################################################################################################################################################################################################################################################################################################
*******************************************************************************************************************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******++++++++++++++++***####%%%%%%#####*********#%%%******##***********+++++++++++++++*******+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********************************************************************************+*#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%@@@@@@@@@%%%%%%%%%%%%%%%%##############################**********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++************************################*****************++++++++++++++++++++++++++++++++++++++*##################***************************************************************+====================++++++++++++++++++++++++++++++++++***********************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=================================================================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#####******++++********+++==------::::::::::::::::::::::::::::::::::::::::::::---=+++**********************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*************************************++++++++++++++++++++++******************************************************************************************###########################################################################################***************#####***********************************************************************************************************************************************************##############################%%%%%%%%###########*******+++++++======---------------------------==+***##################################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%#######################################################################################################################################################%%#######################################################################################################################################################################################################################################################################################################################################################################################################################################################################################
*******************************************************************************************************************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******++++++++++++++++***####%%%%%%#####*********#%%%******##***********+++++++++++++++*******+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********************************************************************************+*#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%@@@@@@%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@%%%%%%%%%%%%%##%%%############################**********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*************************################****************+++++++++++++++++++++++++++++++++++++*###################***************************************************************+===================++++++++++++++++++++++++++++++++***********************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=================================================================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#####******++++********++==-------::::::::::::::::::::::::::::::::::::::::::::---=+++*******************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**************************************++++++++++++++++++++++******************************************************************************************###########################################################################################***************#####***********************************************************************************************************************************************************##############################%%%%%%%%############******+++++++======---------------------------==++**##################################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%#######################################################################################################################################################%%##########################################################%############################################################################################################################################################################################################################################################################################################################################################################################################################
******************************************************************************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******+++++++++++++++****####%%%%%%######********#%%%******##***********++++++++++++++++******++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****************************************************************************#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@%%@@%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%###############################**********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++************************##################****************+++++++++++++++++++++++++++++++++++*####################***************************************************************+===+===============++++++=====++++++++=++++++++++**********************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===============================================================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#####******+++++*******++==-----::::::::::::::::::::::::::::::::::::::::::::::---==++***************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*************************************++++++++++++++++++++++++****************************************************************************************##############################################################################################*************#######********************************************************************************************************************************************************###############################%%%%%%%%############******+++++++======---------------------------==++**##################################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%########################################################################################################################################################%%%########################################################%%%%##########################################################################################################################################################################################################################################################################################################################################################################################################################
******************************************************************************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******+++++++++++++++****####%%%%%%######********#%%%******##***********++++++++++++++++******++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**+++**********************************************************************+*#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@@@@@@@%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@%%%@@%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%@%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%###############################**********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*************************#################****************+++++++++++++++++++++++++++++++++++*#####################**************************************************************++=================++++++++++++++++==++++++++++**********************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==============================================================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#####*******+++********++==----:::::::::::::::::::::::::::::::::::::::::::::::---==++*******************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*************************************++++++++++++++++++++++++****************************************************************************************##############################################################################################*************#######********************************************************************************************************************************************************###############################%%%%%%%%############*****++++++++======---------------------------==++**##################################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%#########################################################################################################################################################%%%########################################################%%%%##########################################################################################################################################################################################################################################################################################################################################################################################################################
******************************************************************************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******+++++++++++++++****####%%%%%%######********#%%%******##***********++++++++++++++++******++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****************************************************************+*++*#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%@@@@@@@@%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@%%%%%%%@@@@%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%@%%%%%%%%%%%%%%%@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%##%%###########################**********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*************************#################****************++++++++++++++++++++++++++++++++++*#####################***************************************************************+==================++++++++++++++++++++++++++**********************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=============================================================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#####*******+++********++==---::::::::::::::::::::::::::::::::::::::::::::::::---==++**************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***********************************++++++++++++++++++++++++++****************************************************************************************##############################################################################################*************#######********************************************************************************************************************************************************###############################%%%%%%%%############*****++++++++======---------------------------==++**##################################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%#########################################################################################################################################################%%%########################################################%%%%##########################################################################################################################################################################################################################################################################################################################################################################################################################
******************************************************************************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******+++++++++++++++****####%%%%%%######********#%%%******##***********++++++++++++++++******++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****************************************************************++*++**%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%@@@@@@@%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@%%%@%%@@@@@@@%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%@@@@%%%%%%%%%%%%@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%###########################**********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*************************##################***************+++++++++++++++++++++++++++++++++*######################***++**********************************************************+==================++++++++++++++++++++++++**********************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++============================================================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#####*******+++********++==---::::::::::::::::::::::::::::::::::::::::::::::::---==++**********************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********************************+++++++++++++++++++++++++++++***************************************************************************************#################################################################################################********#########********************************************************************************************************************************************************###############################%%%%%%%%%###########*****++++++++======---------------------------==++***#################################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%###########################################################################################################################################################%%%%#######################################################%%%%##########################################################################################################################################################################################################################################################################################################################################################################################################################
******************************************************************************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******+++++++++++++++*****###%%%%%%######*********%%%******##***********++++++++++++++++******++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****************************************************************+++++++**#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%@@@@@@@@%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@%%%%%%%%@@@@@%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%##%##########################**********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**************************#################****************+++++++++++++++++++++++++++++++*######################*+++==**********************************************************+=================++++++++++++++++++++++***********************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++============================================================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#####********++********++==---:::::::::::::::::::::::::::::::::::::::::::::::::--==++*****************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******************************++++++++++++++++++++++++++++++++***************************************************************************************##################################################################################################################*********************************************************************************************************************************************************##############################%%%%%%%%%###########*****+++++++=======---------------------------==++***#################################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%###########################################################################################################################################################%%@%#######################################################%%%%%#########################################################################################################################################################################################################################################################################################################################################################################################################################
******************************************************************************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******++++++++++++++******####%%%%%######*********%%%#*****##***********++++++++++++++++******++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****************************************************************++****++++**#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@@@@%@@@%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%%@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#########################**********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**************************##################***************+++++++++++++++++++++++++++++++#####################**+====+**********************************************************++===============++++++++++++++=++++++***********************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==========================================================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#####*********++*******++==--::::::::::::::::::::::::::::::::::::::::::::::::::--==++*************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++****************************++++++++++++++++++++++++++++++++++++***************************************************************************************##################################################################################################################*********************************************************************************************************************************************************##############################%%%%%%%%%###########*****++++++========---------------------------==++***#################################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%############################################################################################################################################################%%@%#######################################################%%%%%#########################################################################################################################################################################################################################################################################################################################################################################################################################
*******************************************************************************************************************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******++++++++++++++******####%%%%%######*********%%%#*****##***********++++++++++++++++******+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****************************************************************+++++++*+++**#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########################**********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***************************##################****************+++++++++++++++++++++++++++++*####################*+======+***********************************************************+===============+++++++++++++++++++*********************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=========================================================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#####*********++*******++==--::::::::::::::::::::::::::::::::::::::::::::::::::--==++**********************************************************************************************************************+++++++++++++++++++++++++++++++++++++++****************************++++++++++++++++++++++++++++++++++++++**************************************************************************************##################################################################################################################*********************************************************************************************************************************************************##############################%%%%%%%%############*****+++++=========---------------------------==++***#################################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%##############################################################################################################################################################%%@@%######################################################%%%%%#########################################################################################################################################################################################################################################################################################################################################################################################################################
*******************************************************************************************************************************************************************************************************************+++++*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******++++++++++++++******####%%%%%######*********%%%#*****##***********++++++++++++++++******+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******************************************************************+**++**+++**++**#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%@%@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@@@%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@%%%@%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########################**********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***************************###################****************+++++++++++++++++++++++++++*####################++=======+***********************************************************+=+============+++++++++++++++++**********************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++========================================================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#####*********+********++==--::::::::::::::::::::::::::::::::::::::::::::::::::--==++***********************************************************************************************************************************+++++++++++++++++++++++++****************************+++++++++++++++++++++++++++++++++++++++**************************************************************************************##################################################################################################################**********************************************************************************************************************************************************#############################%%%%%%%%############*****+++++=========---------------------------==++***#################################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%###############################################################################################################################################################%@%@%######################################################%%%%%#########################################################################################################################################################################################################################################################################################################################################################################################################################
*********************************************************************************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********+++++++++++++*******####%%%%%%######********%%%#*****##***********++++++++++++++++******+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******************************************************************+++++++++++**+*#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########################**********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***************************###################*****************+++++++++++++++++++++++++*####################+=========**********************************************************+**+=+=+========+==++++=++++++++**********************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++====================================================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#####*****************+++==--::::::::::::::::::::::::::::::::::::::::::::::::::--==++******************************************************************************************************************************************+++++++++++++++++****************************++++++++++++++++++++++++++++++++++++++++*************************************************************************************###################################################################################################################**********************************************************************************************************************************************************#############################%%%%%%%%%###########*****+++++=========---------------------------==++***#################################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%################################################################################################################################################################%%%@%%######################################################%%%%%#########################################################################################################################################################################################################################################################################################################################################################################################################################
*********************************************************************************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********+++++++++++++********###%%%%%%######********%%%#*****##***********++++++++++++++++******+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******************************************************************++++++++++********%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%@@@@@@@@@@@@@@@@@@@@@@@@%%%@@@@@@@%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######################**********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***************************###################******************+++++++++++++++++++++++*####################+=========+**********************************************************+**+=+==+=======++++=+++++=+++************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===================================================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#####*****************+++==--::::::::::::::::::::::::::::::::::::::::::::::::::---=++***********************************************************************************************************************************************++++++++++*****************************++++++++++++++++++++++++++++++++++++++++++************************************************************************************###################################################################################################################***********************************************************************************************************************************************************############################%%%%%%%%%###########*****++++===========--------------------------==++***#################################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%################################################################################################################################################################%%@@@%%#####################################################%%%%%#########################################################################################################################################################################################################################################################################################################################################################################################################################
*********************************************************************************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********++++++++++++*********###%%%%%%######********%%%#*****##***********++++++++++++++++*****++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********************************************************************++++++++*****++*****#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@%%%%@@@@@@%%%%%%%%%%%%%%@@@@@@@%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######################**********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***************************####################******************+++++++++++++++++++++*####################+==========+**********************************************************++**+++=========+++++++++++************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***********************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=================================================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#####*****************+++==--::::::::::::::::::::::::::::::-:::::::::::::::::::---==++************************************************************************************************************************************************************************************++++++++++++++++++++++++++==+++++++++++++++***********************************************************************##***********####################################################################################################################**********************************************************************************************************************************************************############################%%%%%%%%%###########*****++++===========--------------------------==++***#################################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%##################################################################################################################################################################%%@@@@%#####################################################%%%%%%########################################################################################################################################################################################################################################################################################################################################################################################################################
*********************************************************************************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********++++++++++++*********####%%%%%######********%%%#*****##***********++++++++++++++++*****++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********************************************************************+++++++***********++**#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@%%%@@@@@@%%%%%%%%%%%%%%%@@@@@@%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######################**********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***************************####################********************++++++++++++++++++**###################+===========+**********************************************************++**++=+======++++++++++++************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***********************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++================================================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#####*****************+++==--::::::::::::::::::::::::::::::-:::::::::::::::::::---==++************************************************************************************************************************************************************************************+++++++++++++++++++++++++====+++++++++++++++*********************************************************************#####********#####################################################################################################################***********************************************************************************************************************************************************###########################%%%%%%%%%###########*****++++==========-------==------------------===+***#################################################################################################################################################################################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%####################################################################################################################################################################%%@@@@%#####################################################%%%%%%########################################################################################################################################################################################################################################################################################################################################################################################################################
**********************************************************************************************************************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********+++++++++++**********####%%%%%%######*******%%%#****###***********++++++++++++++++*****++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********************************************************************+++++********+***+****+**#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@%%%%%%%%%%%%%%%%@@@@%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######################**********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***************************####################***********************++++++++++++++**###################*+===========***********************************************************+++**+=+===++++++++++++************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***********************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===============================================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#####******************++==--::::::::::::::::::::::::::::::=-::::::::::::::::::---==++***********************************************************************************************************************************************************************************++++++++++++++++++++++++++=====++++++++++++++*********************************************************************######################################################################################################################################*********************************************************************************************************************************************************#########################%%%%%%%%%############****++++===========---=======----------------===+***#################################################################################################################################################################################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%######################################################################################################################################################################%%@@@@%%####################################################%%%%%%########################################################################################################################################################################################################################################################################################################################################################################################################################
**********************************************************************************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********+++++++++++***********###%%%%%%######*******%%%#****###***********++++++++++++++++****+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***********************************************************************++++*********++***+*******#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@%%%%@@@@@@@%%%%%%%%%%%%%%%%%@@@@%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######################**********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****************************####################*************************++++++++*+**###################*+============**********************************************************++++**++++++++++++++++***********************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***********************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==============================================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#####******************++==--::::::::::::::::::::::::::::::=-::::::::::::::::::---==++***********************************************************************************************************************************************************************************+++++++++++++++++++++++++======+++++++++++++++********************************************************************#######################################################################################################################################********************************************************************************************************************************************************#########################%%%%%%%%%############****++++======================---------------===+***#################################################################################################################################################################################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%########################################################################################################################################################################%%@@@@@%#####################################################%%%%%########################################################################################################################################################################################################################################################################################################################################################################################################################
***********************************************************************************************************************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********++++++++++************###%%%%%%######*******%%%#****#%##**********+++++++++++++++++***+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++************************************************************************++++************++***********#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%@@@@@@@@@@@@@@@@@@@@%%%%%@@@@@@%%%%%%%%%%%%%%%%%%%@@@%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######################**********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****************************######################**********************************###################*+============+**********************************************************+++++**++++++++++++++**********************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===========================================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#####******************++==---:::::::::::::::::::::::::::::==::::::::::::::::::---==++**********************************************************************************************************************************************************************************++++++++++++++++++++++++++=======+++++++++++++++******************************************************************########################################################################################################################################*********************************************************************************************************************************************************########################%%%%%%%%%############*****+++=======================--------------===+***#################################################################################################################################################################################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%############################################################################################################################################################################%%@@@@@%#####################################################%%%%%########################################################################################################################################################################################################################################################################################################################################################################################################################
************************************************************************************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********++++++++++************####%%%%%%#####*******%%%#****#%##**********+++++++++++++++++**++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++************************************************************************++++****************************#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%@@@@@@@@@@@@@@@@@@@%%@%%@@@@@@%%%%%%%%%%%%%%%%%%%%@@@%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######################***********++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****************************#######################********************************###################*+=============+**********************************************************+++++**++++++++++++******************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==========================================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#####******************++==---:::::::::::::::::::::::::::::==::::::::::::::::::---==++**********************************************************************************************************************************************************************************++++++++++++++++++++++++++=======+++++++++++++++******************************************************************#########################################################################################################################################********************************************************************************************************************************************************########################%%%%%%%%%############*****+++==================+=====-------------===+***#################################################################################################################################################################################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%###############################################################################################################################################################################%%@@@@@%%####################################################%%%%%########################################################################################################################################################################################################################################################################################################################################################################################################################
**************************************************************************************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********++++++++++*************####%%%%%%#######*****#%%#****#%%#**********+++++++++++++++++++*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++************************************************************************************************************#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%@@@%@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####################***********++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****************************####################*###******************************###################*+==============+**********************************************************+++++***++++++++***********************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++======================================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#####******************++==---:::::::::::::::::::::::::::::=+-::::::::::::::::::--==++**********************************************************************************************************************************************************************************++++++++++++++++++++++++++========++++++++++++++****************************************************************############################################################################################################################################******************************************************************************************************************************************************#########################%%%%%%%%%############*****+++==============+++++++====------------===+***##################################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%###############################################################################################################################################################################%%@@@@@%%####################################################%%%%%########################################################################################################################################################################################################################################################################################################################################################################################################################
**************************************************************************************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********++++++++++**************###%%%%%%#######*****#%%#****#%%#**********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***************************************************************************************************************#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%@%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####################***********++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****************************########################*****************************##################*+================***********************************************************++++++**++++++************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++====================================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#####******************+++=---:::::::::::::::::::::::::::::++-::::::::::::::::::--==++*********************************************************************************************************************************************************************************+++++++++++++++++++++++++++========+++++++++++++++***************************************************************############################################################################################################################################******************************************************************************************************************************************************#########################%%%%%%%%%############*****+++=============+++++++++===------------===+***##################################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%###############################################################################################################################################################################%%@@@@@@%####################################################%%%%%%#######################################################################################################################################################################################################################################################################################################################################################################################################################
***************************************************************************************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********++++++++++**************####%%%%%%######*****#%%#****#%%##*********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******************************************************************************************************************##%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####################***********+++++++++++++++++++++++++++++++++++++++++++++++++++++++******************************########################****************************##%#########******++================+***********************************************************++++++***+++************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==================================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#####******************+++=---:::::::::::::::::::::::::::::+*-::::::::::::::::::--==++********************************************************************************************************************************************************************************++++++++++++++++++++++++++++========++++++++++++++++***************************************************************###########################################################################################################################################******************************************************************************************************************************************************#########################%%%%%%%%%############*****+++============++++***+++===------------===+***##################################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%################################################################################################################################################################################%%@@@@@@%%###################################################%%%%%%#######################################################################################################################################################################################################################################################################################################################################################################################################################
***************************************************************************************************************************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********++++++++++**************####%%%%%%########***#%%#****#%%##*********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********************************************************************************************************************##%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####################***********+++++++++++++++++++++++++++++++++++++++++++++++++++++++******************************########################****************************##%#########*+++++==================+***********************************************************++++++**************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++================================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#####******************+++=---:::::::::::::::::::::::::::::+*=::::::::::::::::::--==++********************************************************************************************************************************************************************************++++++++++++++++++++++++++++========+++++++++++++++++***************************************************************##########################################################################################################################################******************************************************************************************************************************************************#########################%%%%%%%%%#############****+++===========+++******+++===-----------===+***##################################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%################################################################################################################################################################################%%@@@@@@@%####################################################%%%%%#######################################################################################################################################################################################################################################################################################################################################################################################################################
*****************************************************************************************************************************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********++++++++++***************###%%%%%%%########**#%%%****#%%#####*******+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*************************************************************************************************************************##%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%@@@@@@@@@@@@@@@@@@%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####################***********+++++++++++++++++++++++++++++++++++++++++++++++++++++++******************************#########################****************************#%########*++++++++================+***********************************************************++++++*************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=============================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#####******************+*#=---::::::::::::::::::::::::::::-**+::::::::::::::::::--==++*******************************************************************************************************************************************************************************+++++++++++++++++++++++++++++=========++++++++++++++++***************************************************************##########################################################################################################################################******************************************************************************************************************************************************#########################%%%%%%%%%#############****+++==========+++********+++==-----------===+***##################################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%################################################################################################################################################################################%%@@@@@@@%####################################################%%%%########################################################################################################################################################################################################################################################################################################################################################################################################################
*****************************************************************************************************************************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********++++++++++***************####%%%%%%%########*#%%%****#%%#####*******++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****************************************************************************************************************************####%%%%%%%%%%%##%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###################***********+++++++++++++++++++++++++++++++++++++++++++++++++++++++******************************##########################***************************#########*++++++===++=============++***********************************************************+++++*************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++============================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#####*******************##+---::::::::::::::::::::::::::::-***-:::::::::::::::::--==++*******************************************************************************************************************************************************************************+++++++++++++++++++++++++++++==========+++++++++++++++****************************************************************#########################################################################################################################################******************************************************************************************************************************************************##########################%%%%%%%%#############****+++=========++++********+++===----------===+***##################################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%################################################################################################################################################################################%%@@@@@@@@%###################################################%%%%########################################################################################################################################################################################################################################################################################################################################################################################################################
******************************************************************************************************************************************************************************************************************************++++++++++++++++++++++*********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********++++++++++***************####%%%%%%%%#########%%%#####%%######******++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++************************************************************************************************************************************######******##%%%%%%%%%%%@@@@@@@@@@@@@@@@@%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###################***********+++++++++++++++++++++++++++++++++++++++++++++++++++++++******************************###########################**************************#########++++++=++================+************************************************************+++*****#*****************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++========================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#####*******************##+---::::::::::::::::::::::::::::-***-:::::::::::::::::--==++******************************************************************************************************************************************************************************++++++++++++++++++++++++++++++==========++++++++++++++++***************************************************************#########################################################################################################################################******************************************************************************************************************************************************##########################%%%%%%%%#############****+++========++++**********+++==----------===+***##################################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%################################################################################################################################################################################%%@@@@@@@@%#####################################################%#########################################################################################################################################################################################################################################################################################################################################################################################################################
******************************************************************************************************************************************************************************************************************************++++++++++++++++++****************++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********+++++++++*****************####%%%%%%%%########%%%#####%%######*******+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***************************************************************************************************************************************************#%%%%%%%%%@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###################***********+++++++++++++++++++++++++++++++++++++++++++++++++++++++******************************###########################*************************########*++++++++=++===============+*******************************************************#*********####*##************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++====================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#####******************###+---::::::::::::::::::::::::::::-***=:::::::::::::::::--==+++****************************************************************************************************************************************************************************+++++++++++++++++++++++++++++++===========+++++++++++++++***************************************************************#########################################################################################################################################******************************************************************************************************************************************************##########################%%%%%%%%#############****+++========+++************++===---------===+***##################################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%################################################################################################################################################################################%%@@@@@@@@%###############################################################################################################################################################################################################################################################################################################################################################################################################################################################################
******************************************************************************************************************************************************************************************************************************++++++++++++++++++++***************+++++++++++++++++++++++++++++++++++++++++++++++++++++************+++++++++*****************####%%%%%%%%%#######%%%#####%%%#####********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******************************************************************************************************************************************************#%%@%%@%%%@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%%%%%%%%%@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##################**********+++++++++++++++++++++++++++++++++++++++++++++++++++++++*******************************##############################*********************###*****+++++++++++================++***************************************************#######*****###########*********************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++========++===++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#####******************###*---::::::::::::::::::::::::::::-***+:::::::::::::::::---=+++*****************************************************************************************************************************************************************************++++++++++++++++++++++++++++++===========+++++++++++++++******************************************************************#####################################################################################################################################********************************************************************************************************************************************************#########################%%%%%%%%#############****+++=======++++************+++==----------==+***##################################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%################################################################################################################################################################################%%@@@@@@@@@%##############################################################################################################################################################################################################################################################################################################################################################################################################################################################################
******************************************************************************************************************************************************************************************************************************++++++++++++++++++++****************++++++++++++++++++++++++++++++++++++++++++++++++++++************+++++++++******************####%%%%%%%%%######%%%####%%%%#####*********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********************************************************************************************************************************************************#%%@%@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%%%%%%%%%%@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#################**********+++++++++++++++++++++++++++++++++++++++++++++++++++++++*******************************##############################********************###**+++++++++++++++================++***********************************************############**#############*****************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#####******************###+---::::::::::::::::::::::::::::-***+-::::::::::::::::---=+++****************************************************************************************************************************************************************************++++++++++++++++++++++++++++++============+++++++++++++++******************************************************************#####################################################################################################################################********************************************************************************************************************************************************#########################%%%%%%%%#############****+++=======++++************+++===---------==+***##################################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%################################################################################################################################################################################%%@@@@@@@@@%##############################################################################################################################################################################################################################################################################################################################################################################################################################################################################
*******************************************************************************************************************************************************************************************************************************+++++++++++++++++++****************+++++++++++++++++++++++++++++++++++++++++++++++++++*************+++++++++******************####%%%%%%%%%%#####%%%####%%%%#####**********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***********************************************************************************************************************************************************#%%%@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%%%%%%%%%%@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#################**********+++++++++++++++++++++++++++++++++++++++++++++++++++++++*******************************################################****************####*+++++++++++++++++================++********************************************#############################*****************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#####******************###+---::::::::::::::::::::::::::::-****-::::::::::::::::---=+++****************************************************************************************************************************************************************************++++++++++++++++++++++++++++++=============++++++++++++++******************************************************************#####################################################################################################################################********************************************************************************************************************************************************#########################%%%%%%%%#############****+++=======+++**************++===---------==++**##################################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%################################################################################################################################################################################%%@@@@@@@@@%%#############################################################################################################################################################################################################################################################################################################################################################################################################################################################################
********************************************************************************************************************************************************************************************************************************++++++++++++++++++*****************++++++++++++++++++++++++++++++++++++++++++++++++++*************+++++++++*******************####%%%%%%%%%%%%##%%%####%@@%#####***********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**************************************************************************************************************************************************************#%@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@%%%%%%%%%%@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%@@%@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%%%%%%@@%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#################**********+++++++++++++++++++++++++++++++++++++++++++++++++++++++********************************##################################************####*++++++++++++++++++================++*******************************************##############################***************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#####*****************####*--:::::::::::::::::::::::::::::-****=::::::::::::::::---=+++****************************************************************************************************************************************************************************++++++++++++++++++++++++++++++=============++++++++++++++*******************************************************##***********###################################################################################################################################********************************************************************************************************************************************************#########################%%%%%%%%#############****+++=======+++**************+++===--------==++***#################################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%################################################################################################################################################################################%%@@@@@@@@@%%#############################################################################################################################################################################################################################################################################################################################################################################################################################################################################
********************************************************************************************************************************************************************************************************************************+++++++++++++++++*******************+++++++++++++++++++++++++++++++++++++++++++++++***************+++++++++*******************#####%%%%%%%%%%%%%%@%####%@@%####**************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**************************************************************************************************************************************************************+*#@@@@@@@@@@@@%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@%%%%%%%%%@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#################***********++++++++++++++++++++++++++++++++++++++++++++++++++++++********************************###################################*#********###**+++++++++++++++++++================+*******************************************##############################**************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******************************++*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#####*****************####*---::::::::::::::::::::::::::::=****+::::::::::::::::---=+++***************************************************************************************************************************************************************************+++++++++++++++++++++++++++++++=============++++++++++++++*****************************************************######***********#################################################################################################################################********************************************************************************************************************************************************#########################%%%%%%%%#############****+++======++++***************++===--------==++***#################################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%################################################################################################################################################################################%%@@@@@@@@@@%#############################################################################################################################################################################################################################################################################################################################################################################################################################################################################
********************************************************************************************************************************************************************************************************************************++++++++++++++++********************+++++++++++++++++++++++++++++++++++++++++++++++**************++++++++++********************#####%%%%%%%%%%%%%@%#%##%@@%####***************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****************************************************************************************************************************************************************#@@@@@@@@@@@@%%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@%@@%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#################***********++++++++++++++++++++++++++++++++++++++++++++++++++++++********************************###############################################**++++++++++++++++++++================+******************************************##############################***************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****************************+++++*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#####*****************####*--:::::::::::::::::::::::::::::=*****-:::::::::::::::---=+++***************************************************************************************************************************************************************************++++++++++==+++++++++++++++++++==============+++++++++++++****************************************************########**********#################################################################################################################################********************************************************************************************************************************************************#########################%%%%%%%%#############****+++======++++***************++===--------==++***#################################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%################################################################################################################################################################################%%@@@@@@@@@@%%############################################################################################################################################################################################################################################################################################################################################################################################################################################################################
********************************************************************************************************************************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++***************++++++++++*********************######%%%%%%%%%%%@%####%@%%###****************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***********************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****************************************************************************************************************************************************************#%@@@@@@@@@@@@%%@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@%@%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#################***********++++++++++++++++++++++++++++++++++++++++++++++++++++++********************************##############################################**+++++++++++++++++++++===============++******************************************##############################**************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**#####****************######+--::::::::::::::::::::::::::::=*****=::::::::::::::::--==++***************************************************************************************************************************************************************************+++++++++===+++++++++++++++++++==============+++++++++++++****************************************************########***********################################################################################################################################********************************************************************************************************************************************************#########################%%%%%%%%#############****+++======+++*****************++===-------==++***#################################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%################################################################################################################################################################################%%@@@@@@@@@@@%############################################################################################################################################################################################################################################################################################################################################################################################################################################################################
*********************************************************************************************************************************************************************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++***************++++++++++**********************######%%%%%%%%%%@%####%@%%##******************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***************************************************************************************************************************************************************##%@@@@@@@@@@@@%%@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@%@@%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#################***********++++++++++++++++++++++++++++++++++++++++++++++++++++++********************************############################################**+++++++++++++++++++++++===============++******************************************#############################***************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**#####**************%%######%%%#*=-::::::::::::::::::::::::=*+**+=::::::::::::::::--==++***************************************************************************************************************************************************************************+++++++++===+++++++++++++++++++===============+++++++++++++***************************************************########***********################################################################################################################################********************************************************************************************************************************************************#########################%%%%%%%%#############****+++======+++*****************++===-------==++***#################################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%################################################################################################################################################################################%%@@@@@@@@@@@%############################################################################################################################################################################################################################################################################################################################################################################################################################################################################
*********************************************************************************************************************************************************************************************************************+**+********************************************************************************************************++++++++++***********************#######%%%%%%%%%%%###%%%%#********************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***************************************************************************************************************************************************************##%@@@@@@@@@@%@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###############***********++++++++++++++++++++++++++++++++++++++++++++++++++++++*******************************##################################*#########**++++++++++++++++++++++++==============+++******************************************#############################***************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#####**************########%%%%%%%%#+=-:::..:::.:..:....::-=+++*+::::::::::::::::--==++***************************************************************************************************************************************************************************++++++++====++++++++++++++++++================++++++++++++****************************************************##########**********###############################################################################################################################********************************************************************************************************************************************************#########################%%%%%%%%#############****+++======+++*****************++===-------==++***#################################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%################################################################################################################################################################################%%@@@@@@@@@@@%%###########################################################################################################################################################################################################################################################################################################################################################################################################################################################################
*********************************************************************************************************************************************************************************************************************************************************************************************************************************+++++++++*************************###########%%%%%####%%%##********************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**************************************************************************************************************************************************************###@@@@@@@@@@@%@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@%%%%%%%%%%%@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###############***********++++++++++++++++++++++++++++++++++++++++++++++++++++++*******************************############################*###*#########***+++++++++++++++++++++++++==============+++*******************************************########################*******************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#####****************#######%%%%%%%%%%##*=-:......:.......::--=++-:::::::::::::::--==++***************************************************************************************************************************************************************************++++++++====++++++++++++++++++================+++++++++++++***************************************************##########*********################################################################################################################################*******************************************************************************************************************************************************##########################%%%%%%%%#############****+++======+++*****************+++==-------==++***#################################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%################################################################################################################################################################################%%@@@@@@@@@@@@%###########################################################################################################################################################################################################################################################################################################################################################################################################################################################################
*********************************************************************************************************************************************************************************************************************************************************************************************************************************+++++++++***************************###########%%#####%%%#*********************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**************************************************************************************************************************************************************###@@@@@@@@@@@@%@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%@%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###############***********+++++++++++++++++++++++++++++++++++++++++++++++++++++********************************##############################*########***+++++++++++++++++++++++++++++============++++*******************************************#######################*******************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#####****************#####*==+##%%%%%##%%%##*=:.............::::--:::::::::::::::--==++**************************************************************************************************************************************************************************+++++++++====++++++++++++++++++=================++++++++++++****************************************************##########********################################################################################################################################*******************************************************************************************************************************************************##########################%%%%%%%%#############****+++======+++*****************+++==-------==++***#################################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%################################################################################################################################################################################%%@@@@@@@@@@@@%###########################################################################################################################################################################################################################################################################################################################################################################################################################################################################
*********************************************************************************************************************************************************************************************************************************************************************************************************************************+++++++++****************************##########%%#####%%%#*********************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*************************************************************************************************************************************************************####@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##############***********+++++++++++++++++++++++++++++++++++++++++++++++++++++*******************************###############################*######**++++++++++++++++++++++++++++++++============++++*********************************************###################********************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****************************************++*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#####****************######-:::-=*#******####%#*=:.............::::::..::::::::::---=++**************************************************************************************************************************************************************************+++++++++====++++++++++++++++++==================+++++++++++*****************************************************#########******#################################################################################################################################********************************************************************************************************************************************************##########################%%%%%%%%#############****+++======+++******************++===------==++***#################################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%################################################################################################################################################################################%%@@@@@@@@@@@@%%##########################################################################################################################################################################################################################################################################################################################################################################################################################################################################
********************************************************************************************************************************************************************************************************************************************************************************************************************************++++++++++******************************########%%#####%%%#*********************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*************************************************************************************************************************************************************###%@@@@@@@@@@%@%@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##############***********+++++++++++++++++++++++++++++++++++++++++++++++++++++*******************************#############################*######**+++++++++++++++++++++++++++++++++++===========++++***********************************************##############**********************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++######****************#####*=:....-+++++++**####%##*=:...................::::::::::--=++**************************************************************************************************************************************************************************++++++++=====+++++++++++++++++===================+++++++++++*****************************************************#########*****##################################################################################################################################*********************************************************************************************************************************************************#########################%%%%%%%%#############****+++======+++******************++===------==++***#################################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%################################################################################################################################################################################%%@@@@@@@@@@@@@%##########################################################################################################################################################################################################################################################################################################################################################################################################################################################################
********************************************************************************************************************************************************************************************************************************************************************************************************************************+++++++++***********************************####%##***#%%%#*********************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++************************************************************************************************************************************************************####%@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##############***********+++++++++++++++++++++++++++++++++++++++++++++++++++++*******************************##########################*#####%%#*++++++++++++++++++++++++++++++++++++++==========+++**************************************************##########*********************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*######****************#####*+=:.:-++++++++++**########*=:...................:::::::--=++**************************************************************************************************************************************************************************++++++++=====+++++++++++++++++===================+++++++++++******************************************************#########**###################################################################################################################################***********************************************************************************************************************************************************########################%%%%%%%%#############****+++======+++******************++===------==++***#################################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#################################################################################################################################################################################%@@@@@@@@@@@@@%##########################################################################################################################################################################################################################################################################################################################################################################################################################################################################
********************************************************************************************************************************************************************************************************************************************************************************************************************************+++++++++***************************************##*****%%%#*********************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++************************************************************************************************************************************************************####%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##############***********+++++++++++++++++++++++++++++++++++++++++++++++++++++*****************************###############################%%%%%%*+++++++++++++++++++++++++++++++++++++++========++++****************************************************#######*******************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*######*************++*######+++--+++++++++++++**#########+-...................:::::--==++*************************************************************************************************************************************************************************++++++++=====++++++++++++++++=====================+++++++++++*****************************************************#############################################################################################################################################****************************************************************************************************************************************************************####################%%%%%%%%#############****+++======+++******************+++==------==++***#################################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#################################################################################################################################################################################%@@@@@@@@@@@@@%##########################################################################################################################################################################################################################################################################################################################################################################################################################################################################
********************************************************************************************************************************************************************************************************************************************************************************************************************************++++++++****************************************##*****%%%#*********************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***********************************************************************************************************************************************************#####%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##############***********+++++++++++++++++++++++++++++++++++++++++++++++++++++****************************##########################**##%%%%%%%%*+++++++++++++++++++++++++++++++++++++++========++++******************************************************####*****************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***********************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*######*************++*#####*+++++++++++++++++*********#####*=...................::::-==++*************************************************************************************************************************************************************************++++++++=====++++++++++++++++=====================+++++++++++*****************************************************#######################################################################%#####################################################################****************************************************************************************************************************************************************####################%%%%%%%%#############****+++======+++******************+++===-----==++***#################################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#################################################################################################################################################################################%@@@@@@@@@@@@@%%#########################################################################################################################################################################################################################################################################################################################################################################################################################################################################
*****************************************************************************************************************************************************************************************************************************************************************************+**************************************************++++++++****************************************#******%%%%*********************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***********************************************************************************************************************************************************###**#%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@%%%%%%@%%%%%%%%%%%@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##############**********+++++++++++++++++++++++++++++++++++++++++++++++++++++*********##****************#########################*###%%%%%%%#**++++++++++++++++++++++++++++++++++++++++========+++**#*****************************************************##***************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*######************+++*#####*++++++++++++++++***************#**=:................::::--=++************************************************************************************************************************************************************************+++++++++=====+++++++++++++++=======================++++++++++******************************************************#######################################################################%################################################################*#####****************************************************************************************************************************************************************##################%%%%%%%%#############****+++======+++*******************++===------==+***#################################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#################################################################################################################################################################################%@@@@@@@@@@@@@@%#########################################################################################################################################################################################################################################################################################################################################################################################################################################################################
********************************************************************************************************************************************************************************************************************************************************************************************************************************++++++++****************************************#******%%%%*********************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***********************************************************************************************************************************************************####%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%@@@%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##############**********+++++++++++++++++++++++++++++++++++++++++++++++++++++********#####*********############################*###%%%%%%%#**+++++++++++++++++++++++++++++++++++++++++++=======+++**********************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*######*+*++++++++++++*#####*+++++++++++++++*********************+:...............:::--=++************************************************************************************************************************************************************************+++++++++======++++++++++++++=======================++++++++++******************************************************#######################################################################%######################################################################****************************************************************************************************************************************************************##################%%%%%%%%#############****+++======+++*******************++===------==+***#################################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#################################################################################################################################################################################%@@@@@@@@@@@@@@%#########################################################################################################################################################################################################################################################################################################################################################################################################################################################################
********************************************************************************************************************************************************************************************************************************************************************************************************************************++++++++**********************************************#%%%%*********************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********************************************************************************************************************************************************###%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%@@@@@%%@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#############**********+++++++++++++++++++++++++++++++++++++++++++++++++++++********#####*****##################################%%%%%%%#*++++++++++++++++++++++++++++++++++++++++++++++++====++++********************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*######*+*++++++++++++*##****++++++++++++++**********+*************+-..............::--==++************************************************************************************************************************************************************************+++++++=======++++++++++++==========================++++++++++*****************************************************#######################################################################%%#####################################################################****************************************************************************************************************************************************************##################%%%%%%%%#############****+++======+++*******************++===------==+***#################################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#################################################################################################################################################################################%@@@@@@@@@@@@@@%%########################################################################################################################################################################################################################################################################################################################################################################################################################################################################
*********************************************************************************************************************************************************************************************************************************************************************************************************************************+++++++**********************************************#%%%%*********************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********************************************************************************************************************************************************##%%@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%############***********+++++++++++++++++++++++++++++++++++++++++++++++++++++********#######**##################################%%%%%%#*++++++++++++++++++++++++++++++++++++++++++++++++++====++++****************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***************************************+***********************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#####*++++++++++++++********++++++++++++++**********+=+*************+-............:::-==++************************************************************************************************************************************************************************+++++++=======+++++++++++===========================++++++++++****************************************************########################################################################%%#####################################################################*****************************************************************************************************************************************************************#################%%%%%%%%#############****+++======+++*******************++===------==+***#################################################################################################################################################################################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%##################################################################################################################################################################################%@@@@@@@@@@@@@@%%########################################################################################################################################################################################################################################################################################################################################################################################################################################################################
*********************************************************************************************************************************************************************************************************************************************************************************************************************************++++++***********************************************#%%%%**********************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********************************************************************************************************************************************************###%%@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%@@@@@@%@@@@@@@@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%############************+++++++++++++++++++++++++++++++++++++++++++++++++++*********#########################################%%%%%%#*++++++++++++++++++++++++++++++++++++++++++++++++++++==+=+++************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******+++++++++++++++++++++++++++++******************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**####*++++++++++++++********+++++++++++++*************==**************+-...........::-==+++***********************************************************************************************************************************************************************+++++++=======+++++++++=============================++++++++++****************************************************########################################################################%%######################################################################******************************************************************************************************************************************************************###############%%%%%%%%#############*****+++=====+++*******************++===------==+***#################################################################################################################################################################################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%##################################################################################################################################################################################%@@@@@@@@@@@@@@@%########################################################################################################################################################################################################################################################################################################################################################################################################################################################################
*********************************************************************************************************************************************************************************************************************************************************************************************************************************++++++***********************************************#%%%%**********************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********************************************************************************************************************************************************###%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%@@@@@@%%@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###########************+++++++++++++++++++++++++++++++++++++++++++++++++++*********#######################################%%%%%%#*++++++++++++++++++++++++++++++++++++++++++++++++++++++=++++++***********************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**####*++++++++++++++********+++++++++++++**************=:=**************+-.........::--=+++************************************************************************************************************************************************************************++++++======+++++++++===============================++++++++++**************************************************#########################################################################%%%#####################################################################*******************************************************************************************************************************************************************##############%%%%%%%%#############*****+++=====++++******************++===------==+***#################################################################################################################################################################################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%##################################################################################################################################################################################%@@@@@@@@@@@@@@@%########################################################################################################################################################################################################################################################################################################################################################################################################################################################################
********************************************************************************************************************************************************************************************************************************************************************************************************************************+++++++***********************************************#%%%%#*********************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******************************************************************************************************************************************************#%%%%@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###########************+++++++++++++++++++++++++++++++++++++++++++++++++++*********######################################%%%%%#*++++++++++++++++++++++++++++++++++++++++++++++++++++++++=++++++**********************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**####*++++++++++++++********+++++++++++++***************+::=**************+:.......::--==+++********************************************************************************************************************************************************************#***+++++======+++++++++================================+++++++++**************************************************##########################################################################%%#####################################################################********************************************************************************************************************************************************************#############%%%%%%%%#############*****+++======+++******************++===------==+***#################################################################################################################################################################################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%##################################################################################################################################################################################%@@@@@@@@@@@@@@@%%#######################################################################################################################################################################################################################################################################################################################################################################################################################################################################
********************************************************************************************************************************************************************************************************************************************************************************************************************************+++++++***********************************************#%%%%#*********************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******************************************************************************************************************************************************##%%%@@@@%@@@@@@@@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%@@%@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###########************+++++++++++++++++++++++++++++++++++++++++++++++++++********###########################%%%%%%####%%%%%#**+++++++++++++++++++++++++++++++++++++++++++++++++++++++++=++++++*********************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**####*++++++++++++++********+++++++++++++*****************-.:+**************=:......::-==++++****************************************************************************************************************************************************************######*+++++======++++++++=================================+++++++++**************************************************##########################################################################%%#####################################################################*************************************************************************************************************************************************************#******#############%%%%%%%%#############*****+++======+++******************++===------==+***#################################################################################################################################################################################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%##################################################################################################################################################################################%@@@@@@@@@@@@@@@@%#######################################################################################################################################################################################################################################################################################################################################################################################################################################################################
*******************************************************************************************************************************************************************************************************************************************************************************************************************************++++++*************************************************#%%%%*+********************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******************************************************************++**+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****************************************************************************************************************************************************###%%%@@@%@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%@@@@@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%############***********+++++++++++++++++++++++++++++++++++++++++++++++++++********###########################%%%%%%%%#%%%%%#*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**####*++++++++++++++********+++++++++++++******************=..-+**************-.....::-==++++*************************************************************************************************************************************************************##########*++++======++++++++==================================++++++++************************************************############################################################################%%%#####################################################################*********************************************************************************************************************************************************************###########%%%%%%%%#############*****+++======+++******************++===------==+****#################################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%##################################################################################################################################################################################%@@@@@@@@@@@@@@@@%#######################################################################################################################################################################################################################################################################################################################################################################################################################################################################
*******************************************************************************************************************************************************************************************************************************************************************************************************************************++++++*************************************************#%%%%*+********************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******************************************************************+**+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****************************************************************************************************************************************************####@%%@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%@@@@@@@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%############***********+++++++++++++++++++++++++++++++++++++++++++++++++++********############################%%%%%%%%%%%#*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**####*++++++++++++++********++++++++++++++******************+: :=**************+:...::-==+++++**********************************************************************************************************************************************************#############++++======++++++++==================================++++++++***********************************************#############################################################################%%%#####################################################################*********************************************************************************************************************************************************************###########%%%%%%%%#############*****+++======+++*****************+++===------==++***#################################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%##################################################################################################################################################################################%@@@@@@@@@@@@@@@@%#######################################################################################################################################################################################################################################################################################################################################################################################################################################################################
*******************************************************************************************************************************************************************************************************************************************************************************************************************************++++++*************************************************#%%%%***********************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***************************************************************************************************************************************************###*%@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%@@@@@@@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%############************++++++++++++++++++++++++++++++++++++++++++++++++++********############################%%%%%%%%%#**++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*####*++++++++++++++********++++++++++++++*******************+- .:+**************-:.::-==++++++*******************************************************************************************************************************************************###############++++======++++++++===================================+++++++***************************************#####################################################################################%%%#####################################################################*********************************************************************************************************************************************************************############%%%%%%%#############*****+++======++++****************+++==-------==++***#################################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%##################################################################################################################################################################################%@@@@@@@@@@@@@@@@%%######################################################################################################################################################################################################################################################################################################################################################################################################################################################################
********************************************************************************************************************************************************************************************************************************************************************************************************************************++++**************************************************#%%%%***********************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**************************************************************************************************************************************************###**@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%############************++++++++++++++++++++++++++++++++++++++++++++++++++********############################%%%%%%%##*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==========++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*####*++++++++++++++********+++++++++++++++********************=. .=+*************+:::--==++++++****************************************************************************************************************************************************################*++++=====++++++++++==================================+++++++**************************************######################################################################################%%%######################################################################********************************************************************************************************************************************************************############%%%%%%%#############*****+++======++++****************++===-------==++***#################################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%##################################################################################################################################################################################%@@@@@@@@@@@@@@@@@%######################################################################################################################################################################################################################################################################################################################################################################################################################################################################
**********************************************************************************************************************************************************************************************************************************************************************************************************************************++**************************************************#%%%%#**********************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***********************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********************************************************************+++++++++*******************************************************************##**#@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%@@@@@@@@@@@%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%############************++++++++++++++++++++++++++++++++++++++++++++++++++********############################%%%%%%##*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*####*+++++++++++++*********+++++++++++++++*********************=: .:=*************+-:--==+++++++********++***************************************************************************************************************************************##################*+++======++++++++++==================================++++++++*************************************#######################################################################################%%%#####################################################################********************************************************************************************************************************************************************############%%%%%%%#############*****+++=======++++***************++===-------==++***#################################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%##################################################################################################################################################################################%@@@@@@@@@@@@@@@@@%######################################################################################################################################################################################################################################################################################################################################################################################################################################################################
**************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************#%%%%#**********************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********************************************************************++++++++++++++++++**********************************************************###**%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%@@@@@@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#############***********++++++++++++++++++++++++++++++++++++++++++++++++++********#############################%%#%%##*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++========================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*####*+++++++++++++*********++++++++++++++++*********************+-. .-**************=--==+++++++++****++++++***********************************************************************************************************************************###################**+++++====++++++++++==================================++++++++*************************************#######################################################################################%%%######################################################################********************************************************************************************************************************************************************###########%%%%%%%############******+++========+++***************++===-------==++***#################################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%##################################################################################################################################################################################%@@@@@@@@@@@@@@@@@%######################################################################################################################################################################################################################################################################################################################################################################################################################################################################
**************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************#%%%%#*********************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******************************************************************+++++++++++++++++++++++++++++************************************************##***@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%@@@@@@@@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#############************+++++++++++++++++++++++++++++++++++++++++++++++++********################################%###++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***********************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=======================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*####*+++++++++++++*********+++++++++++++++++**********************=. .:+*************+===++++++++++++++++++++*********************************************************************************************************************************######################*++++====++++++++++===================================+++++++**************************************###########################################################################%%%%%%%%%#%%%%#######################################################################*******************************************************************************************************************************************************************###########%%%%%%%############******+++========++++*************+++===-------==++***#################################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%##################################################################################################################################################################################%@@@@@@@@@@@@@@@@@%%#####################################################################################################################################################################################################################################################################################################################################################################################################################################################################
**************************************************************************************************************************************************************************************************************************************************************************************************************************++**********************************************************#%%%%#*********************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******************************************************************+++++++++++++++++++++++++++++++++********************************************#***#@@@@@@@@@@@@@@@@@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#############************+++++++++++++++++++++++++++++++++++++++++++++++++*******####################################*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***********************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++======================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*####*+++++++++++++*********++++++++++++++++++**********************=:. .=*************+==+++++++++++++++++++++*******************************************************************************************************************************########################*+=+====+++++++++++==================================+++++++***************************************########################################################################%%%%%%@@%@%%%%%%#######################################################################*******************************************************************************************************************************************************************###########%%%%%%%############******+++=========+++*************++===--------==++***#################################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%##################################################################################################################################################################################%@@@@@@@@@@@@@@@@@%%#####################################################################################################################################################################################################################################################################################################################################################################################################################################################################
***********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+**#%%%%#*********************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***************************************************************++++++++++++++++++++++++++++++++++********************************************#****@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##############************+++++++++++++++++++++++++++++++++++++++++++++++********###################################**+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=++===========================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++*####*+++++++++++++*********+++++++++++++++++++**********************+-. .-**************+=++++++++++++++++++++******************************************************************************************************************************##########################**+====+++++++++++==================================+++++++***************************************#######################################################################%%%%@@@@@@@@@@@@%%#####################################################################*********************************************************************************************************************************************************************##########%%%%%%%############******+++=========++++************++===--------===+***#################################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%##################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@%#####################################################################################################################################################################################################################################################################################################################################################################################################################################################################
***********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+**#%%%%#*********************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***************************************************************++++++++++++++++++++++++++++++++++************************************************#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#################************++++++++++++++++++++++++++++++++++++++++++++++********##################################*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==============================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**************#************+++++++++++++++++++++++++++++++++++++++++++++*####*++++++++++++**********++++++++++++++++++++***********************=. .:+*************++++++++++++++++++++++*********************************************************************************************************************************##########**###########**+=+=+++++++++++==================================++++++++**************************************######################################################################%%%%@@@@@@@@@@@@@@%#####################################################################*********************************************************************************************************************************************************************##########%%%%%%%############******+++==========++++**********+++==---------===+***#################################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%##################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@%#####################################################################################################################################################################################################################################################################################################################################################################################################################################################################
***********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+**#%%%%#*********************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***************************************************************+++++++++++++++++++++++++++++++++++***********************************************%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%##################*************++++++++++++++++++++++++++++++++++++++++++++*******#################################**+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****#***************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==============================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********************##*********************++++++++++++++++++++++++++++++++++++*###**++++++++++++**********+++++++++++++++++++++***********************+: .+*************++++++++++++++++++++++********************************************************************************************************************************#########*****###########*+=++++++++++++==================================++++++++**************************************#####################################################################%%%@@@@@@@@@@@@@@@@@%####################################################################**********************************************************************************************************************************************************************#########%%%%%%%############******+++===========+++**********++===---------===+***#################################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%##################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@%#####################################################################################################################################################################################################################################################################################################################################################################################################################################################################
**************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************%%%%%#*********************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**************************************************************++++++++++++++++++++++++++++++++++++***********************************************@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%####################**************+++++++++++++++++++++++++++++++++++++++++++*******###############################**+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****##**#************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=================================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******************************##*************************++++++++++++++++++++++++++++++++*###**++++++++++++**********++++++++++++++++++++++***********************+-. .+*************++++++++++++++++++++++*********************************************************************************************************************************####*********###########*+++++++++++++==================================++++++++**************************************####################################################################%%%@@@@@@@@@@@@@@@@@@%###################################################################***********************************************************************************************************************************************************************#########%%%%%%%############******+++============+++********+++==----------===+***#################################################################################################################################################################################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%##################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@%%####################################################################################################################################################################################################################################################################################################################################################################################################################################################################
**************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************%%%%%#*********************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**************************************************************++++++++++++++++++++++++++++++++++++++********************************************%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%@@%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%####################***************+++++++++++++++++++++++++++++++++++++++++******##############################**++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***##*##****#*******************************************+***+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=======================================+++++++++++++********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********************************###*****************************++++++++++++++++++++++++++++*###**+++++++++++++*********++++++++++++++++++++++++***********************=. .=*************++++++++++++++++++++++**********************************************************************************************************************************************#########*#**+++++++++++==================================++++++++**************************************####################################################################%@@@@@@@@@@@@@@@@@@@@@%##################################################################************************************************************************************************************************************************************************########%%%%%%%############******+++=============+++*******++===----------===+***#################################################################################################################################################################################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%##################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@%####################################################################################################################################################################################################################################################################################################################################################################################################################################################################
**************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************%%%%%#*********************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**************************************************************++++++++++++++++++++++++++++++++++++++*******************************************#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%###################*****************++++++++++++++++++++++++++++++++++++++******############################**++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***##*******#*************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++======================================++++++++++++++++++++************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***************************************###************************####***++++++++++++++++++++++++++*###**++++++++++++++++++++**+++++++++++++++++++++++++***********************+: .=*************+++++++++++++++++++++************************************************************************************************************************************************######*#****++++++++++===================================+++++++***************************************##################################################################%%@@@@@@@@@@@@@@@@@@@@@%%#################################################################************************************************************************************************************************************************************************########%%%%%%%############******+++==============+++*****+++==------------==+***#################################################################################################################################################################################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%##################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@%####################################################################################################################################################################################################################################################################################################################################################################################################################################################################
**************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************%%%%%#*********************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*************************************************************+++++++++++++++++++++++++++++++++++++++*******************************************%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%##################*****************+++++++++++++++++++++++++++++++++++++******##########################**++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****#*******#****************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++====================================++++++++++++++++++++++++++*******************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********************************************####**************************#####**++++++++++++++++++++++++*##***++++++++++++++++++++++++++++++++++++++++++++++++************************-..=************++++++++++++++++++++++************************************************************************************************************************************************######******+++++++++===================================+++++++****************************************#################################################################%@@@@@@@@@@@@@@@@@@@@@@@%%################################################################************************************************************************************************************************************************************************########%%%%%%%############******+++===============+++++++++===------------==+****################################################################################################################################################################################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%##################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@%####################################################################################################################################################################################################################################################################################################################################################################################################################################################################
**************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************%%%%%#*********************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*************************************************************++++++++++++++++++++++++++++++++++++++++*****************************************#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%@@%@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%##################****************++++++++++++++++++++++++++++++++++++******#########################*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***********#*******************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++========================================++++++++++++++++++++++++*******************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***********************************************####************************#########*+++++++++++++++++++++++**#***+++++++++++++++++++++++++++++++++++++++++++++++++************************=:.=************+++++++++++++++++++++*************************************************************************************************************************************************#####*******+++++++++==================================+++++++****************************************################################################################%%@@@@@@@@@@@@@@@@@@@@@@@%%%###############################################################************************************************************************************************************************************************************************########%%%%%%%############******++++===============+++++++====------------==+****#############################################################################################################################%%%################################################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%##################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@%####################################################################################################################################################################################################################################################################################################################################################################################################################################################################
*************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************#%%%%%#********************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**************************************************************+++++++++++++++++++++++++++++++++++++++++++***************************************@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%################******************+++++++++++++++++++++++++++++++******######################**+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#*#**#*#*******************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**+++++++++++++++++++++++++++++++++************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++========================================+++++++++++++++++++++++++++****************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***************************************************####**********************############**+++++++++++++++++++++*#***+++++++++++++++++++++++++++++++++++++++++++++++++++*************************-.+************++++++++++++++++++++**************************************************************************************************************************************************#####*******++++++++==================================++++++++*************************************#*****############################################################%@@@@@@@@@@@@@@@@@@@@@@@@@%%###############################################################************************************************************************************************************************************************************************########%%%%%%%############******++++=================++++====-------------==++***#########################################################################################################################%%%%%%%%%%##############################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%###################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@%####################################################################################################################################################################################################################################################################################################################################################################################################################################################################
*************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************#%%%%%#********************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**************************************************************+++++++++++++++++++++++++++++++++++++++++++**************************************#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%##################**************************+**+++++++++++++++++******#####################*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#*#**#*#*********************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**++++++++++++++++++++++++++++++++++*******************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=========================================+++++++++++++++++++++++++++++************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****************************************************#####*********************##############**++++*+++++++++++++++*#***+++++++++++++++++++++++++++++++++++++++++++++++++++**************************=:+************++++++++++++++++++++**************************************************************************************************************************************************#*#*********+++++++==================================++++++++*********************************************#########################################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@%%##############################################################************************************************************************************************************************************************************************########%%%%%%%############******++++==========--============--------------==++***##########################################################################%%%%%%%%%####################################%%%%%%%%%%%%%#############################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%###################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@%###################################################################################################################################################################################################################################################################################################################################################################################################################################################################
*************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************#%%%%%%*******************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**************************************************************++++++++++++++++++++++++++++++++++++++++++++*************************************@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%####################*************************************+++++******###################*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***#****#***********************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******++++++++++++++++++++++++++++++++*************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=========================================+++++++++++++++++++++++++++++++++++++****************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******************************************************#####*******************#################*++++++++++++++++++++*#***+++++++++++++++++++++++++++++++++++++++++++++++++++++*************************+-************++++++++=+++++++++++***********************************************************************************************************************************************+***************++++++==================================++++++++*********************************************#########################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@%##############################################################************************************************************************************************************************************************************************########%%%%%%%############******++++=========-----==========--------------==++***######################################################################%%%%%%%%%%%%%%%%################################%%%%%%%%%%%%%%%############################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%###################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@%###################################################################################################################################################################################################################################################################################################################################################################################################################################################################
*************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************#%%%%%%******************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**************************************************************++++++++++++++++++++++++++++++++++++++++++++************************************%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%@@@%%%@@@@@@@@@@@@@@@@@@@@@@@@%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%###########%%##############*******************************++******#################**++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#*#****#*************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********++++++++++++++++++++++++++++**********************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==========================================++++++++++++++++++++++++++++++++++++++++++++++++++********************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********************************************************#####******************###################*+++++++++++++++++++*****++++++++++++++++++++++++++++++++++++++++++++++++++++++**************************=************++++++===+++++++++++***********************************************************************************************************************************************++**************+++++==================================++++++++*********************************************########################################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#############################################################************************************************************************************************************************************************************************########%%%%%%%############******++++=========-------=======---------------==++***####################################################################%%%%%%%%%%%%%%%%%%%%%###########################%%%%%%%%%%%%%%%%%%###########################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%###################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@%###################################################################################################################################################################################################################################################################################################################################################################################################################################################################
*************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************#%%%%%%******************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***************************************************************++++++++++++++++++++++++++++++++++++++++++++***********************************#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###########*************************++*****################**++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#*****##**************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**************+++++++++++++++++++++++++*****************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===============----------==================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********************************************************#####****************#####################**+*++++++++++++++++*****++++++++++++++++++++++++++++++++++++++++++++++++++++++***************************************+++++=====+++++++++++**********************************************************************************************************************************************++***************++++==================================++++++++*********************************************########################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#############################################################************************************************************************************************************************************************************************########%%%%%%%############******++++=========--------=====----------------==++***#################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%########################%%%%%%%%%%%%%%%%%%%%##########################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%###################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@%%##################################################################################################################################################################################################################################################################################################################################################################################################################################################################
*************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************#%%%%%%******************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***********************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***************************************************************+++++++++++++++++++++++++++++++++++++++++++++**********************************%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####################**************+++**################**++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#*****###***************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**************++++++++++++++++++++++++**************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=============---::::::::::-----============+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***********************************************************######***************#######################*+*++++++++++++++++*****++++++++++++++++++++++++++++++++++++++++++++++++++++++****************************************++++======+++++++++++********************************************************************************************************************************************+++++*************++++==================================++++++++**********************************************#######################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%##################*##########################################************************************************************************************************************************************************************************########%%%%%%%############*******+++=========----------=------------------==++***################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####################%%%%%%%%%%%%%%%%%%%%%%##########################################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%###################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@%%##################################################################################################################################################################################################################################################################################################################################################################################################################################################################
*************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************#%%%%%%******************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***************************************************************+++++++++++++++++++++++++++++++++++++++++++++*********************************#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%###########################***********################*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******###*****************************************************************************++++**+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***********++++++++++++++++++++++++++++++******************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++============-::::::::::....::::-============++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++************************************************************######*************#########################*++++++++++++++++++*****+++++++++++++++++++++++++++++++++++++++++++++++++++++++***************************************++++=======++++++++++********************************************************************************************************************************************+++++**************+++==================================++++++++***********************************************#####################################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%################***#########################################************************************************************************************************************************************************************************#########%%%%%%############*******+++=========-----------------------------==++***###############################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#################%%%%%%%%%%%%%%%%%%%%%%%%%%#########################################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%###################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@%##################################################################################################################################################################################################################################################################################################################################################################################################################################################################
*************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************#%%%%%%******************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***********************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***************************************************************+++++++++++++++++++++++++++++++++++++++++++++*********************************@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%%%@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%#############################******#########**#####**+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***##*###*********************************************++********************************++++***+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***************+++++++++++++++++++++++++++++++*************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===========-::...............::-============+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*************************************************************######************##########################**+*+++++++++++++++*****++++++++++++++++++++*+++++++++++++++++++++++++++++++*+++***************************************++========++++++++++*******************************************************************************************************************************************+++++++**************++==================================++++++++***********************************************#####################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%################****########################################************************************************************************************************************************************************************************#########%%%%%%############*******+++========------------------------------==++***##############################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###############%%%%%%%%%%%%%%%%%%%%%%%%%%%#########################################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%###################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@%##################################################################################################################################################################################################################################################################################################################################################################################################################################################################
************************************************************************************************************************************************************************************************************************************************************************************************************************+++**********************************************************#%%%%%%*****************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***************************************************************+++++++++++++++++++++++++++++++++++++++++++++++**********+*+*************+****%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%%%@%@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%@@%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%#########################################***+**#**+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**#**#*##*******************************************+++++++++++++*************************+++*****+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********************+++++++++++++++++++++++++++++*************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===========--:::::::..........:-============+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++***************************************************************####%##********#############################**+***+++++++++++++*****++++++++++++++++++++*+++++++++++++++++++++++++++++++++++++++***********************************++=========++***+++*+******************************************************************************************************************************************++++++++**************+===================================+++++++************************************************###################################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%##############***#**###################################*###*************************************************************************************************************************************************************************#########%%%%%%############*******+++========------------------------------==++***############################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%############%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#########################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%###################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@%##################################################################################################################################################################################################################################################################################################################################################################################################################################################################
************************************************************************************************************************************************************************************************************************************************************************************************************************+++**********************************************************#%%%%%%****************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***************************************************************+++++++++++++++++++++++++++++++++++++++++++++++**************+***************%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%%%@%@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%########################################*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**#**#*###*****************************************++++++++++++++++++++++++++************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***************************++++++++++++++++++++++++++++********************************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++============---:::::::::......:-============++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****************++++++++++++++++++++++++++++++++++++++++++++++++++*****************************************************************####%##*******###############################***+++*+++++++++++*****++++++++++++++++++++*++++++++++++++++++++++++++++++++++++++++***********************************+=========+**###**+++*****************************************************************************************************************************************+++++++++**************===================================+++++++************************************************###################################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%##############***#**#######################################*************************************************************************************************************************************************************************#########%%%%%%############*******+++========------------------------------==++***############################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#########################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%###################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@%##################################################################################################################################################################################################################################################################################################################################################################################################################################################################
************************************************************************************************************************************************************************************************************************************************************************************************************************+++**********************************************************#%%%%%%***************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***************************************************************+++++++++++++++++++++++++++++++++++++++++++++++***********+*+*******###%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%%%@%@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%#####################################**+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**#**#####****************************************+++++++++++++++++++++++++++++++++++++******************++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****+*****************************+++++++++++++++++++++++******************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=============--------:::::::::-============+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***+++++++++++++++++++++++++++++++++++++*****************************************************************************###%%%%##***###################################****+++++++++++++*****++++++++++++++++++++*++++++++++++++++++++++++++++++++++++++++*************************************++=======+**####*****************************************************************************************************************************************++++++++++++**************+==================================+++++++********************************************#**####################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@##############******#######################################**************************************************************************************************************************************************************************########%%%%%%############*******+++=======-------------------------------==++***###########################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#########################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@%####################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@%%#################################################################################################################################################################################################################################################################################################################################################################################################################################################################
**********************************************************************************************************************************************************************************************************++++++********************************************************************************************************+++**********************************************************#%%%%%%**************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***************************************************************++++++++++++++++++++++++++++++++++++++++++++++++***************#%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%%%@%@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%###################################**++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#**#*#####**************************************++++++++++++++++++++++++++++++++++++++++++++**************++++++++++++++++++++++++++++++++++++++++++++++++++**+++++*********************************+++++++++++++++++++*******************************************************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++===================-----------=============++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******************************************************************************************###%%%%###########################################***+++++++++++*****+++++++++++++++++++**++++++++++++++++++++++++++++++++++++********************************************+=====+=+*#####**************************************************************************************************************************************++++++++++++++**************+=================================+++++++********************************************#**###################################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#############*******#####################################***************************************************************************************************************************************************************************########%%%%%%############*******+++=======-------------------------------==++****#########################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#########################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@%####################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@%%#################################################################################################################################################################################################################################################################################################################################################################################################################################################################
********************************************************************************************************************************************************************************************************+++++++++++*****************************************************************************************************+++**********************************************************#%%%%%%**************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++**********#%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%%%@%@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%#################################***+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****#*######************************************++++++++++++++++++++++++++++++++++++++++++++++++***************+++++++++++++++++++++++++++++++++++++++++***+++****************************************+++++++++++***********************************************************************************************************************************************************************************+++++++++++++++++++++++++++++++++++++=========================================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***************************************************************************************************###%%%%%############################################**++++++++++*****+++++++++++++++++++**++++++++++++++++++++++++++++++*+++*******+*****************************************++==+++*######*********************************************************************************************************************************++++++++++++++++++**************=================================+++++++********************************************#*####################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#############*******#####################################***************************************************************************************************************************************************************************########%%%%%%############*******+++======--------------------------------===+****########################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#########################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@%####################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@%#################################################################################################################################################################################################################################################################################################################################################################################################################################################################
********************************************************************************************************************************************************************************************************++++++++++++****************************************************************************************************+************************************************************#%%%%%%**************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++*********%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%%%@%@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%#################################*****++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***##*########**********************************++++++++++++++++++++++++++++++++++++++++++++++++++*****************+++++++++++++++++++++++++++++++++******+*********************************************++++****************************************************************************************************************************************************************************************************++++++++++++++++++++++++++========================================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********************++++++++++++++++++++++++****************************************************************###%%%%%%##############################################*+++++++++*****+++++++++++++++++++**++++++++++++++++++++++++++++++********************************************************+++++**#####***************************************************************************************************************************+++++++++++++++++++++++**************+================================+++++++********************************************######################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#############*******####################################****************************************************************************************************************************************************************************########%%%%%############********++++=====---------------------------------==+****########################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#########################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@%####################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@%#################################################################################################################################################################################################################################################################################################################################################################################################################################################################
********************************************************************************************************************************************************************************************************++++++++++++*****************************************************************************************************************************************************************#%%%%%%**************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++*********%%%%%%%%%%%%%%%@@@@@%@@@@@@@@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%%%@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%###############################******+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***###########**********************************++++++++++++++++++++++++++++++++++++++++++++++++++++*******************+++++++++++++++++++++++**********************************************************************************************************************************************************************************************************************************************************************+++++++++++++++++++++++======================================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**************++++++++++++++++++++++++++++++++++++***********************************************************#**#####%%%%%%###############################################*++++++++*****+++++++++++++++++++**++++++++++++++++++++++++++++++***********************************************************+++*#######*****************************************************************************************************************+++++++++++++++++++==+++++++++++**************+===============================+++++++*********************************************####################################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#############**********#################################****************************************************************************************************************************************************************************########%%%%%############********++++=====---------------------------------==+****#######################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#########################################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@%####################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@%#################################################################################################################################################################################################################################################################################################################################################################################################################################################################
********************************************************************************************************************************************************************************************************+++++++++++++****************************************************************************************************************************************************************#%%%%%%**************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*++++++++++++++++++******************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++**++**++*%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%%%@@@%@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%##########################************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**############**********************************++++++++++++++++++++++++++++++++++++++++++++++++++++*************************++++++++********************************************************************************************************************************************************************************************************************************************************************************++++++++++++++++++++++=====================================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******++++++++++++++++++++++++++++++++++++++++++++++*********************************************************##*########%%%%%%%##############################################**+++++++*#***+++++++++++++++++++**++++++++++++++++++++++++++++++*************************************************************++*#######*************************************************************************************************************++++++++++++++++++++++==++++++++++++**************===============================+++++++*********************************************####################################################%@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#############**********#################################****************************************************************************************************************************************************************************########%%%%%############********++++====----------------------------------==+****######################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#########################################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@%####################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@%%################################################################################################################################################################################################################################################################################################################################################################################################################################################################
*******************************************************************************************************************************************************************************************************+++++++++++++++***************************************************************************************************************************************************************%%%%%%%**************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++*******%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%%%@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%################********************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#*###########***********************************+++++++++++++++++++++++++++++++++++++++++++++++++++++***********************++++++++*********************************************************************************************************************************************************************************************************************************************************************************++++++++++++++++++++++===================================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****************************************************#################%%%%%%%###############################################*+++++++*****+++++++++++++++++++**+++++++++++++++++++++++++++++++**********************************************************###***#######*****************************************************************************************************+++++++++++++++++++++++++++++===++++++++++++*************+==============================+++++++**********************************************##################################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#############***********################################****************************************************************************************************************************************************************************########%%%%%############*******+++++====----------------------------------==+****######################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##########################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@%####################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@%%################################################################################################################################################################################################################################################################################################################################################################################################################################################################
*******************************************************************************************************************************************************************************************************+++++++++++++++++***************************************************************************#*********************************************************************************%%%%%%%**************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++*******%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########**************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#**###########**********************************++++++++++++++++++++++++++++++++++++++++++++++++++++++**********************++++++++**********************************************************************************************************************************************************************************************************************************************************************************++++++++++++++++++++++==================================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***************************************#################################%%%%%%%################################################*++++++*#***+++++++++++++++++++**+++++++++++++++++++++++++++++++***********************************************************####*########**************************************************************************************************++++++++++++++++++++++++++++++++===+++++++++++**************+=============================+++++++**********************************************##################################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#############***********################################****************************************************************************************************************************************************************************########%%%%%############*******+++++====----------------------------------==+****######################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##########################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@%###################################################################################################################################################################################%%@@@@@@@@@@@@@@@@@@@@@@%%################################################################################################################################################################################################################################################################################################################################################################################################################################################################
*******************************************************************************************************************************************************************************************************+++++++++++++++++++*************************************************************************#*********************************************************************************%%%%%%%**************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++******#%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####*******************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**############**********************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++********************++++++++*************************************************************************************************************************************************************************************************************************************************************************************++++++++++++++++++++===============================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***##############******###################################################%%%%%%%################################################**+++++*##**+++++++++++++++++++**++++++++++++++++++++++++++++++++***********************************************************#############********************************************************************************************+++++++++++++++++++++++++++++++++++++===++++++++++++************#*=============================+++++++*********************************************###################################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%############************##############################*****************************************************************************************************************************************************************************########%%%%%############*******+++++====----------------------------------==+****#####################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##########################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@%###################################################################################################################################################################################%%@@@@@@@@@@@@@@@@@@@@@@%%################################################################################################################################################################################################################################################################################################################################################################################################################################################################
*******************************************************************************************************************************************************************************************************+++++++++++++++++++++**********************************************************************##*********************************************************************************%%%%%%%*************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++******#%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%%%@%@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####**********************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**############**********************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*************************+***************************************************************************************************************************************************************************************************************************************************************************************+++++++++++++++++++======-----=================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***###*#####################################################################%%%%%%%%################################################**++++*##**+++++++++++++++++++**++++++++++++++++++++++++++++++++************************************************************#############****************************************************************************************+++++++++++++++++++++++++++++++++++++++++===+++++++++++**************+===========================++++++++*********************************************###################################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%############************#############################******************************************************************************************************************************************************************************########%%%%%############*******+++++====----------------------------------==+****#####################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##########################################################%%@@@@@@@@@@@@@@@@@@@@@@@@@%%###################################################################################################################################################################################%%@@@@@@@@@@@@@@@@@@@@@@%%################################################################################################################################################################################################################################################################################################################################################################################################################################################################
*******************************************************************************************************************************************************************************************************++++++++++++++++++++++++*****************************************************************####*********************************************************************************%%%%%%%*************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++************##*******+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++*****%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%%%@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%#######***********************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#############*****#############***************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++************************+****************************************************************************************************************************************************************************************************************************************************************************************+++++++++++++++++++====-::::--=============++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**############################################################################%%%%%%%%#################################################**+++*###*+++++++++++++++++++**++++++++++++++++++++++++++++++++************************************************************###############**********************************************************************************+++++++++++++++++++++++++++++++++++++++++++++===+++++++++++***************===========================++++++++******************************************######################################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%############*************############################******************************************************************************************************************************************************************************#########%%%%############*******+++++====----------------------------------==+****####################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###########################################################%%@@@@@@@@@@@@@@@@@@@@@@@@@%####################################################################################################################################################################################%%@@@@@@@@@@@@@@@@@@@@@@@%################################################################################################################################################################################################################################################################################################################################################################################################################################################################
*******************************************************************************************************************************************************************************************************+++++++++++++++++++++++++++**************************************************************####********************************************************************************#%%%%%%%#************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****#################***+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++*****%%%%%%%%%%%%@@@@@@%@@@@@@@@@@@@%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%%%@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%##########***********************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*###############################**************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********************+*****************************************************************************************************************************************************************************************************************************************************************************************++++++++++++++++++++==::::::-==========+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**##############################################################################%%%%%%%%##################################################*****###*+++++++++++++++++++**++++++++++++++++++++++++++++++++************************************************************################*****************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++===++++++++++***************+==========================++++++++****************************************#######################################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#############************############################*******************************************************************************************************************************************************************************########%%%%############*******+++++===-----------------------------------==+****####################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%############################################################%@@@@@@@@@@@@@@@@@@@@@@@@@%####################################################################################################################################################################################%%@@@@@@@@@@@@@@@@@@@@@@@%################################################################################################################################################################################################################################################################################################################################################################################################################################################################
*******************************************************************************************************************************************************************************************************++++++++++++++++++++++++++++*************************************************************####********************************************************************************#%%%%%%%#************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***#######################**++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******************+++*****************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++*****%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%%%@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%################****************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*################################*************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********************+******************************************************************************************************************************************************************************************************************************************************************************************+++++++++++++++++++==::::---=======++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***###############################################################################%%%%%%%%####################################################**####*+++++++++++++++++++**++++++++++++++++++++++++++++++++*************************************************************################**************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++===++++++++++****************==========================++++++++**************************************#########################################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%############*************###########################*******************************************************************************************************************************************************************************########%%%%############*******+++++===-----------------------------------==+****###################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%############################################################%@@@@@@@@@@@@@@@@@@@@@@@@@%####################################################################################################################################################################################%%@@@@@@@@@@@@@@@@@@@@@@@%################################################################################################################################################################################################################################################################################################################################################################################################################################################################
*******************************************************************************************************************************************************************************************************++++++++++++++++++++++++++++*************************************************************####********************************************************************************#%%%%%%%#************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*###%%%%%%%%%%%%%%%%##%#####**++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++***#%%%%%%%%%%%@@@@@@%@%@@@@@@@@@@%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%%%@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%#######################*****##########***********************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**################################************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****************************************************************************************************************************************************************************************************************************************************************************************************************++++++++++++++++++==----======+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++*##################################################################################%%%%%%%%##########################################################*+++++++++++++++++++**+++++++++++++++++++++++++++++++++************************************************************#################*************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++==++++++++++****************+=========================++++++++*************************************##########################################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%############*************###########################*******************************************************************************************************************************************************************************########%%%%############*******+++++===-----------------------------------==+****###################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%############################################################%@@@@@@@@@@@@@@@@@@@@@@@@@%####################################################################################################################################################################################%%@@@@@@@@@@@@@@@@@@@@@@@@################################################################################################################################################################################################################################################################################################################################################################################################################################################################
*********************************************************************************************************************************************************************************************************++++++++++++++++++++++++++***************************************************************##********************************************************************************#%%%%%%%#************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**###%%%%%%%%%%%%%%%%%%%%%%#####*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++****%%%%%%%%%%#@@@@@@@@@@@@@@@@@@@@@@%@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%#########################################***********************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**###################################**********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***************************************************************************************************************************************************************************************************************************************************************************************************************+++++++++++++++++=--=======++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++************************************************+++++++++++++++++++++++++++++++++++++++++++++**###################################################################################%%%%%%%%##########################################################*++++++++++++++++++***++++++++++++++++++++++++++++++++++************************************************************#################*********************************************************************+++++++++++++++++++++++++++===++++++++++++++++++++++++++===+++++++++*****************=========================++++++++************************************#**########################################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%############**************########################*********************************************************************************************************************************************************************************#######%%%%%############*******+++++===-----------------------------------==+****###################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#############################################################%@@@@@@@@@@@@@@@@@@@@@@@@@%####################################################################################################################################################################################%%@@@@@@@@@@@@@@@@@@@@@@@@%###############################################################################################################################################################################################################################################################################################################################################################################################################################################################
**********************************************************************************************************************************************************************************************************++++++++++++++++++++++++++**************************************************************##********************************************************************************#%%%%%%%#************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*###%%%%%%%%%%%%%%%%%%%%%%%%%####**+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==========================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++*****%%%%%%##**#@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%##########################################**********************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****####################################**********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**************************************************************************************************************************************************************************************************************************************************************************************************************+++++++++++++++++=---====+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******************************************************++++++++++++++++++++++++++++++++++++++**#####################################################################################%%%%%%%%##########################################################*++++++++++++++++++***+++++++++++++++++++++++++++++++++*************************************************************##################******************************************************************++++++++++++++++++++++++++======+++++++++++++++++++++++++++==+++++++++*****************+========================++++++++************************************#***######################################################%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%############**************########################*********************************************************************************************************************************************************************************########%%%%############*******+++++===-----------------------------------==++***###################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#############################################################%@@@@@@@@@@@@@@@@@@@@@@@@@%####################################################################################################################################################################################%%@@@@@@@@@@@@@@@@@@@@@@@@%###############################################################################################################################################################################################################################################################################################################################################################################################################################################################
**********************************************************************************************************************************************************************************************************++++++++++++++++++++++++++**************************************************************##********************************************************************************#%%%%%%%#************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*###%%%%%%%%%%%%%%%%%%%%%%%%%%%%####*+++++++++++++++++++++++++++++++++++++++++++++++++++++++===================================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++******%%##******%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%########################################**********************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***#######################################**********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++************************##############**********************************************************************************************************************************************************************************************************************************************************************+++++++++++++++++=----=++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***************************************************************+++++++++++++++++++++++++++++++**######################################################################################%%%%%%%%%#########################################################*++++++++++++++++++***+++++++++++++++++++++++++++++++++*************************************************************###################**************************************************************+++++++++++++++++++++++++++========+++++++++++++++++++++++++++==++++++++++*****************========================++++++++****************************************######################################################%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%############**************#######################**********************************************************************************************************************************************************************************########%%%%############*******+++++===-----------------------------------==++***###################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##############################################################%@@@@@@@@@@@@@@@@@@@@@@@@%####################################################################################################################################################################################%%@@@@@@@@@@@@@@@@@@@@@@@@%###############################################################################################################################################################################################################################################################################################################################################################################################################################################################
**********************************************************************************************************************************************************************************************************+++++++++++++++++++++++++++***********************************************************************************************************************************************#%%%%%%%#************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++###%%%%%@@@@@@@@%%%%%%%%%%%%%%%%%%###*++++++++++++++++++++++++++++++++++++++++++++++==========================================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++*******#********#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%###################################*********************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******####################################************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***********************#################********************************************************************************************************************************************************************************************************************************************************************+++++++++++++++++=---=++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****************************************************************++++++++++++++++++++++++++++++*########################################################################################%%%%%%%%%####################################################*####*+++++++++++++++++****++++++++++++++++++++++++++++++++++************************************************************####################***+*****************************************************+++++++++++++++++++++++++++++++=========+++++++++++++++++++++++++++==+++++++++*****************+=======================++++++++*****************************************#####################################################%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%############***************######################**********************************************************************************************************************************************************************************########%%%#############*******+++++===-----------------------------------==++***###################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##############################################################%@@@@@@@@@@@@@@@@@@@@@@@@%####################################################################################################################################################################################%%@@@@@@@@@@@@@@@@@@@@@@@@%%##############################################################################################################################################################################################################################################################################################################################################################################################################################################################
***********************************************************************************************************************************************************************************************************++++++++++++++++++++++++++***********************************************************************************************************************************************#%%%%%%%#*************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*##%%%%@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%##*++++++++++++++++++++++++++++++++++++====================================================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++**********+*******%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%#################################****************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****######################################************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********************###################******************************************************************************************************************************************************************************************************************************************************************++++++++++++++++====++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********************************************************************++++++++++++++++++++++++++++*#########################################################################################%%%%%%%%%###################################################**####*+++++++++++++++++***+++++++++++++++++++++++++++++++++++*************************************************************#####################*++++************************************************++++++++++++++++++++++++++++++++++++======+++++++++++++++++++++++++++==+++++++++******************=======================++++++++*****************************************#####################################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#############***************###################************************************************************************************************************************************************************************************########%%%#############*******+++++====----------------------------------==++***##################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###############################################################%@@@@@@@@@@@@@@@@@@@@@@@%%####################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@%%##############################################################################################################################################################################################################################################################################################################################################################################################################################################################
************************************************************************************************************************************************************************************************************++++++++++++++++++++++++++**********************************************************************************************************************************************#%%%%%%%#*************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#%%%%@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%###*+++++++++++++++++++++++++++++++========================================================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++*****************#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##############################***************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***#########################################************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********************####################*************************************************************************************************************************************************************##########******************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++**********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**************************************************************************+++++++++++++++++++++++**##########################################################################################%%%%%%%%%###################################################*+####*+++++++++++++++++***++++++++++++++++++++++++++++++++++++*************************************************************####################**++++++++++++***********************************++++++++++++++++++++++++++++++++++++++++++====++++++++++++++++++++++++++++=+++++++++******************+======================++++++++******************************************####################################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%############***************###################************************************************************************************************************************************************************************************#########%%#############*******+++++=====---------------------------------==++***##################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###############################################################%@@@@@@@@@@@@@@@@@@@@@@@%#####################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@%%##############################################################################################################################################################################################################################################################################################################################################################################################################################################################
*************************************************************************************************************************************************************************************************************+++++++++++++++++++++++++**********************************************************************************************************************************************#%%%%%%%#*************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#%%%%@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%##*+++++=+++++++++++++++++++++++=======================================================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++*****************@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###########################****************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***##########################################************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********************######################*****************************************************************************************************************************************************#######%%%%%%%####***************************************************************************************++++++++++++++++++++++++++++++++++++++++++++**********************+++++++++++++++++++++++++++++++++++++++++++++++*******************************************************************************+++++++++++++++++++++**###########################################################################################%%%%%%%%%##################################################**+####*+++++++++++++++++***+++++++++++++++++++++++++++++++++++++*************************************************************####################**++++++++++++++++++++************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=+++++++++******************+======================++++++++******************************************###################################################%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%############****************#################*************************************************************************************************************************************************************************************#########%%#############*******++++++=======------------------------------==++***##################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###############################################################%%@@@@@@@@@@@@@@@@@@@@@@%#####################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@%##############################################################################################################################################################################################################################################################################################################################################################################################################################################################
*************************************************************************************************************************************************************************************************************+++++++++++++++++++++++++**********************************************************************************************************************************************#%%%%%%%#*************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%##*+=++++=++++++++++++++++++++++++=====================================================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*++++*********************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++*************+**#@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##########################******************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***##########################################*************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******************######################************************************************************************************************************************************************#####%%%%%%%%%%%%##%%%###*************************************************************************************++++++++++++++++++++++++++++++++++++++++++**************************++++++++++++++++++++++++++++++++++++++++++++*********************************************************************************+++++++++++++++++++**############################################################################################%%%%%%%%%##################################################*++*###*+++++++++++++++++***+++++++++++++++++++++++++++++++++++++*************************************************************####################**+++++++++++++++++++++**********************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********************======================++++++++*******************************************##################################################%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%############****************#################*************************************************************************************************************************************************************************************#########%%############********+++++++=========---------------------------==++****#################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###############################################################%%@@@@@@@@@@@@@@@@@@@@@@%#####################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@%##############################################################################################################################################################################################################################################################################################################################################################################################################################################################
**************************************************************************************************************************************************************************************************************++++++++++++++++++++++++++********************************************************************************************************************************************%%%%%%%%#*************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%#*+++++++++++++++++++++++++++++++===================================================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******************************+++**********************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++******************@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%############################******************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***###########################################*************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******************######################********************************************************************************************************************************************###%%%%%%%%%%%%%%%%%%%%%%%%%##**************************************************************************************++++++++++++++++++++++++++++++++++++++*******************************+++++++++++++++++++++++++++++++++++++++***********************************************************************************+++++++++**++++++++*#############################################################################################%%%%%%%%%#################################################**++*####+++++++++++++++++***+++++++++++++++++++++++++++++++++++++*************************************************************####################**+++++++++++++++++++**********************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********************+=====================++++++++*********************************************################################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%############*****************##############***************************************************************************************************************************************************************************************#######################*********+++++++==========--------------------------=++****#######################################*########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#################################################################%@@@@@@@@@@@@@@@@@@@@@@%#####################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@%##############################################################################################################################################################################################################################################################################################################################################################################################################################################################
**************************************************************************************************************************************************************************************************************++++++++++++++++++++++++++********************************************************************************************************************************************%%%%%%%%#*************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%#+++++++++++++++++++++++++++++++==================================================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******************************+++**********************************************************************++++++++++++++++++++++++++++++++++++++++++++++++******************#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%############################********************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*+++++++++++++***############################################**************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******************######################****************************************************************************************************************************************###%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##************************************************************************************+++++++++++++++++++++++++++++++++++++**********************************++++++++++++++++++++++++++++++++++**************************************************************************************++++++++++++++++++*##############################################################################################%%%%%%%%%#################################################**++#####+++++++++++++++++***+++++++++++++++++++++++++++++++++++++***************************************************************##################**+++++++++++++++++**********************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********************+=====================++++++++*********************************************################################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%############*****************##############***************************************************************************************************************************************************************************************########%##############**********+++++++++++=======------------------------=++*****###############################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#################################################################%@@@@@@@@@@@@@@@@@@@@@@%#####################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@%##############################################################################################################################################################################################################################################################################################################################################################################################################################################################
**************************************************************************************************************************************************************************************************************++++++++++++++++++++++++++********************************************************************************************************************************************%%%%%%%%#*************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%#++++++++++++++++++++++++++++++=================================================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******************************++++*********************************************************************++++++++++++++++++++++++++++++++++++++++++++++++******************@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########*****################*******************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****************++++++++***#############################################***************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****************######################************************************************************************************************************************************###%%%%##%%%%%%%%%%%%%%%%%%%%%%%%%##%##************************************************************************************++++++++++++++++++++++++++++++++++******************************************++++++++++++++++++++++++++*********************************************************************************************+++*++++++++*###############################################################################################%%%%%%%%%################################################**+++#####+++++++++++++++++***++++++++++++++++++++++++++++++++++++++****************************************************************#############*****++++++++++++++++*********************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********************=====================++++++++***********************************************##############################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%############******************#############****************************************************************************************************************************************************************************************#######%##############************+++++++++++++=====----------------------=++**********##########################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#################################################################%@@@@@@@@@@@@@@@@@@@@@@%#####################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@%##############################################################################################################################################################################################################################################################################################################################################################################################################################################################
**************************************************************************************************************************************************************************************************************++++++++++++++++++++++++++++++****************************************************************************************************************************************%%%%%%%%#*************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%#*+++++++++++++++++++++++++++++================================================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****************************+++++*********************************************************************+++++++++++++++++++++++++++++++++++++++++++++++******************#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#########**********############********************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***************************************#############################################****************++++++++++++++++++++++++++++++++++++++++++++++++****+++++++++++++++++++++++++*****************####################**********************************************************************************************************************************###%%%%###%%%%%%%%%%%%%%%%%%%%%%%%%%#%%%%%##***********************************************************************************+++++++++++++++++++++++++++++++*************************************************+++++++++++++++****************************************************************************************************+++++++*++*################################################################################################%%%%%%%%%################################################*++++#####+++++++++++++++++***++++++++++++++++++++++++++++++++++++++**********************************************************************************+++++++++++++++*******************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********************+====================++++++++***********************************************##############################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%############******************#############****************************************************************************************************************************************************************************************#######%#############*********************+++++++=====--------------------=++**************################**********############%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###################################################################%@@@@@@@@@@@@@@@@@@@@@%#####################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@%##############################################################################################################################################################################################################################################################################################################################################################################################################################################################
***************************************************************************************************************************************************************************************************************++++++++++++++++++++++++++++++***************************************************************************************************************************************%%%%%%%%#*************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%#++++++++++++++++++++++++++++++==============================================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*+++++++++++++++++++++*****************************+++++*********************************************************************++++++++++++++++++++++++++++++++++++++++++++++*******************@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#########*******************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********************************************##############################################****************++++++++++++++++++++++++++++++++++++++++++++++*****+++++++++++++++++++++++++++******************##################**#****************************************+++++++++++++***********************************************************************####%%%##%%%%##%%%%%%%%%%%%%%%%%%%%%%%%#%%%%%%%##**********************************************************************************+++++++++++++++++++++++++++++**********************************************************************************************************************************************************************+++*++++**################################################################################################%%%%%%%%%###############################################**+++*#####+++++++++++++++++***+++++++++++++++++++++++++++++++++++++++*********************************************************************************+++++++++++++*******************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********************+====================++++++++***********************************************##############################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%############*******************############****************************************************************************************************************************************************************************************#######%#############*************************++++======------------------=++****************###########**************###########%%%%%%%%%%%%%###%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###################################################################%@@@@@@@@@@@@@@@@@@@@@%#####################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@%#############################################################################################################################################################################################################################################################################################################################################################################################################################################################
***************************************************************************************************************************************************************************************************************+++++++++++++++++++++++++++++++**************************************************************************************************************************************%%%%%%%%#*************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%#+++++++++++++++++++++++++++=++=============================================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******************************++++*********************************************************************++++++++++++++++++++++++++++++++++++++++++++*******************+#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########*******************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*************************************#***********###############################################****************++++++++++++++++++++++++++++++++++++++++++++******+++++++++++++++++++++++++++++******************#################**************************************+++++++++++++++++++++++***************************************************************####%%#########%%%%%%%%%%%%%%%%%%%%%%%%%%%%##%%%%%%%##*********************************************************************************++++++++++++++++++++++++++***********************************************************************************************************************************************************************++*++*++**#################################################################################################%%%%%%%%%###############################################*++++*#####++++++++++++++++****++++++++++++++++++++++++++++++++++++++++********************************************************************************+++=====++++***************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********************====================++++++++***********************************************#############################################%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%###########*******************############****************************************************************************************************************************************************************************************#####################***************************+++=======----------------==+******************************************##########%%%%%%%%%%%%#####%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###################################################################%@@@@@@@@@@@@@@@@@@@@%%#####################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@%#############################################################################################################################################################################################################################################################################################################################################################################################################################################################
**********************************************************************************************************************************************##########********************************************************+++++++++++++++++++++++++++++***************************************************************************************************************************************%%%%%%%%#*************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***+++++*%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%#*++++++++++++++++++++++++++=+++============================================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******************************+++**********************************************************************++++++++++++++++++++++++++++++++++++++++++******************+***@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######*****#***************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****************************************#**********###############################################******************+++++++++++++++++++++++++++++++++++++++++******++++++++++++++++++++++++++++++++*******************################***********************************++++++++++++++++++++++++++++++********************************************************###%#####%%%%%%%####%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#%%%%%%#*********************************************************************************+++++++++++++++++++++++*************************************************************************************************************************************************************************++*++*+**##################################################################################################%%%%%%%%%##############################################**+++++#####++++++++++++++++****++++===+++++++++++++++++++++++++++++++++********************************************************************************++=====+++***++**++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********************====================++++++++**************************************************##########################################%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%###########*******************###########*****************************************************************************************************************************************************************************************#####################****************************++++======---------------==+*******************************************#########%%%%%%%%%%%######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####################################################################%%@@@@@@@@@@@@@@@@@@@%%#####################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@%#############################################################################################################################################################################################################################################################################################################################################################################################################################################################
********************************************************************************************************************************************###############*****************************************************+++++++++++++++++++++++++++++***************************************************************************************************************************************%%%%%%%%#*************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++************%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%#++++++++++++++++++++++++++=+++===========================================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******************************+++**********************************************************************+++++++++++++++++++++++++++++++++++++++++*********************+#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%############******************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********************************************##**********###############################################******************++++++++++++++++++++++++++++++++++++++++*****++++++++++++++++++++++++++++++++++********************##############*******************************+++++++++++++++++++++++++++++++++++++***************************************************########%%###%%%%#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#%%%%%%%%%##*******************************************************************************++++++++++++++++++++++*************************************************************************************************************************************************************************+++++*++*###################################################################################################%%%%%%%%%##############################################*++++++#####++++++++++++++++***+++++=-=++++++++++++++++++++++++++++++++++*******************************************************************************+=====++***++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********************+===================++++++++****************************************************########################################%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%###########********************##########*****************************************************************************************************************************************************************************************#####################*****************************++++=====---------------==++*********************************#********#########%%%%%%%%%%%#######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####################################################################%@@@@@@@@@@@@@@@@@@@%%#####################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@%#############################################################################################################################################################################################################################################################################################################################################################################################################################################################
******************************************************************************************************************************************##################*****************************************************++++++++++++++++++++++++++++***************************************************************************************************************************************%%%%%%%%#*************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***************%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%#*+++++++++++++++++++++++++++++++========================================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********************************************************************************************************++++++++++++++++++++++++++++++++++++++++***********************@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##############*******************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*************************************************#**********################################################******************++++++++++++++++++++++++++++++++++++++*******+++++++++++++++++++++++++++++++++++**********************#########******************************+++++++++++++++++++++++++++++++++++++++++++++*******************************************################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##*******************************************************************************+++++++++++++++++++***********************************************************************************************************************************************************************++**++*+*++*####################################################################################################%%%%%%%%###############################################**+++++####*++++++++++++++++***+++++++++++++++++++++++++++++++++++++++++++******************************************************************************=====+**+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********************+===================++++++++********************************************************####################################%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%############*******************########*******************************************************************************************************************************************************************************************#####################******************************++++=====---------:----==++*******************************************########%%%%%%%%%%########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######################################################################%@@@@@@@@@@@@@@@@@@@%######################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@%#############################################################################################################################################################################################################################################################################################################################################################################################################################################################
******************************************************************************************************************************************###################****************************************************++++++++++++++++++++++++++++***************************************************************************************************************************************%%%%%%%%#*************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****************%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%#++++++++++++++++++++++++++++++++=======================================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********************************************************************************************************++++++++++++++++++++++++++++++++++++++++**********************#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####**############******************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**************************************************##*********########################################################***********++++++++++++++++++++++++++++++++++++*******++++++++++++++++++++++++++++++++++++++************************#####******************************+++++++++++++++++++++++++++++++++++++++++++++++++++++**********************************#################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##********************************************************************************+++++++++++++++*****************************************************************************************************************************************************************************+++++**#####################################################################################################%%%%%%%%##############################################**++++++####*++++++++++++++++***+++++++++++++++++++++++++++++++++++++++++++*****************************************************************************+===+**+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********************+===================++++++++********************************************************####################################%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%############*******************########*******************************************************************************************************************************************************************************************#####################*******************************++++====--------::----==++********************************************#######%%%%%%%%%#########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######################################################################%@@@@@@@@@@@@@@@@@@@%######################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@%#############################################################################################################################################################################################################################################################################################################################################################################################################################################################
****************************************************************************************************************************************######################***************************************************+++++++++++++++++++++++++++++**************************************************************************************************************************************%%%%%%%%#*************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****************#%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%#*=+++++++++++++++++++++++++++++++======================================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*************************************************************************************************************+++++++++++++++++++++++++++++++++++++++*********************+*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####*****##############******************************************++++++++++++++++++++++++++++++++++++++++++++++++++++*************************************####**************##*********###########################################################*********++++++++++++++++++++++++++++++++++*******+++++++++++++++++++++++++++++++++++++++++*********************************************************++++++++++++++++++++++++++++++++++++++++++++++++*************************************######%#############%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#***********************************************************************************++++++*******************************************************************************************************************************************************************************+++**++**######################################################################################################%%%%%%%%#############################################**+++++++*###*+++++++++++++++****++++++++++++++++++++++++++++++++++++++++++++***************************************************************************+==+**++**+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***********************===================++++++++*********************************************************###################################%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%############*******************########*******************************************************************************************************************************************************************************************######################********************************+++===--------::----==++********************************************######%%%%%%%%%##########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######################################################################%%@@@@@@@@@@@@@@@@@@%######################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@%#############################################################################################################################################################################################################################################################################################################################################################################################################################################################
****************************************************************************************************************************************########################*************************************************+++++++++++++++++++++++++++++*************************************************************************************************************************************#%%%%%%%%#*************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****************#%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@%%%#++++++++++++++++++++++++++++++++======================================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*************************************************************************************************************+++++++++++++++++++++++++++++++++++++++*********************+#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####********########################************************************+***+++++++++++++++++++++++++++++++++++++++++**********************************##############*************##*********###########################################################*********++++++++++++++++++++++++++++++++*******+++++++++++++++++++++++++++++++++++++++++++*********************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++************######**********#######%################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#**********************************************************************************************************************************************************************************************************************************************************************+++*+++**########################################################################################################%%%%%%%#############################################*++++++++*###*+++++++++++++++****+++++++++++++++++++++++++++++++++++++++++++++**************************************************************************+++***+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***********************===================++++++++*********************************************************###################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%############*******************#######********************************************************************************************************************************************************************************************######################********************************++++==--------::----==++********************************************######%%%%%%%%###########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########################################################################%@@@@@@@@@@@@@@@@@@%######################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@%%############################################################################################################################################################################################################################################################################################################################################################################################################################################################
****************************************************************************************************************************************#########################************************************************++++++++++++++++++++++++++++++************************************************************************************************************************************#%%%%%%%%#*************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********##*####*#%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%#++++++++++++++++++++++++++++++++======================================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***************************************************************************************************************++++++++++++++++++++++++++++++++++++++*************+*********%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########################################################*****************************+++++++******+++***********************************************######################************###********############################################################**********+++++++++++++++++++++++++++++*********++++++++++++++++++++++++++++++++++++++++++++*******************************************************++++++++++++++++++++++++++++++++++++++++++++++++++*********##############################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#*****************************************************************************************************************************************************************************************************************************************************************+++++**+++*##########################################################################################################%%%%%%%#############################################*++++++++*###*+++++++++++++++***++++++++++++++++++++++++++++++++++++++++++++++**************************************************************************++*****++*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***********************===================++++++++**********************************************************##################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%############*******************#######********************************************************************************************************************************************************************************************######################*********************************+++===-------::----==++********************************************######%%%%%%%#############%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#########################################################################%@@@@@@@@@@@@@@@@@@%######################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@%%############################################################################################################################################################################################################################################################################################################################################################################################################################################################
***************************************************************************************************************************************##########################************************************************+++++++++++++++++++++++++++++++*****************************************************************************************************************########**********#%%%%%%%%%*************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++********############%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%*+=+++++++++++++++++++++++++++++======================================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****+++++++++****************************************************************************************************************++++++++++++++++++++++++++++++++++++++++***********+++++****+#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%################################################################**************************************************************************************#########################**********#####*******#############################################################**********+++++++++++++++++++++++++++**********++++++++++++++++++++++++++++++++++++++++++++++******************************************************++++++++++++++++++++++++++++++++++++++++++++++*************#############################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#****************************************************************************************************************************************************************************************************************************************************************+++++*+++*###########################################################################################################%%%%%%%############################################*+++++++++*###*+++++++++++++++***+++++++++++++++++++++++++++++++++++++++++++++++******************************************************************************++**++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***********************==================++++++++************************************************************#################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%############********************######*********************************************************************************************************************************************************************************************#####################**********************************++===-------::----==++********************************************#######%%%%%##############%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##########################################################################%%@@@@@@@@@@@@@@@@@%######################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@%############################################################################################################################################################################################################################################################################################################################################################################################################################################################
********************************************************************************************************************************#*****############################***********************************************+++++++++++++++++++++++++++++++***************************************************************************************************************###########*********#%%%%%%%%%*************++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******##############@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%#+++++++++++++++++++++++++++++++======================================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********+++*****************************************************************************************************************++++++++++++++++++++++++++++++++++++++++*******+++++++++*****%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####################################################################***********************************************************************************############################*******#######******##############################################################**********++++++++++++++++++++++++++*********+++++++++++++++++++++++++++++++++++++++++++++++++******************************************************++++++++++++++++++++++++++++++++++++**********************#############################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#************************************************************************************************************************************************************************************************************************************************************++++++++++**############################################################################################################%%%%%%############################################**+++++++++*###*++++++++++++++****+++++++++++++++++++++++++++++++++++++++++++++++*******************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***********************==================++++++++**************************************************************###############################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%##############******************######*********************************************************************************************************************************************************************************************######################*********************************+++==-------::----==++********************************************#######%%%%%##############%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###########################################################################%@@@@@@@@@@@@@@@@@%######################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@%############################################################################################################################################################################################################################################################################################################################################################################################################################################################
********************************************************************************************************************************#*****############################***********************************************+++++++++++++++++++++++++++++++**************************************************************************************************************#############********#%%%%%%%%%*************+++++++++++++++++++++++++++++++++++++++++++++++++++++++*******###############@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%#*++++++++++++++++++++++++++++++=====================================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********++******************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++*****+++++++++++****@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####%%%%%%#########################################################******************************************************************************#################################******########*****###############################################################***********+++++++++++++++++++++++***********+++++++++++++++++++++++++++++++++++++++++++++++++*******************************************************+++++++++++++++++++++++++*********************************###########################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##*********************************************************************************************************************************************************************************************************************************************************+++++++++++**#############################################################################################################%%%%%%############################################*+*++++++++*###*++++++++++++++****+++++++++++++++++++++++++++++++++++++++++++++++*********************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***********************==================++++++++**************************************************************###############################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%###############*****************######*********************************************************************************************************************************************************************************************######################*********************************+++==-------::----==++********************************************#######%%%%################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%############################################################################%@@@@@@@@@@@@@@@@@%######################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@%############################################################################################################################################################################################################################################################################################################################################################################################################################################################
***************************************************************************************************************************************#############################*******************************************++++++++++++++++++++++++++++++++++++***********************************************************************************************************###############******#%%%%%%%%%#************++++++++++++++++++++++++++++++++++++++++++++++++++++++*******################@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%*+=++++++++++++++++++++++++++++====================================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++*+***++%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#########################################************************************************************************######################################*****#########****#################################################################**********+++++++++++++++++++++*************++++++++++++++++++++++++++++++++++++++++++++++++++*****************************************************++++++++++++++++*******************************************###########################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#********************************************************************************************************************************************************************************************************************************************************+++++*++*++*###############################################################################################################%%%%%%###########################################***+++++++++*###*++++++++++++++****+++++++++++++++++++++++++++++++++++++++++++++++++*****************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***********************=================+++++++++***************************************************************#############################%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%###%%########*##***************######**********************************************************************************************************************************************************************************************#####################***********************************++==-----:::::---==++*********************************************######%%%%################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%############################################################################%@@@@@@@@@@@@@@@@@%######################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@%############################################################################################################################################################################################################################################################################################################################################################################################################################################################
**************************************************************************************************************************************##############################*******************************************++++++++++++++++++++++++++++++++++++**********************************************************************************************************################******%%%%%%%%%%#************++++++++++++++++++++++++++++++++++++++++++++++++++++++******#################@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%#++++++++++++++++++++++++++++++====================================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********************************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++**++**@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####################################*********************************************************************########################################****##########****##################################################################**********++++++++++++++++++++*************++++++++++++++++++++++++++++++++++++++++++++++++++++******************************************************++++++++++++*********************************************#########*#################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#*******************************************************************************************************************************************************************************************************************************************************++**++*++**################################################################################################################%%%%%%###########################################*+++++++++++*###*++++++++++++++***++++++++++++++++++++++++++++++++++++++++++++++++++*****************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***********************=================+++++++++***************************************************************#############################%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%#%@%########******************#####***********************************************************************************************************************************************************************************************#####################***********************************++==-----:::::---==++*********************************************######%%%#########*########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#############################################################################%%@@@@@@@@@@@@@@@@%######################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%###########################################################################################################################################################################################################################################################################################################################################################################################################################################################
*************************************************************************************************************************************###############################*******************************************++++++++++++++++++++++++++++++++++++*********************************************************************************************************##################*****%%%%%%%%%%#************+++++++++++++++++++++++++++++++++++++++++++++++++++++******##################@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%#*++++++++++++++++++++++++++++=====================================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********************************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++***+*#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#################################****************************************************************#############################################***###########***####################################################################**********+++++++++++++++++***************++++++++++++++++++++++++++++++++++++++++++++++++++++*******************************************************+++++++***************************************************##*######################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#*****************************************************************************************************************************************************************************************************************************************************++*++*+++**################################################################################################################%%%%%%%##########################################**+++++++++++*###*+++++++++++++****++++++++++++++++++++++++++++++++++++++++++++++++++****************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***********************=================+++++++++**************************************************************##############################%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%@@@#########****************######***********************************************************************************************************************************************************************************************#####################***********************************++===----:::::---==++*********************************************######%%%########***########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###############################################################################%@@@@@@@@@@@@@@@@%######################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%###########################################################################################################################################################################################################################################################################################################################################################################################################################################################
********************************************************************************************************************************#####################################******************************************+++++++++++++++++++++++++++++++++++++**+++++++++++++*****************************************************************************************##################****#%%%%%%%%%%#************+++++++++++++++++++++++++++++++++++++++++++++++++++++******##################@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%#*++++++++++++++++++++++++++++=====================================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********************************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++*++****@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##################################************************************************************###############################################################***#####################################################################*********++++++++++++++++*****************++++++++++++++++++++++++++++++++++++++++++++++++++++***************************************************************************************************************#**##*####################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#*****************************************************************************************************************************************************************************************************************************************************++*++*++*##################################################################################################################%%%%%%%##########################################*++++++++++++*##**+++++++++++++****+++++++++++++++++++++++++++++++++++++++++++++++++++**************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***********************================++++++++++*************************************************************###############################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#########**************#######***********************************************************************************************************************************************************************************************#####################***********************************+++==----:::::---==++*********************************************######%%%########****########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%################################################################################%%@@@@@@@@@@@@@@@%######################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%###########################################################################################################################################################################################################################################################################################################################################################################################################################################################
*********************************************************************************************************************################################################******************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++***********************+**************************************************************###################****#%%%%%%%%%%#************++++++++++++++++++++++++++++++++++++++++++++++++++++******###################@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%*++++++++++++++++++++++++++++=========+===========================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********************************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++**+***#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####################################*****************************************************################################################################################################################################################*******++++++++++++++*******************++++++++++++++++++++++++++++++++++++++++++++++++++++****************************************************************************************************************##*###%##################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#****************************************************************************************************************************************************************************************************************************************************+++*++**###################################################################################################################%%%%%%##########################################**++++++++++++*****+++++++++++++****++++++++++++++++++++++++++++++++++++++++++++++++++++*************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***********************================++++++++++************************************************************################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%##########************#######************************************************************************************************************************************************************************************************####################************************************+++==----:::::----=++*********************************************######%%%#######*****########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#################################################################################%@@@@@@@@@@@@@@@%######################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%###########################################################################################################################################################################################################################################################################################################################################################################################################################################################
********************************************************************************************************************#################################################******************************************+++++++++++++++++++++++++***+++++++++++++++++++++++++++++++++************++++++*************************************************************####################***#%%%%%%%%%%#************++++++++++++++++++++++++++++++++++++++++++++++++++++*****####################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%#++++++++++++++++++++++++++++=====================================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++*******@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####################################***********************************************########################################################################################################################################################*****++++++++++++********************++++++++++++++++++++++++++++++++++++++++++++++++++++++*****************************************************************************************************************##%%###################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#***************************************************************************************************************************************************************************************************************************************************+++++**####################################################################################################################%%%%%%##########################################*+++++++++++++*****+++++++++++++****+++++++++++++++++++++++++++++++++++++++++++++++++++++************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***********************================++++++++++************************************************************################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@###########**********########************************************************************************************************************************************************************************************************####################*************************************++===----::::----=++********************************************#######%%########******########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##################################################################################%@@@@@@@@@@@@@@@%######################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%###########################################################################################################################################################################################################################################################################################################################################################################################################################################################
******************************************************************************************************************###################################################******************************************++++++**********************++++++++++++++++++++++++++++++++++++++++++++++++++**************************************************************####################***#%%%@%%%%%%#***********++++++++++++++++++++++++++++++++++++++++++++++++++++******####################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%#++++++++++++++++++++++++++++=====================================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++********#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####################################*****************************************##############################################################################################################################################################*****++++++++************************+++++++++++++++++++++++++++++++++++++++++++++++++++++**************************************************************************************************************#*##%#####################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#**************************************************************************************************************************************************************************************************************************************************+++*+**#####################################################################################################################%%%%%%#########################################**+++++++++++++*****++++++++++++****+++++++++++++++++++++++++++++++++++++++++++++++++++++++**********************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***********************================++++++++++***********************************************************#################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%###########********########*************************************************************************************************************************************************************************************************###################**************************************++===----::::----==+********************************************#######%%########*******########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###################################################################################%%@@@@@@@@@@@@@@%######################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%###########################################################################################################################################################################################################################################################################################################################################################################################################################################################
****************************************************************************************************************######################################################*****************************************+++++************************+++++++++++++++++++++++++++++++++++++++++++++++++**************************************************************####################***#%%%@%%%%%%#***********++++++++++++++++++++++++++++++++++++++++++++++++++++******####################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%#+++++++++++++++++++++++++++======================================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********************************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++*********@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######################################***********************************####################################################################################################################################################################*****+++++**************************+++++++++++++++++++++++++++++++++++++++++++++++++++++***************************************************************************************************************#%%######################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#**************************************************************************************************************************************************************************************************************************************++++++*****++++**######################################################################################################################%%%%%%#########################################*++++++++++++++*****++++++++++++****+++++++++++++++++++++++++++++++++++++++++++++++++++++++********************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********************+================++++++++++***********************************************************#################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%##########################**************************************************************************************************************************************************************************************************###################**************************************+++==----:::::---==++*******************************************#######%%#######********#########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####################################################################################%@@@@@@@@@@@@@@%######################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%###########################################################################################################################################################################################################################################################################################################################################################################################################################################################
****************************************************************************************************************######################################################**************************************************************************++++++++++++++++++++++++++++++++++++++++++++++*************************************************************#####################**#%%%%%%%%%%#************++++++++++++++++++++++++++++++++++++++++++++++++++******#####################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%#*+++++++++++++++++++++++++++=====================================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****++****************************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++*********#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######################################*******************************########################################################################################################################################################################***********************************+++++++++++++++++++++++++++++++++++++++++++++++++++++**************************************************************************************************************#%%########################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#**************************************************************************************************************************************************************************************************************************************++++++**++***+*#########################################################################################################################%%%%#########################################*+++++++++++++++*****++++++++++++****+++++++++++++++++++++++++++++++++++++++++++++++++++++++++******************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********************+===============+++++++++++************************************************************################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@##########################**************************************************************************************************************************************************************************************************##################****************************************++==-----::::---==+********************************************########%#######*********########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####################################################################################%@@@@@@@@@@@@@@%######################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%###########################################################################################################################################################################################################################################################################################################################################################################################################################################################
****************************************************************************************************************######################################################**************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++************************************************************#####################**#%%%%%%%%%%#************++++++++++++++++++++++++++++++++++++++++++++++++++******#####################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%#*+++++++++++++++++++++++++++====================================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++**********%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######################################*************************##############################################################################################################################################################################***********************************++++++++++++++++++++++++++++++++++++++++++++++++++++*************************************************************************************************************############################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#*************************************************************************************************************************************************************************************************************************************++++++*+**++**#########################################################################################################################%%%%%#########################################*+++++++++++++++*****+++++++++++*****+++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********************================+++++++++++************************************************************################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#########################***************************************************************************************************************************************************************************************************##################****************************************++===----::::---==++*******************************************################**********########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####################################################################################%%@@@@@@@@@@@@@%######################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%###########################################################################################################################################################################################################################################################################################################################################################################################################################################################
****************************************************************************************************************######################################################**************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++************************************************************#####################**#%%%%%%%%%%#************++++++++++++++++++++++++++++++++++++++++++++++++++******#####################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%#*+++++++++++++++++++++++++++===================================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********************************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++***********@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########################################******************####################################################################################################################################################################################***********************************+++++++++++++++++++++++++++++++++++++++++++++++++++***********************************************************************************************************##############################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#**************************************************************************************************************************************************************************************************************************************+++++++**+**##########################################################################################################################%%%%%########################################**+++++++++++++++*****+++++++++++****+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********************+================+++++++++++************************************************************################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#######################*****************************************************************************************************************************************************************************************************#################****************************************+++==----::::---==++*******************************************################**********########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#############################################################################################%@@@@@@@@@@@@@%######################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%###########################################################################################################################################################################################################################################################################################################################################################################################################################################################
******************************************************************************************************************####################################################*****************************************************************************++++++++++++++++++++++++++++++++++++++++++++************************************************************#####################**#%%%%%%%%%%#************+++++++++++++++++++++++++++++++++++++++++++++++++******######################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%#*+++++++++++++++++++++++++++==============================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++***********%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#############################******###############################################################################################################################################################################################***********************************++++++++++++++++++++++++++++++++++++++++++++++++++**********************************************************************************************************################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%**************************************************************************************************************************************************************************************************************************************++++++*++**###########################################################################################################################%%%%%########################################*++++++++++++++++*****+++++++++++****+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******************+=================+++++++++++************************************************************################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%####################********************************************************************************************************************************************************************************************************################******************************************++===---::::---==++*******************************************################***********########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##############################################################################################%@@@@@@@@@@@@@%######################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%##########################################################################################################################################################################################################################################################################################################################################################################################################################################################
**************************************************************************************************************##**#####################################################******************************************************************************++++++++++++++++++++++++++++++++++++++++++***********************************************************######################**#%%%%%%%%%%#************+++++++++++++++++++++++++++++++++++++++++++++++++*****#######################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%*+++++++++++++++++++++++++++============================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********************************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++************@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##################################################################################################################################################################################################################################*******************************+++++++++++++++++++++++++++++++++++++++++++++++++**********************************************************************************************************#################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#*************************************************************************************************************************************************************************************************************************************+++++*++**############################################################################################################################%%%%########################################**++++++++++++++++*****++++++++++*****+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******************+==================++++++++++***************************************************************##############################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%################************************************************************************************************************************************************************************************************************################******************************************++===----:::---==++*******************************************################************#######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%################################################################################################%@@@@@@@@@@@@%#####################################################################################################################################################################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%##########################################################################################################################################################################################################################################################################################################################################################################################################################################################
**************************************************************************************************************#########################################################*********************************************************************************++++++++++++++++++++++++++++++++++*++++***********************************************************######################*##%%%%%%%%%%#************++++++++++++++++++++++++++++++++++++++++++++++++******#######################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%*+++++++++++++++++++++++++++=========================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**************************************************************************************************************************************+++++++++++++++++++++++++++++++++++++++*************#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#############################################################################################################################################################################################################################******************************+++++++++++++++++++++++++++++++++++++++++++++++++*********************************************************************************************************##################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*************************************************************************************************************************************************************************************************************************************+++++++**#############################################################################################################################%%%%########################################*+++++++++++++++++*****++++++++++*****++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****************+===================++++++++++***************************************************************##############################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@##############**************************************************************************************************************************************************************************************************************################******************************************+++==-----::---==++*******************************************###############*************########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%################################################################################################%@@@@@@@@@@@%%#####################################################################################################################################################################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%##########################################################################################################################################################################################################################################################################################################################################################################################################################################################
*************************************************************************************************************##########################################################*********************************************************************************************************************++************************************************************######################*##%%%@%%%%%%#*************+++++++++++++++++++++++++++++++++++++++++++++++******#######################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%*+++++++++++++++++++++++++++========================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++**************%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##########################################################################################################################################################################################################################******************************+++++++++++++++++++++++++++++++++++++++++++++++*********************************************************************************************************###################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#*************************************************************************************************************************************************************************************************************************************+++++**##############################################################################################################################%%%%#######################################**+++++++++++++++++*****+++++++++*****++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***************++====================++++++++++***************************************************************##############################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%############***************************************************************************************************************************************************************************************************************################*******************************************++===-----:---==++*******************************************###############**************#######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%################################################################################################%%@@@@@@@@@@%%#####################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%##########################################################################################################################################################################################################################################################################################################################################################################################################################################################
*************************************************************************************************************##########################################################**********************************************************************************************************************+************************************************************######################*##%%%@%%%%%%#*************+++++++++++++++++++++++++++++++++++++++++++++++*****########################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%#*+++++++++++++++++++++++++++=======================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**************************************************************************************************************************************+++++++++++++++++++++++++++++++++++++***************@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####################################################################################################################################################################################################################******************************+++++++++++++++++++++++++++++++++++++++++++++++********************************************************************************************************####################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#*************************************************************************************************************************************************************************************************************************************+++***###############################################################################################################################%%%%#######################################*++++++++++++++++++*****+++++++++*****+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***************======================++++++++++***************************************************************##############################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#########******************************************************************************************************************************************************************************************************************################*******************************************+++==-----:---==++*******************************************##############***************#######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#################################################################################################%@@@@@@@@@@%%#####################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%##########################################################################################################################################################################################################################################################################################################################################################################################################################################################
************************************************************************************************************##########################################################************************************************************************************************************************************************************************************########################%%%@%%%@%%%#*************++++++++++++++++++++++++++++++++++++++++++++++******########################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%#*++++++++++++++++++++++++++++==================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***************************************************************************************************************************************+++++++++++++++++++++++++++++++++++*****************%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#################################################################################################################################################################################################################******************************+++++++++++++++++++++++++++++++++++++++++++++*************************************************************************************************++++***#####################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*********************************************************************************************************************************************************************************************************************************+***+****################################################################################################################################%%%#######################################*+++++++++++++++++++*****+++++++++*****++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**************+======================+++++++++++****************************************************************############################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@######*********************************************************************************************************************************************************************************************************************###############*********************************************++===--------==++********************************************#############****************#######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#################################################################################################%%@@@@@@@@@@%#####################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#########################################################################################################################################################################################################################################################################################################################################################################################################################################################
**********************************************************************************************************############################################################************************************************************************************************************************************************************************************########################%%%@%%%@%%%#*************++++++++++++++++++++++++++++++++++++++++++++++*****#########################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%#*++++++++++++++++++++++++++++==================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***************************************************************************************************************************************++++++++++++++++++++++++++++++++++******************@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##################################################################################################################################################################################################################*****************************++++++++++++++++++++++++++++++++++++++++++++***************************************************************************************************++*+*#*####################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#*********************************************************************************************************************************************************************************************************************************+**++**#################################################################################################################################%%%#######################################*+++++++++++++++++++*****++++++++******++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**************+======================+++++++++++****************************************************************############################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@####*#*********************************************************************************************************************************************************************************************************************###############*********************************************+++==--------==++********************************************#############****************#######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%################################################################################################%%@@@@@@@@@@%#####################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#########################################################################################################################################################################################################################################################################################################################################################################################################################################################
********************************************************************************************************###############################################################**********************************************************************************************************************************************************************************#########################%%%@@@%@%%%#*************++++++++++++++++++++++++++++++++++++++++++++++*****#########################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%#*++++++++++++++++++++++++++++=================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****************************************************************************************************************************************+++++++++++++++++++++++++++++++++******************#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%################################################################################################################################################################################################################*****************************++++++++++++++++++++++++++++++++++++++++***************************************************************************************************+++++++*##**####################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#*********************************************************************************************************************************************************************************************************************************+**+**##################################################################################################################################%%%######################################*++++++++++++++++++++*****++++++++*****+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**************+=====================+++++++++++******************************************************************###########################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@###***#********************************************************************************************************************************************************************************************************************###############**********************************************++===-------==++********************************************#############****************#######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#################################################################################################%@@@@@@@@@@%#####################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#########################################################################################################################################################################################################################################################################################################################################################################################################################################################
*******************************************************************************************************################################################################**********************************************************************************************************************************************************************************#########################%%%@@@%@%%%#*************+++++++++++++++++++++++++++++++++++++++++++++*****##########################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****************************************************************************************************************************************++++++++++++++++++++++++++++++++************+******%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##########################################################################################################################################################################################################****************************++++++++++++++++++++++++++++++++++++*******************************************************************************************************+*++++*##***####################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%***********************************************************************************************************************************************************************************************************************************+**###################################################################################################################################%%######################################**++++++++++++++++++++*****+++++++******++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***************++===================+++++++++++*******************************************************************##########################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#****#********************************************************************************************************************************************************************************************************************###############**********************************************+++==-------==++********************************************#############****************########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%################################################################################################%%@@@@@@@@@%#####################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#########################################################################################################################################################################################################################################################################################################################################################################################################################################################
*******************************************************************************************************########*########################################################*******************************************************************************************************************************************************************************###########################%%%@@@%@%%%#*************+++++++++++++++++++++++++++++++++++++++++++++*****##########################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******************************************************************************************************************************************+++++++++++++++++++++++++++************************@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###############################################################################################################%#########################################################################################***************************+++++++++++++++++++++++++++++++++************************************************************************************************************++**##*#*#####################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%**********************************************************************************************************************************************************************************************************************************+**####################################################################################################################################%%#####################################**+++++++++++++++++++++*****+++++++*****++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****************+==================+++++++++++********************************************************************#########################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#*#***********************************************************************************************************************************************************************************************************************##############************************************************++===------==++********************************************#############****************########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######################*#########################################################################%@@@@@@@@@%#####################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#########################################################################################################################################################################################################################################################################################################################################################################################################################################################
******************************************************************************************************##################################################################*******************************************************+*******************************************************************************************************************###############################%%%@@@%@%%%#**************++++++++++++++++++++++++++++++++++++++++++++*****##########################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%#++=+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****************************************************************************************************************************************++++++++++++++++++++++++++++******************+****%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%@@@@%%%%@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###########################################################################################################%%%###########################################################################################**************************+++++++++++++++++++++++++******************************************************************************************************************++*##**#*#######################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#********************************************************************************************************************************************************************************************************************************+**#####################################################################################################################################%%#####################################*++++++++++++++++++++++*****++++++******+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****************+=================+++++++++++*********************************************************************########################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#**#**********************************************************************************************************************************************************************************************************************##############************************************************+++===-----==++********************************************#############*****************#######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####################*#########################################################################%%@@@@@@@@%#####################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#########################################################################################################################################################################################################################################################################################################################################################################################################################################################
*****************************************************************************************************###################################################################**************************************************************************************************************************************************************************################################%%%@@%%@%%%#**************+++++++++++++++++++++++++++++++++++++++++++******##########################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#*++=++++++++++++++++++++++++++++++++++===+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******************************************************************************************************************************************++++++++++++++++++++++++++**+********************#%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##########################################################################################################%%%%%%##########################################################################################*************************+++++++++++++++++++++******************************************************************************************************************++*++*##*#**#*######################################################%%#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#**********************************************************************************************************************************************************************************************************************************######################################################################################################################################%%####################################*+++++++++++++++++++++++*****++++++******+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++************+++++++================+++++++++++*********************************************************************########################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#**#**********************************************************************************************************************************************************************************************************************##############*************************************************+++==-----==++********************************************#############*****************#######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##############*##########################################################################%@@@@@@@@%#####################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#########################################################################################################################################################################################################################################################################################################################################################################################################################################################
*****************************************************************************************************###################################################################**************************************************************************************************************************************************************************################################%%%@@%%@%%%#**************+++++++++++++++++++++++++++++++++++++++++++******##########################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#*++=+=++++++++++++++++++++++++============++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******************************************************************************************************************************************++++++++++++++++++++++++++**+*******************%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######################################################################################################%%%%%%%%%%#########################################################################################************************++++++++++++++++*********************************************************************************************************************+*++++*###**##*#######################################################%%#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*********************************************************************************************************************************************************************************************************************************#######################################################################################################################################%%###################################*++++++++++++++++++++++++*****++++++***#*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********+****+++++===============+++++++++++*********************************************************************########################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@##************************************************************************************************************************************************************************************************************************##############**************************************************++===----==++********************************************#############*****************#######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########################################################################################%@@@@@@@@%#####################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#########################################################################################################################################################################################################################################################################################################################################################################################################################################################
*****************************************************************************************************####################################################################***************************************************************+++********************************************************************************************************###############################%%%@@%@%%%%#**************+++++++++++++++++++++++++++++++++++++++++++*****###########################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#++++=++++++++++++++++++++++===============++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********************************************************************************************************************************************++++++++++++++++++++++*************************%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##################################################################################################%%%%%%%%%%%##########################################################################################***********************+++++++**************************************************************************************************************************+**++++++*##****###########################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#*******************************************************************************************************************************************************************************************************************************########################################################################################################################################%###################################*+++++++++++++++++++++++++*****+++++******+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**++++++********++=============+++++++++++**********************************************************************##################*####%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#************************************************************************************************************************************************************************************************************************#############***************************************************+++==---===++********************************************#############*****************########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###########**###**######################################################################%@@@@@@@%#####################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#########################################################################################################################################################################################################################################################################################################################################################################################################################################################
****************************************************************************************************#####################################################################**************************************************************************************************************************************************************************###############################%%%@@@@%%%%#**************++++++++++++++++++++++++++++++++++++++++++******###########################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#+++++++++++++++++++++++++++===============++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********************************************************************************************************************************************++++++++++++++++++++++*************************%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#################################################################################################%%%%%%%%%%%%%#########################################################################################**********************************************************************************************************************************************************++++++*##*****###########################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#*******************************************************************************************************************************************************************************************************************************########################################################################################################################################%##################################**+++++++++++++++++++++++++*****+++++******+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********+===========++++++++++++***********************************************************************#################*####%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#************************************************************************************************************************************************************************************************************************#############****************************************************++===--===++********************************************#############*****************########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##############****#####################################################################%%@@@@@@%#####################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#########################################################################################################################################################################################################################################################################################################################################################################################################################################################
****************************************************************************************************#####################################################################**************************************************************************************************************************************************************************###############################%%@@@@@%%%%#***************+++++++++++++++++++++++++++++++++++++++++******###########################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%*+++=++++++++++++++++++++++++==============++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********************************************************************************************************************************************++++++++++++++++++++++************************#%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##############################################################################################%%%%%%%%%%%%%%%##########################################################################################*****************************************************************************************************************************************************+++++++++*###***#############################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#**********************************************************************************************************************************************************************************************************************+*******#########################################################################################################################################%#################################**+++++++++++++++++++++++++++****++++******++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********+==========+++++++++++****************************************************************************#################%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#*#**********************************************************************************************************************************************************************************************************************#############****************************************************+++=======++********************************************#############*****************########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##############****#####################################################################%%@@@@@@%#####################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#########################################################################################################################################################################################################################################################################################################################################################################################################################################################
***************************************************************************************************######################################################################**************************************************************************************************************************************************************************###############################%%@@@@@%%%%#***************+++++++++++++++++++++++++++++++++++++++++*****############################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#+++=+=++++++++++++++++++++++=============+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********************************************************************************************************************************************+++++++++++++++++++++************************%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###########################################################################################%%%%%%%%%%%%%%%%###########################################################################################*************************************************************************************************************************************************++++++++++++###*#*###############################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#****************************************************************************************************************************************************************************************************************************#########################################################################################################################################%##################################*++++++++++++++++++++++++++++****++++******+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***********+========+++++++++++*********************************************************************************#########*##%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#************************************************************************************************************************************************************************************************************************#############*****************************************************+++======++********************************************#############*****************########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###########***********#################################################################%%@@@@@%#####################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#########################################################################################################################################################################################################################################################################################################################################################################################################################################################
***************************************************************************************************######################################################################**************************************************************************************************************************************************************************###############################%%@@@@@%%%%#****************++++++++++++++++++++++++++++++++++++++++*****############################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#*+===++++++++++++++++++++++++=========++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********************************************************************************************************************************************+++++++++++++++++++**************************%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######################################################################################%%%%%%%%%%%%%%%%%#############################################################################################*******************************************************************************************************************************************++++++++++++++*###*##################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#***************************************************************************************************************************************************************************************************************************##########################################################################################################################################%#################################*+++++++++++++++++++++++++++++****+++******++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***********+=======+++++++++++**************************************************************************************####*##%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%*************************************************************************************************************************************************************************************************************************############******************************************************++======++********************************************#############*****************########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#########*************################################################################%%@@@@@%#####################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#########################################################################################################################################################################################################################################################################################################################################################################################################################################################
***************************************************************************************************######################################################################**************************************************************************************************************************************************************************###############################%%@@@@@%%%%#*****************++++++++++++++++++++++++++++++++++++++*****#############################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%*+==++++++++++++++++++++++++++========++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********************************************************************************************************************************************+++++++++++++++++++*************************#%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###################################################################################%%%%%%%%%%%%%%%%%###############################################################################################*************************************************************************************************************************************+++++++++++++++++++*##*####################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#*************************************************************************************************************************************************************************************************************************#############################################################################################################################################################################*+++++++++++++++++++++++++++++****+++******++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***********++=====+++++++++*****************************************************************************************##*###%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#************************************************************************************************************************************************************************************************************************############******************************************************+++=====++********************************************#############*****************########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########****************###############################################################%%@@@@@%####################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#########################################################################################################################################################################################################################################################################################################################################################################################################################################################
**************************************************************************************************#######################################################################**************************************************************************************************************************************************************************##############################%%@@@@@@%%%%#******************+++++++++++++++++++++++++++++++++++++*****#############################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#*+=+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********************************************************************************************************************************************+++++++++++++++++++*************************%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#############################################################################%%%%%%%%%%%%%%%%%%################################################################################################****************************************************************************************************************************++***+++++++++++++++++++++*###*#*##################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#************************************************************************************************************************************************************************************************************************#############################################################################################################################################################################**+++++++++++++++++++++++++++++****++*******+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++************+==+++++++++++*****************************************************************************************##*###%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#************************************************************************************************************************************************************************************************************************############*******************************************************+++====++********************************************#############*****************########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########****************##############################################################%%@@@%@%####################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#########################################################################################################################################################################################################################################################################################################################################################################################################################################################
**************************************************************************************************#######################################################################**************************************************************************************************************************************************************************##############################%%@@@@@@%%%%#******************+++++++++++++++++++++++++++++++++++++*****#############################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%*+=+=++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++************************************************************************************************************************************************++++++++**++++++++************************#%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###########################################################################%%%%%%%%%%%%%%%%%%##################################################################################################*********************************************************************************************************************++++++**+++++++++++++++++++++++*###*#*#*##################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#***********************************************************************************************************************************************************************************************************************#############################################################################################################################################################################*++++++++++++++++++++++++++++++****++******+++++*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********#**++++++++++++*****************************************************************************************#**###%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#************************************************************************************************************************************************************************************************************************############*******************************************************+++====++*********************************************############*****************########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########*****************##############################################################%%@@%@%####################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#########################################################################################################################################################################################################################################################################################################################################################################################################################################################
**************************************************************************************************#######################################################################**************************************************************************************************************************************************************************##############################%%%@@@@@@%%%#*********************+++++++++++++++++++++++++++++++++******#############################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%#++=+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***********************************************************************************************************************************************+++++++++++++++**************************%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######################################################################%%%%%%%%%%%%%%%%%%%####################################################################################################***************************************************************************************************************++++++++++++++++++++++++++++++++++*####*######################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#**********************************************************************************************************************************************************************************************************************##############################################################################################################################################################################*++++++++++++++++++++++++++++++****+*******++++*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********#*##*+++++++++++*****************************************************************************************#*#*##%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#************************************************************************************************************************************************************************************************************************############********************************************************+++===++********************************************#############*****************#######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########*******************############################################################%%@%@%%####################################################################################################################################################################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%########################################################################################################################################################################################################################################################################################################################################################################################################################################################
**************************************************************************************************#######################################################################***************************************************************************************************************************************************************************#############################%%@@@@@@@%%%#******************++++++++++++++++++++++++++++++++++++******#############################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%*+=+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***********************************************************************************************************************************************+++++++++++++++**************************%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####################################################################%%%%%%%%%%%%%%%%%%%%#####################################################################################################********************************************************************************************************+++++++++++++++++++++++++++++++++++++++*#####*######################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#********************************************************************************************************************************************************************************************************************##############################################################################################################################################################################*+++++++++++++++++++++++++++++++************+++**++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********####*++++++++***********************************************************************************************#%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#************************************************************************************************************************************************************************************************************************############********************************************************++++=+++********************************************##############***************########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########********************############################################################%%%@%%####################################################################################################################################################################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%########################################################################################################################################################################################################################################################################################################################################################################################################################################################
**************************************************************************************************#######################################################################***************************************************************************************************************************************************************************#############################%%@@@@@@@%%%#******************++++++++++++++++++++++++++++++++++++******#############################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%#++=++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***********************************************************************************************************************************************+++++++++++++++**********************+**#%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###############################################################%%%%%%%%%%%%%%%%%%%%########################################################################################################*******************************************************+************************************+++++++++++++++++++++++++++++++++++++++++++++++**#####*########################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#*******************************************************************************************************************************************************************************************************************###############################################################################################################################################################################*+++++++++++++++++++++++++++++++***********++++*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******##*###*++++++++**********************************************************************************************#%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%************************************************************************************************************************************************************************************************************************############*********************************************************+++++++********************************************##############***************########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######*********************###########################################################%%@%%%####################################################################################################################################################################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%########################################################################################################################################################################################################################################################################################################################################################################################################################################################
*************************************************************************************************########################################################################***************************************************************************************************************************************************************************#############################%%@@@@@@@%%%#******************+++++++++++++++++++++++++++++++++++******##############################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***********************************************************************************************************************************************+++++++++++++++**********************+**%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##########################################################%%%%%%%%%%%%%%%%%%%%%%##########################################################################################################***********************++++*++**********************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**###############################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%***************************************************************************************************************************************************************************************************************+*#################################################################################################################################################################################*+++++++++++++++++++++++++++++++***********+++**+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****########**++++++**********************************************************************************************#%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%************************************************************************************************************************************************************************************************************************############*********************************************************+++++++*********************************************#############***************#########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######**********************###########################################################%@%%%####################################################################################################################################################################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%########################################################################################################################################################################################################################################################################################################################################################################################################################################################
*************************************************************************************************########################################################################***************************************************************************************************************************************************************************#############################%%@@@@@@@%%%#******************+++++++++++++++++++++++++++++++++++******##############################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++************************************************************************************************************************************************++++++++++++++***********************+*%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###################################################%%%%%%%%%%%%%%%%%%%%%%%#############################################################################################################*********************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**#################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#***************************************************************************************************************************************************************************************************************#################################################################################################################################################################################*++++++++++++++++++++++++++++++++**********+++**++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****#########*++++***********************************************************************************************#%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#***********************************************************************************************************************************************************************************************************************############**********************************************************++++++*********************************************#############***************###########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######***********************##########################################################%%@%%####################################################################################################################################################################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#######################################################################################################################################################################################################################################################################################################################################################################################################################################################
*************************************************************************************************########################################################################***************************************************************************************************************************************************************************#############################%@@@@@@@@%%%#******************+++++++++++++++++++++++++++++++++++******##############################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#+=++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++************************************************************************************************************************************************++++++++++++++******************+*****#%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%################################################%%%%%%%%%%%%%%%%%%%%%%%%################################################################################################################********************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**#########*####*####################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%**************************************************************************************************************************************************************************************************************##################################################################################################################################################################################*++++++++++++++++++++++++++++++++**###*****+++**++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**############*+++***********************************************************************************************#%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#***********************************************************************************************************************************************************************************************************************############***********************************************************++++**********************************************##############**************############%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######***********************###########################################################%%%%####################################################################################################################################################################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#######################################################################################################################################################################################################################################################################################################################################################################################################################################################
*************************************************************************************************########################################################################***************************************************************************************************************************************************************************#############################%@@@@@@@@%%%#**********************++++++++++++++++++++++++++++++*******##############################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++************************************************************************************************************************************************++++++++++++++************************%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#############################################%%%%%%%%%%%%%%%%%%%%%%%%%#################################################################################################################********************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**######*#############################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#***********************************************************************************************************************************************************************************************************###################################################################################################################################################################################*+++++++++++++++++++++++++++++++++**##*****+++**++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******+++*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**#*###########*+*********************************************************************************************#*#%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#***********************************************************************************************************************************************************************************************************************############***********************************************************+++***********************************************##############*************#############%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######************************##########################################################%%%%####################################################################################################################################################################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#######################################################################################################################################################################################################################################################################################################################################################################################################################################################
************************************************************************************************#########################################################################***************************************************************************************************************************************************************************#############################%@@@@@@@@%%%#***********************+++++++++++++++++++++++++++++*******##############################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++************************************************************************************************************************************************++++++++++++++************************%%%%@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%############################################%%%%%%%%%%%%%%%%%%%%%%%%%%##################################################################################################################*********************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**######*#############################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#*********************************************************************************************************************************************************************************************************#####################################################################################################################################################################################*+++++++++********++++++++++++++++**##*****+++**+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**#############*+******************************************************************************************#*#*#%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#***********************************************************************************************************************************************************************************************************************############*************************************************************************************************************##############*************##############%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######*************************##########################################################%%%####################################################################################################################################################################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#######################################################################################################################################################################################################################################################################################################################################################################################################################################################
************************************************************************************************#########################################################################***************************************************************************************************************************************************************************#############################%@@@@@@@@%%%#**********************++++++++++++++++++++++++++++++*******##############################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********************************************************************************************************************************************+++++++++++++++++****************+****#%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########################################%%%%%%%%%%%%%%%%%%%%%%%%%%#####################################################################################################################********************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**#####################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%********************************************************************************************************************************************************************************************************######################################################################################################################################################################################*++++++*************++++++++++++++*###****++++#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**#############***********************************************************************************************#%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#***##*****************************************************************************************************************************************************************************************************************###########***************************************************************************************************************#############************#############################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######***********************############################################################%%%####################################################################################################################################################################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#######################################################################################################################################################################################################################################################################################################################################################################################################################################################
************************************************************************************************#########################################################################***************************************************************************************************************************************************************************#############################%%@@@@@@@%%%#**********************++++++++++++++++++++++++++++++*******##############################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********************************************************************************************************************************************++++++++++++++++*******************+**%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###%##################################%%%%%%%%%%%%%%%%%%%%%%%%%%%######################################################################################################################***********++++++****++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**######################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#*****************************************************************************************************************************************************************************************************#######################################################################################################################################################################################*++++++***************+++++++++++++*###****+++**+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**#############***********************************************************************************************%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#***#******************************************************************************************************************************************************************************************************************###########***************************************************************************************************************##############***********#############################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######************************#########*##################################################%%####################################################################################################################################################################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#######################################################################################################################################################################################################################################################################################################################################################################################################################################################
************************************************************************************************#########################################################################***************************************************************************************************************************************************************************#############################%%@@@@@@@%%%#**********************++++++++++++++++++++++++++++++*******##############################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********************************************************************************************************************************************+++++++++++++++*******************+***%%%%@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%########################################################################################################################*********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**#######*###############################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#***************************************************************************************************************************************************************************************************#########################################################################################################################################################################################*+++++******************++++++++++**###***++++#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**#************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**##############**********************************************************************************************#%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%###*#******************************************************************************************************************************************************************************************************************###########***************************************************************************************************************##############**********###############################%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######*************************########********###########################################%%%###################################################################################################################################################################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#######################################################################################################################################################################################################################################################################################################################################################################################################################################################
***********************************************************************************************##########################################################################***************************************************************************************************************************************************************************#############################%%@@@@@@@%%%#**********************+++++++++++++++++++++++++++++++*******#############################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******************************************************************************************************************************************+++++++++++++++*******************+**#%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###########################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##########################################################################################################################******++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**#######*#################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*************************************************************************************************************************************************************************************************########################################################################################################################################################################################*#*+++++********####*******++++++++++*####***+++**+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**############%#*********************************************************************************************#%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#####******************************************************************************************************************************************************************************************************************##########****************************************************************************************************************##############**********###################%%%%%%%%####%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######*************************########********###########################################%%%###################################################################################################################################################################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#######################################################################################################################################################################################################################################################################################################################################################################################################################################################
***********************************************************************************************##########################################################################**********************************************************************************************##***************************************************************************#############################%%@@@@@@@@%%%**********************+++++++++++++++++++++++++++++++*******#############################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******************************************************************************************************************************************++++++++++++++***********************%%%%@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#########################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###########################################################################################################################*****++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**#######*###################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#**********************************************************************************************************************************************************************************************############################################################################################################################################################################################*++++*****###########*****+++++++++*####**++++**+++++++++++++++++++++++++++++++++++++++++++++++++++++++++**##******************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**############%#********************************************************************************************#%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@####********************************************************************************************************************************************************************************************************************########*****************************************************************************************************************###############********####################%%%%%%%%####%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######****************************##***********############################################%%###################################################################################################################################################################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#######################################################################################################################################################################################################################################################################################################################################################################################################################################################
***********************************************************************************************##########################################################################**********************************************************************************************###**************************************************************************#############################%%@@@@@@@@%%%**********************+++++++++++++++++++++++++++++++*******#############################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******************************************************************************************************************************************++++++++++++++*********************+#%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###########################################################################################################################****++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**##############################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#********************************************************************************************************************************************************************************************###########################################################################################################################################################################################*#**++++****#############*****+++++++**####**+++*#+++++++++++++++++++++++++++++++++++++++++++++++++++++++++**##*********************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**############%%#***************************************************************************************#***#%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@###*********************************************************************************************************************************************************************************************************************#######******************************************************************************************************************###############********#################################%%%%%%%%%%%%%%%%%%%%%%%%%%%#######*******************************************##########################################%%###################################################################################################################################################################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#######################################################################################################################################################################################################################################################################################################################################################################################################################################################
**********************************************************************************************###########################################################################**********************************************************************************************###**************************************************************************#############################%%@@@@@@@@%%%**********************+++++++++++++++++++++++++++++++********############################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****************************************************************************************************************************************++++++++++++++*********************+#%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##%#################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%############################################################################################################################****++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**###############################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%******************************************************************************************************************************************************************************************#############################################################################################################################################################################################***++++***################****++++++***####*++++**+++++++++++++++++++++++++++++++++++++++++++++++++++++++**##************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***##########%#%%#**************************************************************************************#***#%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%##*********************************************************************************************************************************************************************************************************************######*******************************************************************************************************************################******##################################%%%%%%%%%%%%%%%%%%%%%%%%%%%#######********************************************#####****#################################%###################################################################################################################################################################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#######################################################################################################################################################################################################################################################################################################################################################################################################################################################
**********************************************************************************************###########################################################################*********************************************************************************************#####*************************************************************************#############################%%@@@@@@@@%%%**********************++++++++++++++++++++++++++++++++********###########################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****************************************************************************************************************************************++++++++++++++********************+*%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##%%%##############%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%############################################################################################################################***++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**#################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#***************************************************************************************************************************************************************************************##############################################################################################################################################################################################****++++**####################**+++++***####*++++*+++++++++++++++++++++++++++++++++++++++++++++++++++++++*##**************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**###########%##%#******************************************************************************************%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%##*********************************************************************************************************************************************************************************************************************#####********************************************************************************************************************#################****####################################%%%%%%%%%%%%%%%%%%%%%%%%%%#######*********************************************####*****################################%###################################################################################################################################################################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#######################################################################################################################################################################################################################################################################################################################################################################################################################################################
**********************************************************************************************###########################################################################*********************************************************************************************#####*************************************************************************#############################%%@@@@@@@@%%%************************++++++++++++++++++++++++++++++********###########################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****************************************************************************************************************************************++++++++++++*********************+#%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#############################################################################################################################**++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**###################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#************************************************************************************************************************************************************************************#################################################################################################################################################################################################***++++**#####################**++++****###*++++**+++++++++++++++++++++++++++++++++++++++++++++++++++++**##****************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****##########%#%#%%#*****************************************************************************************#%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%##**********************************************************************************************************************************************************************************************************************##***********************************************************************************************************************###############################################################%%%%%%%%%%%%%%%%%%%#######*******************************************************####################################################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#################################################################################################################################################################################################################################################################################################################################%%%%##################################################################################################################
**********************************************************************************************###########################################################################*********************************************************************************************#####*************************************************************************#############################%%@@@@@@@@%%%*************************++++++++++++++++++++++++++++++********##########################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****************************************************************************************************************************************++++++++++++**********************#%%%#%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@%@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###########################################################################################################################*#**+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**####################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#**********************************************************************************************************************************************************************************#################################################################################################################################################################################################*****++++**#####################**+++*****###*++++**+++++++++++++++++++++++++++++++++++++++++++++++++++**##******************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****###########%%%%%#****************************************************************************************#%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%##***********************************************************************************************************************************************************************************************************************************************************************************************************************************************#################################################################%%%%%%%%%%%%%%%%%#######*********************************************************##################################################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%##################################################################################################################################################################################################################################################################################################################################%%###################################################################################################################
**********************************************************************************************############################################################################********************************************************************************************######*************************************************************************############################%%@@@@@@@%%%%**************************+++++++++++++++++++++++++++++*********#########################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******************************************************************************************************************************************++++++++++++**********************%%%*#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###########################################################################################################################***+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**######################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%********************************************************************************************************************************************************************************###################################################################################################################################################################################################****++++**#######################**++*****###*+++**+++++++++++++++++++++++++++++++++++++++++++++++++++**##*******************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****#########%#%%#%%%#***************************************************************************************#%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%##***********************************************************************************************************************************************************************************************************************************************************************************************************************************************####################################################################%%%%%%%%%%%%#########*********************************************************##################################################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#######################################################################################################################################################################################################################################################################################################################################################################################################################################################
**********************************************************************************************############################################################################********************************************************************************************######*************************************************************************########################**##%%@@@@@@@%%%%#**************************+++++++++++++++++++++++++++++*********########################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******************************************************************************************************************************************++++++++++++**********************%#**%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%############################################################################################################################*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*########################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#****************************************************************************************************************************************************************************#####################################################################################################################################################################################################*****++++**#######################*********##**+++**+++++++++++++++++++++++++++++++++++++++++++++++++**###********************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******#######%#%#%%%%%%%#**************************************************************************************#%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%##***********************************************************************************************************************************************************************************************************************************************************************************************************************************************#########################################################################%%##############*********************************************************##################################################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#######################################################################################################################################################################################################################################################################################################################################################################################################################################################
*********************************************************************************************#############################################################################********************************************************************************************######*************************************************************************########################**##%%%@@@@@@%%%%#***************************+++++++++++++++++++++++++++***********#######################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******************************************************************************************************************************************++++++++++++*********************#%*+%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######################################################################################################################*##**++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#########################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#**************************************************************************************************************************************************************************######################################################################################################################################################################################################*****++++**#########################********##**++**++++++++++++++++++++++++++++++++++++++++++++++++**###**********************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******######%#%%%%%%%%%%**************************************************************************************#%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@##***********************************************************************************************************************************************************************************************************************************************************************************************************************************************#########################################################################################************************************************************###############################################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#######################################################################################################################################################################################################################################################################################################################################################################################################################################################
*********************************************************************************************#############################################################################*******************************************************************************************#######*************************************************************************######################*****#%%%@@@@@@%%%%#***************************+++++++++++++++++++++++++++************######################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******************************************************************************************************************************************++++++++++++*********************#***@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##########################################################################################################################**+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**##########################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#***********************************************************************************************************************************************************************#######################################################################################################################################################################################################******++++**#########################************++**++++++++++++++++++++++++++++++++++++++++++++++***###***********************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******#########%%%%%%%%%#*************************************************************************************##%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#***********************************************************************************************************************************************************************************************************************************************************************************************************************************************#########################################################################################**************************************************************###**########################################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#######################################################################################################################################################################################################################################################################################################################################################################################################################################################
*********************************************************************************************#############################################################################*******************************************************************************************########*********************************************++++++++++*****************#####################******#%%%@@@@@@%%%%#****************************+++++++++++++++++++++++++++++**********#####################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******************************************************************************************************************************************++++++++++++***********************+%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########################################################################################################################***++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*###########################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#*********************************************************************************************************************************************************************########################################################################################################################################################################################################******++++***##########################***********+**++++++++++++++++++++++++++++++++++++++++++++++**####***********************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********#######%#%%%%%%%%%%#*************************************************************************************#%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#***********************************************************************************************************************************************************************************************************************************************************************************************************************************************#########################################################################################*********************************************************************######################################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#######################################################################################################################################################################################################################################################################################################################################################################################################################################################
*********************************************************************************************#############################################################################*******************************************************************************************########**********************************************+++++++++++***+***********####################*******#%%%@@@@@@%%%%#****************************++++++++++++++++++++++++++++++*********#####################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******************************************************************************************************************************************++++++++++++**********************+*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######################################################################################################################***+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*###########################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#******************************************************************************************************************************************************************#########################################################################################################################################################################################################*******++++**############################**********+**++++++++++++++++++++++++++++++++++++++++++++**#####************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********###%##%%%%%%%%%%%%%#************************************************************************************#%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#************************************************************************************************************************************************************************************************************************************************************************************************************************************************########################################################################################***********************************************************************####################################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#######################################################################################################################################################################################################################################################################################################################################################################################################################################################
********************************************************************************************##############################################################################*******************************************************************************************########**************#****************************++++++++++++++++++++++*******##################*********#%%%@@@@@@@%%%#***************************++++++++++++++++++++++++++++++++********######################@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******************************************************************************************************************************************++++++++++**************+**+*******%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##################################################################################################################**********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#############################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#****************************************************************************************************************************************************************##########################################################################################################################################################################################################*******+++++*#############################************++++++++++++++++++++++++++++++++++++++++++***######************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********####%%%%%%%%%%%%%%%#************************************************************************************#%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#************************************************************************************************************************************************************************************************************************************************************************************************************************************************#######################################################################################**************************************************************************##################################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#######################################################################################################################################################################################################################################################################################################################################################################################################################################################
********************************************************************************************##############################################################################*******************************************************************************************#########*************#****************************++++++++++++++++++++++*******##################*********%%%%@@@@@@@%%%#******************++++++***+++++++++++++++++++++++++++++++++*******######################@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******************************************************************************************************************************************+++++++++**************************@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%############################################################################################################******+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*##############################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##************************************************************************************************************************************************************############################################################################################################################################################################################################********++++**#############################*****++*****++++++++++++++++++++++++++++++++++++++++**#######**************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********####%#%%%%%%%%%%%%%%#************************************************************************************%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#************************************************************************************************************************************************************************************************************************************************************************************************************************************************########################################################################################*************************************************************************##################################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#######################################################################################################################################################################################################################################################################################################################################################################################################################################################
********************************************************************************************##############################################################################*******************************************************************************************#########************##****************************+++++++++++++++++++++++******#################**********%%%%@@@@@@@%%%#***************++++++++++**++++++++++++++++++++++*+++++++++++******######################@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******************************************************************************************************************************************+++++++**************************#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#########################################################################################################******++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*###############################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#*********************************************************************************************************************************************************##############################################################################################################################################################################################################********+++++**#############################****+++*****+++++++++++++++++++++++++++++++++++++++**########*************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++************###%#%%%%%%%%%%%%%%%************************************************************************************#%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#*************************************************************************************************************************************************************************************************************************************************************************************************************************************************#######################################################################################***************************************************************************################################################################################################################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#######################################################################################################################################################################################################################################################################################################################################################################################################################################################
********************************************************************************************##############################################################################*******************************************************************************************##########********#####****************************++++++++++++++++++++++++*****#################******+++*%%%%@@@@@@@%%%#**************+++++++++++++++++++++++++++++++++++**++++++++++++*****#####################@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********************************************************************************************************************************************++++++**************************%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########################################################################################################******+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#*******************************************************************************************************************************************************###############################################################################################################################################################################################################*********++++**##############################****+++*##*++++++++++++++++++++++++++++++++++++++**##########************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++************###%#%%%%%%%%%%%%%%%#***********************************************************************************#%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#*************************************************************************************************************************************************************************************************************************************************************************************************************************************************#######################################################################################****************************************************************************###############################################################################################################################################################################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%####################################%%%%%##############################################################################################################################################################################################################################################################################################################################################################################################################
*******************************************************************************************###############################################################################*******************************************************************************************##########********#####***************************+++++++++++++++++++++++++******################*****++++*%%%%@@@@@@@%%%#*************++++++++++++++++++++++++++++++++++++++++++++++++++******####################@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********************************************************************************************************************************************+++******************+********#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######################################################################################################*******+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*##################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#****************************************************************************************************************************************************#################################################################################################################################################################################################################********+++++**##############################***++++*##*++++++++++++++++++++++++++++++++++++***##########*************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++************###%#%%%%%%%%%%%%%%%%#***********************************************************************************%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#************************************************************************************************************************************************************************************+++++++++++++++++++++*****************************************************************************************************************************************######################################################################################****************************************************************************###############################################################################################################################################################################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%###################################%%%%%%##############################################################################################################################################################################################################################################################################################################################################################################################################
*******************************************************************************************###############################################################################*******************************************************************************************###########******######***************************+++++++++++++++++++++++++******###############******++++*%%%@@@@@@@@%%%#*************+++++++++++++++++++++++++++++++++++++++++++++++++++*****####################@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*************************************************************************************************************************************************************************+*%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####################################################################################################******+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++####################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#**************************************************************************************************************************************************##################################################################################################################################################################################################################********++++++**###############################*+++++*##*+++++++++++++++++++++++++++++++++++**###########*************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*************##%##%%%%%%%%%%%%%%%%%***********************************************************************************#%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@##*********************************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++**************************************************************************************************************************************#####################################################################################*****************************************************************************##################################################################%%%%%%%%%%%%%################################################################################################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%###################################%%%%%%%#############################################################################################################################################################################################################################################################################################################################################################################################################
*******************************************************************************************###############################################################################******************************************************************************************########################***************************++++++++++++++++++++++++++*****###############******++++*%%%@@@@@@@@%%%#*************+++++++++++++++++++++++++++++++++++++++++++++++++++******###################@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**************************************************************************************************************************************************************************%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###################################################################################################********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*####################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#****************#*******************************************************************************************************************************###################################################################################################################################################################################################################*********+++++***###############################*++++**##+++++++++++++++++++++++++++++++++***############************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**************#%#%%%%%%%%%%%%%%%%#%#**********************************************************************************#%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#***************************************************************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++*************************************************************************************************++***********************************####################################################################################******************************************************************************###############################################################%%%%%%%%%%%%%%%%%###############################################################################################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%###################################%%%%%%%#############################################################################################################################################################################################################################################################################################################################################################################################################
*******************************************************************************************###############################################################################******************************************************************************************########################***************************++++++++++++++++++++++++++*****###############*****+++++#%%%@@@@@@@@%%%#*************+++++++++++++++++++++++++++++++++++++++++++++++++++*******##################@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***********************************************************************************************************************************************************************+**@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##################################################################################################*******++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*######################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#***********####%###**************************************************************************************************************************######################################################################################################################################################################################################################********++++++***##############################**++++*##*++++++++++++++++++++++++++++++++***############*************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***************#%#%#%%%%%%%%%%#%%#%%%**********************************************************************************#%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#***********************************************************************************************************************************************+***********+++++++++++++++++++++++++++++++++++++++++++++++++************************************************************************************************+++++++++*****************************####################################################################################*******************************************************************************#############################################################%%%%%%%%%%%%%%%%%%%##############################################################################################################%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%###################################%%%%%%%#################%#######################################%###################################################################################################################################################################################################################################################################################################################################################
*******************************************************************************************###############################################################################******************************************************************************************########################****************************+++++++++++++++++++++++++*****###############*****+++++#%%%@@@@@@@@%%%***********+++++++++++++++++++++++++++++++++++++++++++++++++++++++*******#################@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*************************************************************************************************************************************************++*****************+*****%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###################################################################################################********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#############################%%###########################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#**********######***************************************************************************************************************************#######################################################################################################################################################################################################################**#*****+++++++**###############################*+++++*##*+++++++++++++++++++++++++++++++**#############*************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***************#%##%%%%%%%%%%%%%%%%%%#*********************************************************************************#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#*******************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********************************************************************************************++++++++++++++++************************##############################*******##############################################**********************************************************************************########################################################%%%%%%%%%%%%%%%%%%%%%%#############################################################################################################%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%###################################%%%%%%%%%################################################################################################################################################################################################################################################################################%%%%%%%%%%%%%##############################################################################################################
*******************************************************************************************###############################################################################******************************************************************************************########################****************************+++++++++++++++++++++++++*****###############*****+++++#%%%@@@@@@@@%%%**********++++++++++++++++++++++++++++++++++++++++++++++++++++++++********################@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**************************************************************************************************************************************************+*******************+*+#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#################################################################################################********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#############################%%%%%########################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#*****************************************************************************************************************************************#######################################################################################################################################################################################################################*********+++++++**################################*+++++*##*++++++++++++++++++++++++++++++**#############*************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****************#%#%%%%%%%%%%%%%%%%%%%#********************************************************************************%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#*****************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********************************************************************************************++++++++++++++++++++++********+**********###########################******************######################################**********************************************************************************########################################################%%%%%%%%%%%%%%%%%%%%%%%############################################################################################################%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%####################################%%%%%%%%%################################################################################################################################################################################################################################################################################%%%%%%%%%%%%%##############################################################################################################
*******************************************************************************************###############################################################################******************************************************************************************#######################*****************************+++++++++++++++++++++++++******##############*****+++++#%%%@@@@@@@@%%%**********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******################@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******************************************************************************************************************************************************************+*****%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%################################################################################################********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#############################%%%%%#%%%%%###################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#**************************************************************************************************************************************##########################################################################################################################################################################################################################*********+++++++**################################*++++*###*++++++++++++++++++++++++++++***#############**************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****************#%#%%%%%%%%%%%%%%%%%%%#*******************************************************************************#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#****************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******************************************************************************************+++++++++++++++++++++++++++++++++++********#########################********************#####################################**********************************************************************************#######################################################%%%%%%%%%%%%%%%%%%%%%%%%%###########################################################################################################%%%%@@@@@@@@@@@@@@@@@@@@@@@@@%%%%####################################%%%%%%%%%################################################################################################################################################################################################################################################################################%%%%%%%%%%%%%##############################################################################################################
*******************************************************************************************################################################################################*****************************************************************************************#######################*****************************+++++++++++++++++++++++++******#############******+++++#%%%@@@@@@@@%%%********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********##############@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******************************************************************************************************************************************************************+**+#@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%############################################################################################**********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#%#########%%%%%%%%###%%%%%%%%%%%%%%%%%%%%%%%%%%%%#########################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#************************************************************************************************************************************####%######################################################################################################################################################################################################################*#*******++++++++**################################*++++*###*+++++++++++++++++++++++++++**###############*************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****************#%###%%%%%%%%%%%%%%%%%%#******************************************************************************%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#****************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******************************************************************************************++++++++++++++++++++++++++++++++++++*******#######################***********************####################################************************************************************************************####################################################%%%%%%%%%%%%%%%%%%%%%%%%%%############################################################################################################%%%%@@@@@@@@@@@@@@@@@@@@@@@@%%%#####################################%%%%%%%%%%###############################################################################################################################################################################################################################################################################%%%%%%%%%%%%%##############################################################################################################
*******************************************************************************************################################################################################****************************************************************************************########################******************************++++++++++++++++++++++++******#############******+++++#%%%@@@@@@@@%%%********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********##############@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***********************************************************************************************************************************************************************%@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########################################################################################**********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*###########%%%%%%%%%%%%##%%%%%%%%%%%%%%%%%%%%%%%%%%%##########################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##**********************************************************************************************************************************###%########################################################################################################################################################################################################################**#******+++++++++*#################################*+++***##*+++++++++++++++++++++++++**#################*************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****************#####%%%%%%%%%%%%%%%%%%#*****************************************************************************#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#***************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****************************************************************************************+++++++++++++++++++++++++++++++++++++++******###################**************************####################################************************************************************************************###################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%############################################################################################################%%%%@@@@@@@@@@@@@@@@@@@@@@@%%%#####################################%%%%%%%%%%###############################################################################################################################################################################################################################################################################%%%%%%%%%%%%%##############################################################################################################
*******************************************************************************************################################################################################****************************************************************************************#######################*********************************++++++++++++++++++++++*******###########******++++++#%%%@@@@@@@@%%%*+*****+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********#############@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*++++++++++++++++++++++++++++++++++++********************************************************************************************************************************************************************%@@@@@@%#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######################################################################################************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*###########%%%%%%%%%%%%%%%##%%%%%%%%%%%%%%%%%%%%%%%%###########################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##********************************************************************************************************************************##%###########################################################################################################################################################################################################################*********++++++++**#################################**++****#*++++++++++++++++++++++++**##################************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****************####%%%%%%%%%%%%%%%%%%%#****************************************************************************%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#**************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****************************************************************************************+++++++++++++++++++++++++++++++++++++++++*****################*****************************##################################**************************************************************************************##################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%############################################################################################################%%%%%@@@@@@@@@@@@@@@@@@@@@%%%%#####################################%%%%%%%%%%%##############################################################################################################################################################################################################################################################################%%%%%%%%%%%%%##############################################################################################################
*******************************************************************************************################################################################################****************************************************************************************#######################*********************************+++++++++++++++++++++++******###########******++++++#%%%@@@@@@@@%%%*++***+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********#############@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********+++++++++++++++++++++++++++++*******************************************************************************************************************************************************************#%@@@@@@#*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%################################################################################****************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*###%########%%%%%%%%%%%%%%%%%%%#####%%%%%%%%%%%%%%%%%%###########################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#******************************************************************************************************************************##########################%%%##################################################################################################################################################################################################*********+++++++++**##################################*+*****#*+++++++++++++++++++++++**###################************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****************#####%%%%%%%%%%%%%%%%%%#***************************************************************************#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#*************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****************************************************************************************************+++++++++++++++++++++++++*****##############*******************************##################################****************************************************************************************###############################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%############################################################################################################%%%%%@@@@@@@@@@@@@@@@@@%%%%%#######################################%%%%%%%%%%##############################################################################################################################################################################################################################################################################%%%%%%%%%%%%%##############################################################################################################
*******************************************************************************************################################################################################****************************************************************************************#######################*********************************+++++++++++++++++++++++******##########*******++++++#%%%@@@@@@@@%%%*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***********#############@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********+++++++++++++++++++++++++++++*****************************************************************************************************************************************************************+*%@@@@@@@#*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%################################################################################****************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*###%##########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##########################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#***************************************************************************************************************************#############################%%%%################################################################################################################################################################################################*********++++++++++**##################################*+*****#*+++++++++++++++++++++**#####################***********************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****************#####%%%%%%%%%%%%%%%%%%#***************************************************************************%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#*************************************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********************************************************************************++++++******#############**********+++******************##################################*****************************************************************************************##############################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%############################################################################################################%%%%%%%@@@@@@@@@@@@@@@@%%%%########################################%%%%%%%%%%##############################################################################################################################################################################################################################################################################%%%%%%%%%%%%%##############################################################################################################
*******************************************************************************************#################################################################################***************************************************************************************######################***********************************++++++++++++++++++++++********######********+++++++#%%@@@@@@@@@%%%*******+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***********#############@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***************+++++++++++++++++++++++******************************************************************************************************************************************************************+#@@@@@@@%**@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@@@@@%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%################################################################################**************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++###%##########%%#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#*************************************************************************************************************************##%%#############################%%%%%############################################################################################################################################################################################*********++++++++++**###################################*****+***++++++++++++++++++++**######################**********************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****************#####%%%%%%%%%%%%%%%%%%#*************************************************************************#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#*********************+++++++++++******************************++++++*****************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******************************************++++*******************************************#########*********+++++++++++++***********##################################*****************************************************************************************#############################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##############################################################################################################%%%%%%@@@@@@@@@@@@@@%%%%##########################################%%%%%%%%%%%###########################################################################################################################################################################################################################################################################%%%%%%%%%%%%%%##############################################################################################################
*******************************************************************************************#################################################################################***************************************************************************************######################***********************************+++++++++++++++++++++++*********************+++++++#%%@@@@@@@@@%%%*******++++++++++++++++++++++++++++++++++++++++++++++++++++++++++************#############@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***************+++++++++++++++++++++++*******************************************************************************************************************************************************************%@@@@@@@#+#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%################################################################################*************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*##%%#############%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##*********************************************************************************************************************####%##################################%%%%##########################################################################################################################################################################################**#******++++++++++**###################################*****+***+++++++++++++++++++**######################***********************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**************#####%%%%%%%%%%%%%%%%%#*************************************************************************#%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#*******************++++++++++++++++++++++++++++++++++++++++++++++++++***************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****************************++***********+++++++++++++************************************++++++++++++++++++*********#################################*****************************************************************************************#############################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##############################################################################################################%%%%%%%%@@@@@@@@@@@%%%%###########################################%%%%%%%%%%%###########################################################################################################################################################################################################################################################################%%%%%%%%%%%%%%##############################################################################################################
*******************************************************************************************#################################################################################***************************************************************************************######################***********************************++++++++++++++++++++++++********************++++++*#%%@@@@@@@@@%%%*******+++++++++++++++++++++++++++++++++++***********************************#############@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++************************++++++++++++++******************************************************************************************************************************************************************+#@@@@@@@%**%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###############################################################################*************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++###%##############%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###############################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##*******************************************************************************************************************#####%####################################%%%%%#######################################################################################################################################################################################*********+++++++++++**####################################***++***+++++++++++++++++***#####################*************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++************######%%%%%%%%%%%%%#%##*************************************************************************#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#*****************+++++++++++++++++++++++++++++++++++++++++++++++++++++*************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******++++**++++++++++++++++++++++++++++++++++********************++++++++++++++++++++++++******################################*******************************************************************************************#*##########################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%################################################################################################################%%%%%%%%@@@@@@@@%%%%############################################%%%%%%%%%%%#############################################%%%%##########################################################################################################################################################################################################################%%%%%%%%%%%%%%##############################################################################################################
********************************************************************************************################################################################################***************************************************************************************######################***********************************+++++++++++++++++++++++++*****************++++++++*%%%@@@@@@@@@%%%#******++++++++++++++++++++++++++++++*****************************************############@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++************************++++++++++++++*******************************************************************************************************************************************************************%@@@@@@@%*#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##############################################################################*************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*##%%##############%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#############################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#*****************************************************************************************************************##%%%%####%%##################################%%%%#####################################################################################################################################################################################******#***+++++++++++**####################################***++***++++++++++++++++**######################*************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***********########%%%%%%%%%%%%##*************************************************************************#%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#****************+++++++++++++++++++++++++++++++++++++++++++++++++++++++******************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******************++++++++++++++++++++++++******################################*********************************************************************************************#########################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%################################################################################################################%%%%%%%%%%%%%@%%%%%#############################################%%%%%%%%%%%%##########################################%%%%%%%%%%%#####################################################################################################################################################################################################################%%%%%%%%%%%%%%##############################################################################################################
********************************************************************************************################################################################################***************************************************************************************#####################************************************++++++++++++++++++++++++++***************+++++++++*%%%@@@@@@@@@%%%#*******++*++++++++++++++++++++++++++*****************************************############@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********************************+++*******************************************************************************************************************************************************************#@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##############################################################################*************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*##%############%%##%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#############################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#***************************************************************************************************************##%%###%%#########################################%%%%##################################################################################################################################################################################*********+++++++++++++**####################################**+++***++++++++++++++***#####################**************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********#########%#%%%%%%%%%#**************************************************************************#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%#***************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++************************************++**++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*************++++++++++++++++++++++++++******###############################**********************************************************************************************########################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###################################################################################################################%%%%%%%%%%%%%%###############################################%%%%%%%%%%%%###############################%%%########%%%%%%%%%%%%%###############################################################################################################################################################################################################%%##%%%%%%%%%%%%%%##############################################################################################################
********************************************************************************************################################################################################**************************************************************************************#######*****##########*************************************+++++++++++++++++++++++++++***********+++++++++++*%%%@@@@@@@@@%%%#*******++*+++++++++++++++++++++++++++****************************************############@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******************************************************************************************************************************************************************************************************+*%@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%############################################################################************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*##%%###############%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#############################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#************************************************************************************************************###%%%%%%%#############################################%%%%###############################################################################################################################################################################******#**++++++++++++++**#####################################*+++*#*+++++++++++++**######################***************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********#############%%%%###**************************************************************************%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%@%%%%%**************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********+++++++++++++++++++++++++++*****##############################************************************************************************************************#######################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######################################################################################################################%%%%%%%%%##################################################%%%%%%%%%%%%#############################%%%%########%%%%%%%%%%%%%%%############################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%##############################################################################################################
********************************************************************************************################################################################################**************************************************************************************######********########*************************************+++++++++++++++++++++++++++++*******+++++++++++++*%%%@@@@@@@@@@%%#********+*+++++++++++++++++++++++++++****************************************############@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****************************************************************************************************************************************************************************************************+*#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##########################################################################*************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#%%################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#############################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#**********************************************************************************************************##%%%%%%%%%%%%%############################################%@%%############################################################################################################################################################################*********++++++++++++++**#####################################**+++*#*+++++++++++***######################****************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********###############%%##**************************************************************************#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%**************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*+++*****+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**++++++++++++++++++++++++++++*****#############################***************************************************************************************************###################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#################################################################################################################################################################################%%%%%%%%%%%%#############################%%%%#########%%%%%%###################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%##############################################################################################################
********************************************************************************************################################################################################**************************************************************************************#####*********########*************************************+++++++++++++++++++++++++++++++++++++++++++++++++*%%%@@@@@@@@@@%%#**********++++++++++++++++++++++++++++****************************************###########@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****************************************************************************************************************************************************************************************************+*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#########################################################################*************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**%%%#############%%##%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#############################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#*******************************************************************************************************##%%%%%%%%%%#%%%################################################%%%##########################################################################################################################################################################*********+++++++++++++++**#####################################*++++*#*++++++++++**#######################****************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******###################**************************************************************************%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%*************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****#############################***************************************************************************************************###################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#################################################################################################################################################################################%%%%%%%%%%%%#############################%%%%##########%%%%####################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%##############################################################################################################
*********************************************************************************************###############################################################################**************************************************************************************#####*********#######***************************************++++++++++++++++++++++++++++++++++++++++++++++++*%%%@@@@@@@@@@%%#********+++++++++++++++++++++++++++++*****************************************###########@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%#*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**************************************************************************************************************************************************************************************************+***%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##########################################################################************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*+#%%%###############%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###########################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#*****************************************************************************************************##%%%%%%%%%%%%%%%%#################################################%%%%########################################################################################################################################################################********++++++++++++++++**#####################################*++++*#*++++++++***#######################********************************************++***+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******##############%###**************************************************************************#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%*************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****############################***************************************************************************************************###################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##################################################################################################################################################################################%%%%%%%%%%%%###########################%%%%%%%%%%%%%%%%%%####################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%###############################################################################################################
*********************************************************************************************##########################*####################################################**************************************************************************************#####*********#######***************************************++++++++++++++++++++++++++++++++++++++++++++++++#%%%@@@@@@@@@@%%#********++++++++++++++++++++++++++++++*****************************************##########@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%#+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**************************************************************************************************************************************************************************************************+*+#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#########################################################################*************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#%%################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##%##########################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#***************************************************************************************************##%%%%%%%%%%%%%%%%%%###################################################%%%#######################################################################################################################################################################****#**+++++++++++++++++**#####################################*++++*#*+++++++**########################***************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******##################**************************************************************************%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%*************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****############################*****************************************************************************************************################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##################################################################################################################################################################################%%%%%%%%%%%%##########################%%%%%%%%%%%%%%%%%%%####################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%###############################################################################################################
*********************************************************************************************#################*#*************###############################################**************************************************************************************#####*********#######***************************************++++++++++++++++++++++++++++++++++++++++++++++++#%%%@@@@@@@@@@%%#********++++++++++++++++++++++++++++++******************************************#########@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%#+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****************************************************************************************************************************************************************************************************%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#########################################################################*************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*++*%%%################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#************************************************************************************************##%%%%%%%%%%%%%%%%%%%%%####################################################%%%%###################################################################################################################################################################********++++++++++++++++++**#####################################**+++*#*++++++**#########################***************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******#################*************************************************************************#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%***********++++++++++++++++++++=========+++++++=======+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********#######################******************************************************************************************************################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##################################################################################################################################################################################%%%%%%%%%%%%###################%%###%%%%%%%%%%%%%%%%%%%%%####################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%###############################################################################################################
*********************************************************************************************################*****************##############################################**************************************************************************************####**********#######***************************************++++++++++++++++++++++++++++++++++++++++++++++++#%%%@@@@@@@@@@%%#********+++++++++++++++++++++++++++++++******************************************#*######%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%#*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***************************************************************************************************************************************************************************************************+#@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########################################################################*************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***#%%###############%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#**********************************************************************************************##%%%%%%%%%%%%%%%%%%%%%%######################################################%%@%%################################################################################################################################################################*********++++++++++++++++++**######################################*+++*#*++++**##########################****************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******#################*************************************************************************%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%**********+++++++++++++++===========================================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++************************#######********************************************************************************************************##############################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##################################################################################################################################################################################%%%%%%%%%%%%##################%%%%##%%%%%%%%%%%%%%%%%%%%%####################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%###############################################################################################################
*********************************************************************************************##############*******************##############################################*************************************************************************************#####*********########***************************************++++++++++++++++++++++++++++++++++++++++++++++++#%%%@@@@@@@@@@%%#********++++++++++++++++++++++++++++++++************************************************#%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****************************************************************************************************************************************************************************************************%@@@@@@@@@@@@@#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########################################################################*************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**+***#%%###############%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#********************************************************************************************#%%%%%%%%%%%%%%%%%%%%%%%%%#######################################################%%@%%###############################################################################################################################################################********+++++++++++++++++++*#######################################*+++*#*++**###########################********************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******#################************************************************************************#%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%*******++++++++++++++++++============================================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****************************#********+++++**********************************************************************************************#############################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##################################################################################################################################################################################%%%%%%%%%%%%##################%%%%##%%%%%%%%%%%%%%%%#%%%%####################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%###############################################################################################################
*********************************************************************************************#############********************##############################################*************************************************************************************#####*********#######****************************************++++++++++++++++++++++++++++++++++++++++++++++++#%%%@@@@@@@@@@%%#********++++++++++++++++++++++++++++++++************************************************#%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%#*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***************************************************************************************************************************************************************************************************#@@@@@@@@@@@@@%#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########################################################################*************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****%%%##############%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#%%###################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#*****************************************************************************************##%%%%%%%%%#%%%%%%%%%%%%%%%%##########################################################%%@%#############################################################################################################################################################********++++++++++++++++++++*#######################################*+++*#*+**###########################**********************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********################************************************************************************#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%***+*+++++++++++++++=================================================+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++======++++++++++++++++***********************************+++++++**********************************************************************************************############################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###################################################################################################################################################################################%%%%%%%%%%%###################%%###%%%%%%%%%%%%%%%%##%%%####################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%###############################################################################################################
*********************************************************************************************#############********************##############################################*************************************************************************************######********#######***************************************+++++++++++++++++++++++++++++++++++++++++++++++++#%%%@@@@@@@@@@%%#********++++++++++++++++++++++++++++++++*************************************************%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%#*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****************************************************************************************************************************************************************************************************%@@@@@@@@@@@@@#%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######################################################################**************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******#%%###############%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#***************************************************************************************##%%%%%%%%%%%%%%%%%%%%%%%%%%%%############################################################%%%%##########################################################################################################################################################********+++++++++++++++++++++*#######################################**+**#***###########################***********************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********################***********************************************************************#%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%***+++++++++++++++++++++++++++++++====================================++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=========+++++++++++++*******+++++++++********************++++++++++++++***************************************************************************************##########################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####################################################################################################################################################################################%%%%%%%%%%%%#######################%%################%%%####################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%###############################################################################################################
*********************************************************************************************#############*******************################################################************************************************************************************######*******########***************************************+++++++++++++++++++++++++++++++++++++++++++++++++#%%%@@@@@@@@@@%%#********++++++++++++++++++++++++++++++++*************************************************%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****************************************************************************************************************************************************************************************************#@@@@@@@@@@@@@@*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######################################################################**************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******#%%##############%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#################################################%%%%#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#************************************************************************************##%%%%%%%%%%%%%%%%%%%%%%%%%%%##%%#############################################################%%%%########################################################################################################################################################********++++++++++++++++++++++*#######################################**+**##############################*************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********################***********************************************************************#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%**++++++++++++++++++++++++++++++++++++++++++++++++++++++=============+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==========+++++++++++++++++++++++++++++++******************++++++++++++****************************************************************************************##########################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####################################################################################################################################################################################%%%%%%%%%%%%##########################################%%####################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%###############################################################################################################
*********************************************************************************************#############********************##############################################*************************************************************************************######*******########*****************************************+++++++++++++++++++++++++++++++++++++++++++++++#%%%@@@@@@@@@@%%#*********++++++++++++++++++++++++++++++++************************************************%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%##++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********+*********************************************************************************************************************************************************************************+**+***+*%@@@@@@@@@@@@@%*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####################################################################***************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********#%#############%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#*********************************************************************************###%%%%%%%%%%%%%%%%%%%%%%%%%%%####################################################################%%%%%#####################################################################################################################################################*****#**+++++++++++++++++++++++*###################################%####****#############################***************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******################***********************************************************************%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++==========+++++++++++++++++++++++++++++++++++*****************************************************************************************************************##########################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####################################################################################################################################################################################%%%%%%%%%%%%%################################################################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%##############################################################################################################
*********************************************************************************************#############********************##############################################************************************************************************************#######******#########*****************************************+++++++++++++++++++++++++++++++++++++++++++++++#%%%@@@@@@@@@@%%#*********++++++++++++++++++++++++++++++++************************************************%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********************************************************************************************************************************************************************************************+*******%@@@@@@@@@@@@@@##@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####################################################################***************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********%%#############%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##############################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#******************************************************************************####%%%%#%%%%%%%%%%%%%%%%##############################################################################%%%%####################################################################################################################################################********+++++++++++++++++++++++*###################################%%###***#%###########################****************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******################**********************************************************************#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=======++++++++++++++++++++++++++++++++++++++++++***************************************************************************************************************########################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####################################################################################################################################################################################%%%%%%%%%%%%%################################################################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%##############################################################################################################
*********************************************************************************************#############********************##############################################************************************************************************************########*****#########*****************************************+++++++++++++++++++++++++++++++++++++++++++++++#%%%@@@@@@@@@@%%#*********+++++++++++++++++++++++++++++++++***********************************************%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++************************************************************************************************************************************************************************************************+**#@@@@@@@@@@@@@@%*%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####################################################################***************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********#%%#############%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#########################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#***************************************************************************###%%%%%%%%%%%%%%%%%%%%%%##################################################################################%%%%%################################################################################################################################################*********++++++++++++++++++++++++*#################################%%%%###**##%##########################*****************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******################**********************************************************************%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++===+++++++++++++++++++++++++++++++++++++++++++++++++************************************************************************************************************######################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####################################################################################################################################################################################%%%%%%%%%%%%%################################################################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%#############################################################################################################
*********************************************************************************************############*********************##############################################************************************************************************************######################*****************************************++++++++++++++++++++++++++++++++++++++++++++++*#%%%@@@@@@@@@@%%#*********+++++++++++++++++++++++++++++++++***********************************************%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********************************************************************************************************************************************************************************************+***+*%@@@@@@@@@@@@@@#*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####################################################################****************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********%%#############%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#************************************************************************###%%%%%%######%%%%%%%%%########################################################################################%%%%#############################################################################################################################################**********+++++++++++++++++++++++++*################################%%%%%#%#####%#########################******************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******#################*********************************************************************#%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****************************************************************************************************#####################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######################################################################################################################################################################################%%%%%%%%%%%%################################################################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%############################################################################################################
**********************************************************************************************###########*********************##############################################************************************************************************************######################*****************************************++++++++++++++++++++++++++++++++++++++++++++++*%%%%@@@@@@@@@@%%#***********+++++++++++++++++++++++++++++++***********************************************%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******************************************************************************************************************************************************************************************+*+****#@@@@@@@@@@@@@@%**@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####################################################################*****************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********#%%############%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#*********************************************************************###%%%####%%%%%%%#########%#########################################################################################%%%%%###########################################################################################################################################**********+++++++++++++++++++++++++*###############################%%%%%%%%#####%########################*###*****************************###*******************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******##################********************************************************************#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****************************************************************************************************####################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######################################################################################################################################################################################%%%%%%%%%%%%%##################%%%%%%####################%#############%%%##################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%########################%%%%%%%%%%%%%%%%%%%#################################################################
**********************************************************************************************###########*********************##############################################***********************************************************************************#######################******************************************+++++++++++++++++++++++++++++++++++++++++++++*%%%%@@@@@@@@@@%%#***********++++++++++++++++++++++++++++++++**********************************************%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***************************************************************************************************************************************************************************************************%@@@@@@@@@@@@@@%*#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####################################################################******************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***********#%%##########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#*******************************************************************####%%##%%%#######%%%####################################################################################################%%%%#########################################################################################################################################*********++*+++++++++++++++++++++++**#############################%%%%%%%%%%#####%#########################*****************************##########*************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******##################********************************************************************%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*************************************************************************************************###################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######################################################################################################################################################################################%%%%%%%%%%%%%#################%%%%%%%%#################%%%############%%%%%#################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##############%%%%%%%%%%%%%%%%%%%%%%%################################################################
***********************************************************************************************#########**********************##############################################**********************************************************************************#########################*****************************************+++++++++++++++++++++++++++++++++++++++++++++*%%%@@@@@@@@@@@%%#************+++++++++++++++++++++++++++++++**********************************************%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*************************************************************************************************************************************************************************************************+*#@@@@@@@@@@@@@@@#*%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####################################################################******************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++************%%##########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###%#####################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#***************************************************************####%%%%%##%%###%%%%##########################################################################################################%%@%%######################################################################################################################################**********+*++++++++++++++++++++++++*############################%%%%%%%%%%%%%####%#########################***************************############***********************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******###################***+*+++++++++****************************************************#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******************************************************************************************####################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######################################################################################################################################################################################%%%%%%%%%%%%%#################%%%%%%%%################%%%%############%%%%%%################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%################################################################
***********************************************************************************************########***********************##############################################**********************************************************************************#########################*****************************************+++++++++++++++++++++++++++++++++++++++++++++*%%%@@@@@@@@@@@%%#************+++++++++++++++++++++++++++++++**********************************************%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***************************************************************************************************************************************************************************************************%@@@@@@@@@@@@@@%**@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####################################################################******************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++************#%%#########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#########################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##***********************************************************###%%%%%%####%####%################################################################################################################%%%%%%####################################################################################################################################************++++++++++++++++++++++++*###########################%%%%%%%%%%%%%%####%###########################************************#############**********************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******###################**++++++++++++++**************************************************#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****************************************************************************************####################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########################################################################################################################################################################################%%%%%%%%%%%%#################%%%%%%%%###############%%%%%############%%%%%%################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%############################################################%%##
***************************************************************************************************##************************###############################################*********************************************************************************###########################****************************************+++++++++++++++++++++++++++++++++++++++++++++*%%%@@@@@@@@@@%%%#************++++++++++++++++++++++++++++++***********************************************%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**************************************************************************************************************************************************************************************************#@@@@@@@@@@@@@@@#**@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####################################################################*******************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++************%%########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####%#############%%%%%%############%###%%##%%%##%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#*******************************************************######%%%%################################################################################################################################%%%%%#################################################################################################################################*************++++++++++++++++++++++++**#########################%%%%%%%%%%%%%%%%####%##########################***********************##############***********************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******####################*+++++++++++++++++++++***++*+************************************%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********************************************************************************######################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#########################################################################################################################################################################################%%%%%%%%%%%%%%%############%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##########%%%%%%%%%%######################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###############################################################
*****************************************************************************************************************************###############################################*********************************************************************************###########################****************************************+++++++++++++++++++++++++++++++++++++++++++++*%%%@@@@@@@@@@%%%#*************++++++++++++++++++++++++++++************************************************%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**************************************************************************************************************************************************************************************************%@@@@@@@@@@@@@@%***@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####################################################################********************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*************%%%#%##%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###################%%%%%%%%###%%%%#########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#**************************************************##########%%%%%%#################################################################################################################################%%%%%%###############################################################################################################################************+++++++++++++++++++++++++*#########################%%%%%%%%%%%%%%%%%####%###########################*********************###############**********************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********##################**++++++++++++++++++++++++++++++********************************#%@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******************************************************************************######################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##########################################################################################################################################################################################%%%%%%%%%%%%%%%%###########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##########%%%%%%%%%%#####################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%################################################################
*****************************************************************************************************************************###############################################*********************************************************************************###########################****************************************+++++++++++++++++++++++++++++++++++++++++++++*%%%@@@@@@@@@@%%%#*************++++++++++++++++++++++++++++************************************************%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*************************************************************************************************************************************************************************************************#@@@@@@@@@@@@@@@#**#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####################################################################********************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*************#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####################%%%%%%%%%%%%%%%#########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###******************************************######%%%%%%%%%%%%%%%%%%%###############################################################################################################################%%%%%%##############################################################################################################################***********+++++++++++++++++++++++++**########################%%%%%%%%%%%%%%%%%%%###%###########################*******************#################*********************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*************################**+++++++++++++++++++++++++++++++**+++*************************%@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*************************************************************************#######################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##########################################################################################################################################################################################%%%%%%%%%%%%%%%%%##########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#########%%%%%%%%%%####################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########################################################%%%######
*****************************************************************************************************************************###############################################********************************************************************************#############################****************************************++++++++++++++++++++++++++++++++++++++++++++*%%%@@@@@@@@@@%%%#**************+++++++++++++++++++++++++++************************************************%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**************************************************************************************************************************************************************************************************%@@@@@@@@@@@@@@@***%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####################################################################*********************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**************%%##%#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##########********************########%%%%%%%%%%%%###%%%%%%%%%%%%%################################################################################################################################%%%%%%###########################################################################################################################***********+++++++++++++++++++++++++***######################%%%%%%%%%%%%%%%%%%%%%###%###########################*****************###################********************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**************************########**++++++++++++++++++++++++++++++++++*************************#%@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********************************************************************#######################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##########################################################################################################################################################################################%%%%%%%%%%%%%%%%%%#########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########%%%%%%%%%%####################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########################################################%%%%######
******************************************************************************************************************************##############################################********************************************************************************#############################****************************************++++++++++++++++++++++++++++++++++++++++++++*%%%@@@@@@@@@@%%%#***************++++*+++++++++++++++++++++************************************************%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*************************************************************************************************************************************************************************************************%@@@@@@@@@@@@@@@%***@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####################################################################*********************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**************#%%%#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##########################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#%%%###%%%###%%%%%%%%%%%%%%#%%%%%%%%%%%%%%%%%%%%%%%#%%%%%%%%%%%%%%%%%%%##################################################################################################################################%%%%%%#########################################################################################################################**********+++++++++++++++++++++++++****################%%##%%%%%%%%%%%%%%%%%%%%%%%###%###########################***************#####################********************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********************************#**##***+++++++++++++++++++++++++++++*****************************#@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********#############***********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**************************************************************########################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##########################################################################################################################################################################################%%%%%%%%%%%%%%%%%%########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########%%%%%%%%%%####################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########################################################%%%%%#%%%%
******************************************************************************************************************************##############################################********************************************************************************#############################****************************************++++++++++++++++++++++++++++++++++++++++++++*%%%@@@@@@@@@@%%%#*****************+***++++++++++++++++++++************************************************%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***********************************************************************************************************************************************************************************************+*@@@@@@@@@@@@@@@@#**#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####################################################################**********************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****************#%%%%#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########################*#####%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##############%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#%%%####%%%%%%%%%%%%####################################################################################################################################%%%%%%#######################################################################################################################**********+++++++++++++++++++++++++*****#############%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###%############################************#######################*******************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++************************************##*##****++++++++++++++++++++++++*********************************%@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********####################********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********************************************************########################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##########################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%#######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######%%%%%%%%%%###################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######################################################%%%%##%%%%
******************************************************************************************************************************##############################################*******************************************************************************###############################***************************************++++++++++++++++++++++++++++++++++++++++++++*%%%@@@@@@@@@@%%%#*********************+++++++++++++++++***************************************************%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*************************************************************************************************************************************************************************************************%@@@@@@@@@@@@@@@%***#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####################################################################***********************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****************%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####*****###%%%%%%%%%%%%%%%%%%%%%%%%%%%###%%%%%%%%##%%%%%%%%%%%%%#########################################################################################################################################%%%%%%%####################################################################################################################**********+++++++++++++++++++++++++*****###########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#################################*********#########################*****************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***********************************************+++++++++++++++++++*************************************#%@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******########################********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********************************************************#######################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###########################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######%%%%%%%%%%##################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########################%####################################
******************************************************************************************************************************##############################################*******************************************************************************###############################***************************************++++++++++++++++++++++++++++++++++++++++++++*%%%@@@@@@@@@@@%%#*********************+++++++++++++++++***************************************************%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++************************************************************************************************************************************************************************************************#@@@@@@@@@@@@@@@@#***%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####################################################################************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****************#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#############################***###%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###********#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#%%%%#%%%###%%%%##########################################################################################################################################%%%%%%%###################################################################################################################*********+++++++++++++++++++++++++*****#############%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#################################********#########################******************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******************************************++++++++++++++++++++*******************************************#%@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******###########################********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******************************************************######################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%############################################################################################################################################################################################%%%%%%%%%%%%%%%%%%#####%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######%%%%%%%%%%##################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######################%%###############################%####
******************************************************************************************************************************#############################################********************************************************************************###############################***************************************++++++++++++++++++++++++++++++++++++++++++++#%%%@@@@@@@@@@@%%#*********************++++++++++++++++*************************************************++*%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****************************************************************************************************************************************************************************************+**+****%@@@@@@@@@@@@@@@%****@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####################################################################************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****************%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###############################**####%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##*********#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##############################################################################################################################################%%%%%%%#################################################################################################################*******++++++++++++++++++++++++++*****#############%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#################################*****############################*****************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******************************************++++++++++++*****************************************************#%@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****##############################********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****************************************************######################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###########################################################################################################################################################################################%%%%%%%%%%%%%%%%%#######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######%%%%%%%%%%%%%#########################################################################################################################################################################%%#####%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######################################################
******************************************************************************************************************************#############################################********************************************************************************###############################***************************************++++++++++++++++++++++++++++++++++++++++++++#%%%@@@@@@@@@@@%%#*********************++++++++++++++++*************************************************++*%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***********************************************************************************************************************************************************************************************+#%@@@@@@@@@@@@@@@#****@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####################################################################*************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****************#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#############################******#####%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####*****##%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%################################################################################################################################################%%%%%%%###############################################################################################################*******++++++++++++++++++++++++++*****##############%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#################################*###############################*****************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********************************************++++++**********************************************************#@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****##################################******++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***************************************************#####################%%%%%%%%%%%%%%%%%%%%%%%%%%%%############################################################################################################################################################################################%%%%%%%%%%%%%%%%%#######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####%%%%%%%%%%%%%#########################################################################################################################################################################%%#####%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######################################################
******************************************************************************************************************************##############################################*******************************************************************************###############################****************************************+++++++++++++++++++++++++++++++++++++++++++#%%%@@@@@@@@@@@%%#*********************++++++++++++++++************************************************+++*%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++************************************************************************************************************************************************************************************************%@@@@@@@@@@@@@@@@****#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####################################################################***************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******************#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#################################******################%%%%%%%%%%%%%%%%%%%%%####*****#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##################################################################################################################################################%%%%%%%############################################################################################################*******++++++++++++++++++++++++++*****##############%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%################################################################*****************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******************************************************************************************************************%@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****####################################******+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***********************************************#####################%%%%%%%%%%%%%%%%%%%%%%%%%%%%############################################################################################################################################################################################%%%%%%%%%%%%%%%%%#######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####%%%%%%%%%%%%%#########################################################################################################################################################################%%%####%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######################################################
*******************************************************************************************************************************##############################################*****************************************************************************################################****************************************+++++++++++++++++++++++++++++++++++++++++++#%%@@@@@@@@@@@@%%#*********************++++++++++++++++************************************************+++*%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***********************************************************************************************************************************************************************************************#@@@@@@@@@@@@@@@@%****%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#################################################################*****************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********************#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##################################********###############%%%%%%%%%%%%%%%%%%%%####**##%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######################################################################################################################################################%%%%%%##########################################################################################################*******++++++++++++++++++++++++++*****###############%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###############################################################****************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****************************************+++++********************++++++++++++*****************************************#%%@@%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***######################################******++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******************************************#####################%%%%%%%%%%%%%%%%%%%%%%%%%%%#############################################################################################################################################################################################%%%%%%%%%%%%%%%%%#######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###%%%%%%%%%%%%%#########################################################################################################################################################################%%%%###%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######################################################
*******************************************************************************************************************************##############################################*****************************************************************************################################****************************************+++++++++++++++++++++++++++++++++++++++++++#%%@@@@@@@@@@@@%%#*********************++++++++++++++++************************************************+++*%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***********************************************************************************************************************************************************************************************%@@@@@@@@@@@@@@@@*****%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###############################################################********************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********************#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###################################**********#####################%%%%%%%%%%%%%%#####%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###################################################################################%%%####################################################################%%%%%%%#######################################################################################################*******++++++++++++++++++++++++++*****################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##############################################################***************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****************************************++++++++++++*********++++++++++++++++++++++++++++++++++++++**********************#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***#########################################*****+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****************************************####################%%%%%%%%%%%%%%%%%%%%%%%%%%%##############################################################################################################################################################################################%%%%%%%%%%%%%%%%#######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###%%%%%%%%%%%%%#########################################################################################################################################################################%%%%%#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######################################################
********************************************************************************************************************************#############################################*****************************************************************************################################****************************************++++++++++++++++++++++++++++++++++++++++++*#%%@@@@@@@@@@@@%%#*********************+++++++++++++++*************************************************+++*%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********************************************************************************************************************************************************************************************#@@@@@@@@@@@@@@@@%*****@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##############################################################*********************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***********************%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####################################***********##################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######################################################################################%%%%%%%%##################################################################%%%%%%%#####################################################################################################*****+++++++++++++++++++++++++++****########*#########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#############################################################***************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****************#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***###########################################*****+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*************************************####################%%%%%%%%%%%%%%%%%%%%%%%%%%%##############################################################################################################################################################################################%%%%%%%%%%%%%%%%#######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####%%%%%%%%%%%%%#########################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####################################################
********************************************************************************************************************************#############################################*****************************************************************************################################****************************************++++++++++++++++++++++++++++++++++++++++++*#%%@@@@@@@@@@@@%%#*********************+++++++++++++++*************************************************+++*%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%*+++++++++++++++++++**++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********************************************************************************************************************************************************************************************%@@@@@@@@@@@@@@@@#****#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#############################################################*************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***********************#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######################################***********################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####################################################################################################%%%%%%%%%%##################################################################%%%%%%###################################################################################################*****++++++++++++++++++++++++++*****#######****########%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%%%%%###########################################################****************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++************%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######%%%%#*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**#############################################****+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********************************###################%%%%%%%%%%%%%%%%%%%%%%%%%%%###############################################################################################################################################################################################%%%%%%%%%%%%%%%%#######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####%%%%%%%%%%%%%#########################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####################################################
********************************************************************************************************************************#############################################*****************************************************************************################################*****************************************+++++++++++++++++++++++++++++++++++++++++*#%%@@@@@@@@@@@@%%#**********************++++++++++++++**************************************************++*%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%*+++++++++++++++++******++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********************************************************************************************************************************************************************************************+#@@@@@@@@@@@@@@@@%*****%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##############################################################********************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***********************#@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##%#######################################*****************##########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######################################################################################################%%%%%%%%%%%##################################################################%%%%%%%################################################################################################****++++++++++++++++++++++++++++****########***#########%%%%%%%%%%%%%%%%%%%%%%%%@@@%%%%%%%%###########################################################****************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%############*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**###############################################****+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********************************##################%%%%%%%%%%%%%%%%%%%%%%%%%%%###############################################################################################################################################################################################%%%%%%%%%%%%%%%%#######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######%%%%%%%%%%%%%#########################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####################################################
********************************************************************************************************************************#########################******###############****************************************************************************################################*****************************************+++++++++++++++++++++++++++++++++++++++++*#%%@@@@@@@@@@@@%%#**********************+++++++++++++***************************************************++*%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%*+++++++++++++++*********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******************************************************************************************************************************************************************************************+**%@@@@@@@@@@@@@@@@#*****%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#############################################################**************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++***********************#%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#############################################***************###########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%############################################################################################################%%%%%%%%%%%####################################################################%%%%%%##############################################################################################****+++++++++++++++++++++++++++*****#######******########%%%%%%%%%%%%%%%%%%%%%%%%%@@%%@%%%%%##########################################################****************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%################*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**################################################***+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****************************##################%%%%%%%%%%%%%%%%%%%%%%%%%%%###############################################################################################################################################################################################%%%%%%%%%%%%%%%%#########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########%%#############################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#%%%%%%%%%%%%%%%%########%%%%%%%%####################################
********************************************************************************************************************************########################*********#############****************************************************************************################################*****************************************+++++++++++++++++++++++++++++++++++++++++*#%%@@@@@@@@@@@@%%#**********************++++++++++++++**************************************************++*%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%*+++++++++++++++**********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********************************************************************************************************************************************************************************************#@@@@@@@@@@@@@@@@%******@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%############################################################***************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++************************#@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#############################################****************#############%%%%%%%%%%%%%%%%%%%%%%##################################################################################################################%%%%%%%%%%%####################################################################%%%%%%%#############################################################################################*++++++++++++++++++++++++++++*****########*****#########%%%%%%%%%%%%%%%%%%%%%%%%@@@%%@%@%%%##########################################################***************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#################*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#################################################****+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**************************##################%%%%%%%%%%%%%%%%%%%%%%%%%%################################################################################################################################################################################################%%%%%%%%%%%%%%%%%########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#%#####%%#############################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########%%%%%%%%####################################
********************************************************************************************************************************#######################**********#############****************************************************************************################################*****************************************+++++++++++++++++++++++++++++++++++++++++*%%%@@@@@@@@@@@@%%#*+********************++++++++++++++**************************************************++*%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%*+++++++++++++++***********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********************************************************************************************************************************************************************************************%@@@@@@@@@@@@@@@@#*****#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%############################################################*****************************************************+++++++++++++++++++++++++++++++++++++++++++++++++************************#%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#################################################****************#############%%%%%%%%%%%%%%%#####################################################################################################################%%%%%%%%%%%#####################################################################%%%%%%%%#########################################################################################***+++++++++++++++++++++++++++*****#######*******########%%%%%%%%%%%%%%%%%%%%%%%%%@@@@%@%@%%%########################################################****************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###################*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*###################################################***+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++************************##################%%%%%%%%%%%%%%%%%%%%%%%%%%################################################################################################################################################################################################%%%%%%%%%%%%%%%%%#######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####%###########%%%%%#############################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########%%%%%%%%####################################
********************************************************************************************************************************######################************############*****************************************************************************###############################*****************************************+++++++++++++++++++++++++++++++++++++++++*%%%@@@@@@@@@@@@%%#*++*******************++++++++++++++*****************************************************%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%*+++++++++++++**************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********************************************************************************************************************************************************************************************#@@@@@@@@@@@@@@@@@******#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%############################################################******************************************************+++++++++++++++++++++++++++++++++++++++++++++++*************************#%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#################################################*****************##############################################################################################################################################%%%%%%%%%%%#######################################################################%%%%%%%########################################################################################**+++++++++++++++++++++++++++****########********########%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@%%%########################################################**************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##%%#####################*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*####################################################***++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********************##################%%%%%%%%%%%%%%%%%%%%%%%%%%###############################################################################################################################################################################################%%%%%%%%%%%%%%%%%%######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%################%%%%%##############################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########%%%%%%%%####################################
*******************************************************************************************************************************######################*************############*******************************************************************************#############################*****************************************+++++++++++++++++++++++++++++++++++++++++*%%%@@@@@@@@@@@@%%#*+++*******************+++++++++++++*****************************************************%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%*+++++++++++++**************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********************************************************************************************************************************************************************************************%@@@@@@@@@@@@@@@@%******%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%############################################################*******************************************************++++++++++++++++++++++++++++++++++++++++++++++************************#%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###################################################*****************###########################################################################################################################################%%%%%%%%%%%########################################################################%%%%%%%%#####################################################################################**++++++++++++++++++++++++++*****########*********#######%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@%@@@%%%#######################################################**************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#########################*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*######################################################**+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******************###################%%%%%%%%%%%%%%%%%%%%%%%%%################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%####%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%################%%%%##############################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######%%%%%%%%%%#####################%%%%%%#########
*******************************************************************************************************************************######################*************############**********************************************************************************##########################******************************************++++++++++++++++++++++++++++++++++++++++*%%%@@@@@@@@@@@@%%#*++++++++**+++*********+++++++++++++*****************************************************%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%*+++++++++++++***************+*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********************************************************************************************************************************************************************************************#@@@@@@@@@@@@@@@@@*******@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%############################################################*******************************************************+++++++++++++++++++++++++++++++++++++++++++++*************************#%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####################################################*******************#######################################################################################################################################%%%%%%%%%###########################################################################%%%%%%%####################################################################################*++++++++++++++++++++++++++****#########**********#######%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@%@%%%%%######################################################**************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#############################*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#######################################################**++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****************####################%%%%%%%%%%%%%%%%%%%%%%%%################################################%%%%%%%%############################################################################################################################%%%%%%%%%%##%%%%%%%%%%%%%%%%%%%%###%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###############%%%%%##############################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####%%%%%%%%%%%%###################%%%%%%%%########
*******************************************************************************************************************************#####################**************#############*********************************************************************************##########################******************************************++++++++++++++++++++++++++++++++++++++++#%%%@@@@@@@@@@@@%%#*++++++++*++++*********+++++++++++++*****************************************************%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%*++++++++++********************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********************************************************************************************************************************************************************************************%@@@@@@@@@@@@@@@@%*******@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###########################################################*******************************************************+++++++++++++++++++++++++++++++++++++++++++++************************#%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########################################################****************#####################################################################################################################################%%%%%%%%%%###########################################################################%%%%%%%##################################################################################*++++++++++++++++++++++++++***##########**********#########%%%%%%%%%%%%%%%%%%%%%%@@@@@@@%@%%%%%######################################################*************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##############################*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**#######################################################**++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++************####################%%%%%%%%%%%%%%%%%%%%%%%###############################################%%%%%%%%%%%%########################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%############%%%%%%%%%###############################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####%%%%%%%%%%%%%##################%%%%%%%%########
*******************************************************************************************************************************#####################**************#############*********************************************************************************##########################******************************************++++++++++++++++++++++++++++++++++++++++#%%%@@@@@@@@@@@@%%#*++++++++*++++*********+++++++++++++*****************************************************%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#++++++++***********************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******************************************************************************************************************************************************************************************#@@@@@@@@@@@@@@@@@#*******@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###########################################################********************************************************++++++++++++++++++++++++++++++++++++++++++++************************#%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##########################################################****************##################*******########################################################################################################%%%%%%%%%%%%%##########################################################################%%%%%%%%##############################################################################**++++++++++++++++++++++++****#########***********#####%####%%%%%%%%%%%%%%%%%%%%%%@@@@@@@%%%%%%%######################################################************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###############################*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#########################################################**+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***********##################%##%%%%%%%%%%%%%%%%%%%%%%%##############################################%%%%%@@@@%%%%%#####################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##########%%%%%%%%%%################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####%%%%%%%%%%%%%%##################%%%%%%%%########
******************************************************************************************************************************######################**************##############*********************************************************************************#########################******************************************++++++++++++++++++++++++++++++++++++++++#%%%@@@@@@@@@@@@%%%*++++++++++++++********+++++++++++++*****************************************************%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#*+++++**************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******************************************************************************************************************************************************************************************%@@@@@@@@@@@@@@@@%*******#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##########################################################********************************************************++++++++++++++++++++++++++++++++++++++++++++************************%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###########################################################*********************************************################################################################################################%%%%%%%%%%%%%%##########################################################################%%%%%%%%#############################################################################*++++++++++++++++++++++++***##########***********###########%%%%%%%%%%%%%%%%%%%%%%@@@@@@@%@%%%%%######################################################**********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*##%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##################################*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**#########################################################**++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********######################%%%%%%%%%%%%%%%%%%%%%%%#############################################%%%@@@@@@@@@@%%####################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#################%%%%%%%%%########
******************************************************************************************************************************######################***************#############*********************************************************************************#########################******************************************++++++++++++++++++++++++++++++++++++++++#%%%@@@@@@@@@@@@%%%*++++++++++++++********+++++++++++++*****************************************************%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#********************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******************************************************************************************************************************************************************************************#@@@@@@@@@@@@@@@@@#*******%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##########################################################********************************************************++++++++++++++++++++++++++++++++++++++++++++***********************#%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##############################################################**********************************************###########################################################################################%%%%%%%%%%%%%%%###########################################################################%%%%%%%%##########################################################################*+++++++++++++++++++++++****#########***********#############%%%%%%%%%%%%%%%%%%%%%%@@@@@@@%%%%%%%######################################################*********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*##%%#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######################################*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**##########################################################*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***********######################%%%%%%%%%%%%%%%%%%%%%%#############################################%%%@@@@@@@@@@@@%%##################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#################%%%%%%%%%########
******************************************************************************************************************************#####################****************#############*********************************************************************************#########################******************************************++++++++++++++++++++++++++++++++++++++++#%%%@@@@@@@@@@@@%%%*++++++++++++++********+++++++++++++*****************************************************%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#*********************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******************************************************************************************************************************************************************************************%@@@@@@@@@@@@@@@@%********%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##%#######################################################********************************************************++++++++++++++++++++++++++++++++++++++++++++***********************%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%################################################################************************************************######################################################################################%%%%%%%%%%%%%%%%###########################################################################%%%%%%%%########################################################################*+++++++++++++++++++++++**##########***********######*#######%%%%%%%%%%%%%%%%%%%%%%%@@@@@%@%%%%%%%######################################################*******++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***********************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*##%###%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#########################################*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**###########################################################**+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*++++++++++********########################%%%%%%%%%%%%%%%%%%%%%%#############################################%%@@@@@@@@@@@@@@%%################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#################%%%%%%%%%%#######
******************************************************************************************************************************#####################****************##############*******************************************************************************##########################******************************************++++++++++++++++++++++++++++++++++++++++#%%%@@@@@@@@@@@@%%%*++++++++++++++********+++++++++++++*****************************************************%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#*********************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******************************************************************************************************************************************************************************************#@@@@@@@@@@@@@@@@@#********@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%%%%@@@@%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######################################################********************************************************++++++++++++++++++++++++++++++++++++++++++++**********************#%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###############################################################*************************************************##################################################################################%%%%%%%%%%%%%%%%%%###########################################################################%%%%%%%%#####################################################################**+++++++++++++++++++++***##########**********######***#######%%%%%%%%%%%%%%%%%%%%%%%@@@@@%@%%%%%%%######################################################*******+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++###########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#########################################*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**###########################################################**+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*+++++++++++******#########################%%%%%%%%%%%%%%%%%%%%%%############################################%%@@@@@@@@@@@@@@@@%################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#################%%%%%%%%%%#######
******************************************************************************************************************************#####################****************##############*******************************************************************************##########################******************************************++++++++++++++++++++++++++++++++++++++++#%%%@@@@@@@@@@@@%%%*++++++++++++++*********++++++++++++*****************************************************%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#**********************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******************************************************************************************************************************************************************************************%@@@@@@@@@@@@@@@@%********#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######################################################********************************************************+++++++++++++++++++++++++++++++++++++++++++***********************#%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###############################################################****************************************************###############################################################################%%%%%%%%%%%%%%%%%%###########################################################################%%%%%%%%####################################################################*++++++++++++++++++++***##########*********#######*****######%%%%%%%%%%%%%%%%%%%%%%%%@@@@%%%%%%%%%%#####################################################*******++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++###################%%%%%%%%%%%%%%%%%%#############################################*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**#############################################################*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*+++++++++*******##########################%%%%%%%%%%%%%%%%%%%%%#############################################%%@@@@@@@@@@@@@@@@%###############################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#################%%%%%%%%%%%######
******************************************************************************************************************************#####################****************##############*******************************************************************************##########################*******************************************+++++++++++++++++++++++++++++++++++++++#%%%@@@@@@@@@@@@%%%*++++++++++++++*********++++++++++++*****************************************************#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#***********************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****************************************************************************************************************************************************************************************%@@@@@@@@@@@@@@@@@#********#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######################################################*********************************************************++++++++++++++++++++++++++++++++++++++++++**********************#%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#############################################################*********************************************************##########################################################################%%%%%%%%%%%%%%%%%%%###########################################################################%%%%%%%%#################################################################*+*++++++++++++++++++**###########*******########********#####%%%%%%%%%%%%%%%%%%%%%%%%@@@@%%%%%%%%%%#####################################################******++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++##################################################################################*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*##############################################################*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*++++++++*******###########################%%%%%%%%%%%%%%%%%%%%##############################################%@@@@@@@@@@@@@@@@@@%##############################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#################%%%%%%%%%%%%#####
*****************************************************************************************************************************######################****************###############******************************************************************************##########################*******************************************+++++++++++++++++++++++++++++++++++++++#%%%@@@@@@@@@@@@%%%*++++++++++++++*********++++++++++++*****************************************************#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#***********************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****************************************************************************************************************************************************************************************%@@@@@@@@@@@@@@@@%*********%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######################################################********************************************************++++++++++++++++++++++++++++++++++++++++++**********************#%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#############################################################****************++*****************************************##################################################################################%%%%#################################################################################%%%%%%%###############################################################*++*++++++++++++++++**###########******#########*********#####%%%%%%%%%%%%%%%%%%%%%%%%%@@@@%%%%%%%%%%#####################################################*******++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*##################################################################################*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**##############################################################**++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*++++++++******############################%%%%%%%%%%%%%%%%%%%###############################################%@@@@@@@@@@@@@@@@@@%#############################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#%%%%%%%%%%%%%%%%%%#################%%%%%%%%%%%%%####
*****************************************************************************************************************************######################*****************##############******************************************************************************##########################*******************************************+++++++++++++++++++++++++++++++++++++++#%%@@@@@@@@@@@@@%%%*++++++++++++++*********++++++++++++*****************************************************#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***************************************************************************************************************************************************************************************%@@@@@@@@@@@@@@@@@#*********@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######################################################********************************************************++++++++++++++++++++++++++++++++++++++++++**********************%@%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#############################################################************+***++++*+*****************************************####################################################################################################################################################################%%%%%%%#############################################################***++++++++++++++++**###########*******####%###***********####%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%%%%%%%%%%%#####################################################*******++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*##################################################################################*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*###############################################################**++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*++++++++*****#############################%%%%%%%%%%%%%%%%%%%###############################################%@@@@@@@@@@@@@@@@@@%############################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##%%%%%%%%%%%%%%%%%%#################%%%%%%%%%%%%%####
*****************************************************************************************************************************######################****************###############******************************************************************************#########################*******************************************++++++++++++++++++++++++++++++++++++++++#%%@@@@@@@@@@@@@%%%*++++++++++++++**********+++++++++*******************************************************#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#*************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***************************************************************************************************************************************************************************************%@@@@@@@@@@@@@@@@%**********@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######################################################*********************************************************+++++++++++++++++++++++++++++++++++++++++*********************#%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%############################################################***************+++++++++++***************************************###################################################################################################################################################################%%%%%%%###########################################################***++++++++++++++**###########*******########*************####%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%%%%%%%%#####################################################********+++++++++++++++*******+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*##################################################################################*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*################################################################*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*+++++++*****##############################%%%%%%%%%%%%%%%%%%################################################@@@@@@@@@@@@@@@@@@@@%##########################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###%%%%%%%%%%%%%%%%%%%###############%%%%%%%%%%%%%%%%%%
*****************************************************************************************************************************######################****************###############*****************************************************************************##########################*******************************************++++++++++++++++++++++++++++++++++++++++#%%@@@@@@@@@@@@@%%%*++++++++++++++**********+++++++++*******************************************************#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#**************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**************************************************************************************************************************************************************************************#@@@@@@@@@@@@@@@@@#*********#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######################################################*********************************************************+++++++++++++++++++++++++++++++++++++++++*********************#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%############################################################****************+++++++++++******************************************################################################################################################################################################################%%%%%%%########################################################******+++++++++++**###########*******###%####***************####%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%#####################################################**********+++++++**************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*##################################################################################*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**################################################################*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*+++++++*****##############################%%%%%%%%%%%%%%%%%%################################################@@@@@@@@@@@@@@@@@@@@%#########################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###%%%%%%%%%%%%%%%%%%%%##############%%%%%%%%%%%%%%%%%%
*****************************************************************************************************************************######################****************###############*****************************************************************************##########################*******************************************++++++++++++++++++++++++++++++++++++++++#%%@@@@@@@@@@@@@%%%*++++++++++++++**********+++++++*********************************************************#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#***************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**************************************************************************************************************************************************************************************%@@@@@@@@@@@@@@@@@**********%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########################################################*********************************************************++++++++++++++++++++++++++++++++++++++++********************#%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#############################################################*******************+++++++++++*******++**********************************############################################################################################################################################################%%%%%%%%######################################################******+++++++++**###########******####%%###*****************####%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%#####################################################*******************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*##################################################################################*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#################################################################**++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**++++++*****################################%%%%%%%%%%%%%%%%#################################################@@@@@@@@@@@@@@@@@@@@%%########################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###%%%%%%%%%%%%%%%%%%%%%############%%%%%%%%%%%%%%%%%%%
*****************************************************************************************************************************#####################*****************###############*****************************************************************************##########################*******************************************++++++++++++++++++++++++++++++++++++++++#%%@@@@@@@@@@@@@%%%*++++++++++++++**********++++++**********************************************************#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#***************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*************************************************************************************************************************************************************************************#@@@@@@@@@@@@@@@@@#**********%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########################################################*********************************************************+++++++++++++++++++++++++++++++++++++++++*******************#%%%%%%%%%%%%%%%%%%%%%%%%%%%%#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##############################################################******************+++++++++++++++++++++++++********************************##########################################################################################################################################################%%%%%%%%%###################################################*********+++++*#######%###*****#####%%%##*******************#####%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%%%%%%%%%%%####################################################*********************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***********************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*##################################################################################*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**#################################################################**++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**+++++*****##################################%%%%%%%%%%%%%%##################################################@@@@@@@@@@@@@@@@@@@@%%########################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###############################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##%%%%%%%%%%%%%%%%%%%%%%%#########%%%%%%%%%%%%%%%%%%%%
*****************************************************************************************************************************#####################******************##############****************************************************************************###########################*******************************************++++++++++++++++++++++++++++++++++++++++#%%@@@@@@@@@@@@@%%%*++++++++++++++**********++**+***********************************************************#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#***************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*************************************************************************************************************************************************************************************%@@@@@@@@@@@@@%@@%***********@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#########################################################********************************************************+++++++++++++++++++++++++++++++++++++++++******************##%%%%%%%%%%%%%%%%%%%%%%%%%%%%###%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###############################################################*******************++++++++++++++++++++++++++++******************************#########################################################################################################################################################%%%%%%%%%##################################################******+++++**##%########****######%%####******************######%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@%%%%%%%%%%####################################################*********************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*##################################################################################*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**#################################################################**++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**+++++*****#########################*########%%%%%%%%%%%%####################################################@@@@@@@@@@@@@@@@@@@@@%#######################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#############################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
*****************************************************************************************************************************#####################******************#############*****************************************************************************###########################*******************************************++++++++++++++++++++++++++++++++++++++++#%%@@@@@@@@@@@@@%%%*++++++++++++++**********++**+***********************************************************#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#****************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++************************************************************************************************************************************************************************************%@@@@@@@@@@@@@@@@@#***********@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#########################################################*********************************************************++++++++++++++++++++++++++++++++++++++++*****************##%%%%%%%%%%%%%%%%%%%%%%%%%#########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#################################################################********************++++++++++++++++++++++++++++++*****************************########################################################################################################################################################%%%%%%%%%###############################################***********##%%##%#####**#############********************######%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@%%%%%%%%%%####################################################**********************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*##################################################################################*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**###################################################################*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**++++*****#########################**##########%%%%%%%%%#####################################################@@@@@@@@@@@@@@@@@@@@@%######################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%############################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
*****************************************************************************************************************************#####################******************#############*****************************************************************************###########################*******************************************++++++++++++++++++++++++++++++++++++++++#%%@@@@@@@@@@@@@%%%*+++++++++++++++*********+++++***********************************************************#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#*****************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++************************************************************************************************************************************************************************************%@@@@@@@@@@@@@@@@@***********#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##########################################################********************************************************++++++++++++++++++++++++++++++++++++++++*****************##%%%%%%%%%%%%%%%%%%%%%%%##############%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##################################################################********************++++++++++++++++++++++++++++++********************************#####################################################################################################################################################%%%%%%%%%#############################################********###%%%%%%####################**********************######%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@%%%%%%%%%%####################################################**********************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*##################################################################################*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*####################################################################*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**+++****###########################**########################################################################@@@@@@@@@@@@@@@@@@@@@%######################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##########################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
*****************************************************************************************************************************####################*******************#############*****************************************************************************###########################*******************************************++++++++++++++++++++++++++++++++++++++++#%%@@@@@@@@@@@@@%%%*+++++++++++++++*********++++++**********************************************************#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#******************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***********************************************************************************************************************************************************************************#@@@@@@@@@%@@@@@@@#***********#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###########################################################*******************************************************++++++++++++++++++++++++++++++++++++++++****************###%%%%%%%%%%%%%%%%%%%##%%##############%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###################################################################*********************++++++++++++++++++++++++++++++***********************************###################################################################################################################################################%%%%%%%%%##########################################******##%%%%%%%%%##################************************#######%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@%%%%%%%%%%####################################################**********************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*##################################################################################*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**####################################################################*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**++****############################**########################################################################@@@@@@@@@@@@@@@@@@@@@%######################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##########################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
******************************************************************************************************************************###################*******************#############****************************************************************************############################*********************************************+++++++++++++++++++++++++++++++++++++*#%%@@@@@@@@@@@@@%%%*+++++++++++++++********++++++***********************************************************#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%*******************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***********************************************************************************************************************************************************************************%@@@@@@@@%%@@@@@@%************%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#%%%%####%########################################################******************************************************+*++++++++++++++++++++++++++++++++++++++++**************####%@%%%%%%%%%%%%%%%####################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####################################################################************************+++++++++++++++++++++++++++++++********************************####################################################################################################################################################%%%%%%%%%#######################################*****#%%%%%%%%%%%####%%###########************************#########%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@%%%%%%%%###################################################***********************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*##################################################################################*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#####################################################################**++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***++***#############################**########################################################################%@@@@@@@@@@@@@@@@@@@@%%####################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
******************************************************************************************************************************##################********************############*****************************************************************************############################*********************************************+++++++++++++++++++++++++++++++++++++*#%%@@@@@@@@@@@@@%%%*+++++++++++++++********++++++***********************************************************#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%*********************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********************************************************************************************************************************************************************************#@@@@@@@@@%@@@@@@@%************@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####################################################################******************************************************++++++++++++++++++++++++++++++++++++++++**************####%@%%%%%%%%%%%%%%%######################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######################################################################************************++++++++++++++++++++++++++++++***********************************#################################################################################################################################################%%%%%%%%%%####################################**##%%%%%%%%%%%%#################*************************##########%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@%%%%%%%%###################################################***********************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*##################################################################################*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#####################################################################**++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********#############################*#########################################################################%@@@@@@@@@@@@@@@@@@@@%%####################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
*******************************************************************************************************************************#################********************############*****************************************************************************############################***********#**********************************++++++++++++++++++++++++++++++++++++*%%%@@@@@@@@@@@@@%%%*++++++++++++++++*******++++++***********************************************************#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%****************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********************************************************************************************************************************************************************************%@@@@@@@@%@@@@@@@@************#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######%%##############################################################***************************************#######*******++++++++++++++++++++++++++++++++++++++++*************####%%%%%%%%%%%%%%%%%########################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######################################################################*************************++++++++++++++++++++++++++++++++++++*******************************################################################################################################################################################%%%%%%%%%%##################################%%%%%%%%%%%%%%###############****************************###########%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@%%%%%%%%##################################################************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#################################################################################+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**#####################################################################**++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******########################################################################################################%@@@@@@@@@@@@@@@@@@@@%%###################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
********************************************************************************************************************************################********************############*****************************************************************************############################**********##**********************************++++++++++++++++++++++++++++++++++++*%%%@@@@@@@@@@@@@%%%*++++++++++++++++*******+++++++**********************************************************#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%*********************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********************************************************************************************************************************************************************************#@@@@@@@@@%@@@@@@@#************#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########%%%%################################################################################*********************************###########***+*++++++++++++++++++++++++++++++++++++++++*************####%@%%%%%%%%%%%%%%##########################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########################################################################*************************++++++++++++++++++++++++++++++++++++++++****************************################################################################################################################################################%%%%%%%%%%%%############################%%%%%%%%%%%%%%###############*****************************############%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@%%%%%%%%##################################################************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*################################################################################*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#######################################################################*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******#############################*##########################################################################%@@@@@@@@@@@@@@@@@@@@%%###################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
********************************************************************************************************************************###############*********************###########******************************************************************************############################**********##**********************************++++++++++++++++++++++++++++++++++++*%%%@@@@@@@@@@@@@%%%*++++++++++++++++*******+++++++++********************************************************#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%***********************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********************************************************************************************************************************************************************************%@@@@@@@@@%@@@@@@@*************%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#################################################################################################******************************######%#######**+*++++++++++++++++++++++++++++++++++++++++************#####%%%%%%%%%%%%%%############################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##########################################################################************************++++++++++++++++++++++++++++++++++++++++++**+++***********************################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######%%%%%%%%%%%%#####################************************##############%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@%%%%%%%%################################################**************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*###############################################################################*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**#######################################################################*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******########################################################################################################%@@@@@@@@@@@@@@@@@@@@@%###################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
*********************************************************************************************************************************##############*********************###########******************************************************************************###########################***********##************************************++++++++++++++++++++++++++++++++++*%%%@@@@@@@@@@@@@%%%*+++++++++++++++*******+++++++++++*******************************************************#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%*************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++*********************************************************************************************************************************************************************************#@@@@@@@@@%@@@@@@@#*************%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#########################################***##############################################################**********************####%%%%%#######***++++++++++++++++++++++++++++++++++++++++************####%%%%%%%%%%%%%%%#############################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###########################################################################*************************++++++++++++++++++++++++++++++++++++++++++++++++++++++******************##############################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####%%%%%%%%%######################************************#################%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@%%%%%%%%################################################**************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*##############################################################################*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*########################################################################*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******##############################*###########################################################################%@@@@@@@@@@@@@@@@@@@@@%##################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
**********************************************************************************************************************************############**********************###########******************************************************************************###########################***********##*************************************+++++++++++++++++++++++++++++++++*%%%@@@@@@@@@@@@@%%%*+++++++++++++++*******+++++++++++*******************************************************#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%**************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++*********************************************************************************************************************************************************************************%@@@@@@@@@%@@@@@@%**************@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########################################*****#####################################################################**#************####%%%%%%%######****++++++++++++++++++++++++++++++++++++++++**********#####%%%%%%%%%%%%%%%##############################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#############################################################################**************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****************############################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%##%%%%%%%##############################*****************####################%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@%%%%%%%%###############################################***************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++**************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*############################################################################*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**########################################################################*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*####*##############################*###########################################################################%@@@@@@@@@@@@@@@@@@@@@%##################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
***********************************************************************************************************************************###########**********************###########******************************************************************************###########################***********##*************************************+++++++++++++++++++++++++++++++++*%%%@@@@@@@@@@@@@%%%*+++++++++++++++*******++++++++++++******************************************************#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%****************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++********************************************************************************************************************************************************************************#@@@@@@@@@%@@@@@@@%*************#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######################################*******############################################################################*********##%%%%%%%%%######****++++++++++++++++++++++++++++++++++++++++**********#####%%%%%%%%%%%%%%%################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###############################################################################****************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++***************############################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##################################************##########################%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@%%%%%%%%##############################################***************************************++++++++++++++++++++++++++++++++++++++++++++++++*******************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*############################################################################*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#########################################################################*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*####*#########################%#%##############################################################################%%@@@@@@@@@@@@@@@@@@@%%##################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
*************************************************************************************************************************************########************************#########*******************************************************************************###########################***********##**************************************++++++++++++++++++++++++++++++++#%%@@@@@@@@@@@@@@@%%#+++++++++++++++*******++++++++++++******************************************************#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%****************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++********************************************************************************************************************************************************************************%@@@@@@@@@@@@@@@@@**************#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######################################*******###############################################################################*******###%%%%%%%%%%#####***+**++++++++++++++++++++++++++++++++++++*+*********#####%@%%%%%%%%%%%%%%##############################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##########################################################################****************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++****************##############################################################################################################################################%%%%%%%%%%%%%%%%%%%%##############################################**##############################%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@%%%%%%%#############################################****************************************+++++++++++++++++++++++++++++++++++++++++++**********************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*##########################################################################*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**#########################################################################**+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**##############################%###*#############################################################################%@@@@@@@@@@@@@@@@@@@%%##################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###%%%%%%%##################%%%###################%%%%%%%%##########################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
****************************************************************************************************************************************###**************************#########*******************************************************************************###########################**********###**************************************++++++++++++++++++++++++++++++++#%%@@@@@@@@@@@@@@@%%#+++++++++++++++*******+++++++++++++*****************************************************#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%*****************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++*******************************************************************************************************************************************************************************#@@@@@@@@@@@@@@@@@%**************%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####################################********#####################################################################################*###%%%%%%%%%%%######**+**++++++++++++++++++++++++++++++++++++++*********#####%%%%%%%%%%%%%%%%##############################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###########################################################################****************************+*+++++++++++++++++++++++++++++++++++++++++++++++++++++++****************##############################################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@%%%%%%%############################################****************************************++++++++++++++++++++++++++++++++++++++++++********************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*########################################################################*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**#########################################################################**+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*###############################%%################################################################################%@@@@@@@@@@@@@@@@@@%%##################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##%%%%%%%#################%%%%%##################%%%%%%%%##########################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
*********************************************************************************************************************************************************************########********************************************************************************###########################**********###**************************************++++++++++++++++++++++++++++++++#%%@@@@@@@@@@@@@@%%%#+++++++++++++++*******++++++++++++++****************************************************#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%*******************************************************************+++++++++++++++++++++++++++++++++++++++++++++++********************************************************************************************************************************************************************************%@@@@@@@@@@@@@@@@@***************%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####################################*********##########################################################################################%%%%%%%%%%%######**+**+*++++++++++++++++++++++++++++++++++++*********####%@%%%%%%%%%%%%%%%##############################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####################################################################**************************+**+++++++++++++++++++++++++++++++++++++++++++++++++++++++++****************###########################################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@%%%%%%%###########################################*****************************************+++++++++++++++++++++++++++++++++++++++*********************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*########################################################################*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*###########################################################################*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**###############################%%################################################################################%%@@@@@@@@@@@@@@@@@%%##################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#%%%%%%%%%################%%%%%##################%%%%%%%%##########################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
*********************************************************************************************************************************************************************########********************************************************************************###########################**********###**************************************+++++++++++++++++++++++++++++++*#%%@@@@@@@@@@@@@@%%%#+++++++++++++++*******++++++++++++++****************************************************#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%********************************************************************++++++++++++++++++++++++++++++++++++++++++++++*******************************************************************************************************************************************************************************#@@@@@@@@@@@@@@@@@%***************@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####################################****************###################################################################################%%%%%%%%%%%%######*****+*+*++++++++++++++++++++++++++++++++++********#####%@%%%%%%%%%%%%%%%##############################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######################################################################***************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++******************########################################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%@%%%%%%@@@@@@@@@@@%%%%%%%##########################################*****************************************+++++++++++++++++++++++++++++++++++++*******************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*######################################################################*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**###########################################################################*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**##############################%#%#################################################################################%%%@@@@@@@@@@@@@@@@%%##################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###############%%%%%##################%%%%%%%%##########################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
*********************************************************************************************************************************************************************########********************************************************************************###########################**********###***************************************++++++++++++++++++++++++++++++*#%%@@@@@@@@@@@@@@%%%#+++++++++++++++*******+++++++++++++++***************************************************#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#*********************************************************************+++++++++++++++++++++++++++++++++++++++++++++*******************************************************************************************************************************************************************************%@@@@@@@@@@@@@@@@@***************#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###################################*******************#################################################################################%%%%%%%%%%%%%%######******+*++++++++++++++++++++++++++++++++++********#####%%%%%%%%%%%%%%%%%%%%###########################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###################################################################***************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********************####################################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%@@@%%%@@@@@@@@@@@@%%%%%%%#########################################******************************************+++++++++++++++++++++++++++++++++++*******************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#####################################################################*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*############################################################################*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***##############################%#%##################################################################################%%@@@@@@@@@@@@@@@%%%#################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##############%%%%%%%#%%%%%%%%########%%%%%%%%##########################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
*********************************************************************************************************************************************************************#######*********************************************************************************###########################**********###***************************************++++++++++++++++++++++++++++++*#%%@@@@@@@@@@@@@@%%%#+++++++++++++++*******+++++++++++++++****************************************************@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#***********************************************************************+++++++++++++++++++++++++++++++++++++++++++******************************************************************************************************************************************************************************#@@@@@@@@@@@@@@@@@%***************#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#################################***++****************#################################################################################%%%%%%%%%%%%%%######******+*++++++++++++++++++++++++++++++++++********####%@%%%%%%%%%%%%%%%%%%%%%#########################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####################################################################**********************************+++++++++++++++++++++++++++++++++++++++++++++++++***********************################################################################################################################################################################################################################################%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@%%%%%%%########################################******************************************++++++++++++++++++++++++++++++++++*****************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*####################################################################*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*############################################################################*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***##############################%%%###################################################################################%%%@@@@@@@@@@@@@%%%##################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#############%%%%%%%%%%%%%%%%%######%%%%%%%%%%#########################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
*********************************************************************************************************************************************************************#######*********************************************************************************##########################***********###***************************************++++++++++++++++++++++++++++++*#%%@@@@@@@@@@@@@@@%%#+++++++++++++++*******+++++++++++++++****************************************************@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#************************************************************************++++++++++++++++++++++++++++++++++++++++++******************************************************************************************************************************************************************************%@@@@@@@@@@@@@@@@@***************#%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#################################**+++++****************###############################################################################%%%%%%%%%%%%%%%%#####******+*++++++++++++++++++++++++++++++++++*******#####%%%%%%%%%%%%%%%%%%%%%%##########################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%################################################################*************************************++++++++++++++++++++++++++++++++++++++++++++++**************************############################################################################################################################################################################################################################%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@%%%%%%%#######################################*******************************************+++++++++++++++++++++++++++++++**************************************+*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++###################################################################*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**############################################################################*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****#############################%%%%####################################################################################%%%%@@@@@@@@@%%%%%#################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#############%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
*********************************************************************************************************************************************************************#######*********************************************************************************#########################************###***************************************++++++++++++++++++++++++++++++*#%%@@@@@@@@@@@@@@@%%#+++++++++++++++*******++++++++++++++++***************************************************@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#************************************************************************++++++++++++++++++++++++++++++++++++++++++******************************************************************************************************************************************************************************@@@@@@@@@@@@@@@@@%***************#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#################################**+++++++***************###############################################################################%%%%%%%%%%%%%%%%#####******+*++++++++++++++++++++++++++++++++++*******#####%%%%%%%%%%%%%%%%%%%%%###########################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###############################################################*************************************++++++++++++++++++++++++++++++++++++++++++++++***************************#########################################################################################################################################################################################################################%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@%%%%%%%######################################********************************************+++++++++++++++++++++++++++++***************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*##################################################################++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#############################################################################*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****############################%%%%%#####################################################################################%%%%%%@@@@@%%%%%##################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#############%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##############################%#########################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
*********************************************************************************************************************************************************************######**********************************************************************************#########################************###****************************************+++++++++++++++++++++++++++++*#%%@@@@@@@@@@@@@@@%%#+++++++++++++++*******++++++++++++++++***************************************************@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#*************************************************************************++++++++++++++++++++++++++++++++++++++++******************************************************************************************************************************************************************************%@@@@@@@@@@@@@@@@@***************#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#################################**+++++++++***************#############################################################################%%%%%%%%%%%%%%%%%#####*********+++++++++++++++++++++++++++++++++******#####%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###############################################################************************************++++++++++++++++++++++++++++++++++++++++++++++++*****************************####################################################################################################################################################################################################################%%%%%%%%%%%%%%@@@@%@@@@@@@@@@@@@@@%@%%%%%%######################################********************************************+++++++++++++++++++++++++++*************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#################################################################*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**#############################################################################*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****+++++++++++++++++++++++++++++++++++++++++++++++++++++++++******###########################%#%%%%#######################################################################################%%%%%%%%%%%%%%###################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%############%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#########################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
*********************************************************************************************************************************************************************######**********************************************************************************#########################***********####*****************************************++++++++++++++++++++++++++++*#%%@@@@@@@@@@@@@@@%%#+++++++++++++++*******++++++++++++++++***************************************************@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#*************************************************************************++++++++++++++++++++++++++++++++++++++++******************************************************************************************************************************************************************************%@@@@@@@@@@@@@@@@#**************#@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%################################**+++++++++++**************#############################################################################%%%%%%%%%%%%%%%%%%####**********++++++++++++++++++++++++++++++++******#####%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#################################################################***********************************++++++++++++++++++++++++++++++++++++++++++++++++********************************################################################################################################################################################################################################################%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@%@%%%%%%#####################################*********************************************++++++++++++++++++++++++++************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*###############################################################*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**#############################################################################*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****++++++++++++++++++++++++++++++++++++++++++++++++++++++++******############################%%#%%#########################################################################################%%%%%%%%%%%%####################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##########################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
*********************************************************************************************************************************************************************######***********************************************************************************########################***********#####*****************************************+++++++++++++++++++++++++++*#%%@@@@@@@@@@@@@@@%%#+++++++++++++++*******+++++++++++++++++**************************************************@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#*************************************************************************++++++++++++++++++++++++++++++++++++++++*****************************************************************************************************************************************************************************%@@@@@@@@@@@@@@@@@***************%%#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%################################**+++++++++++++*************#############################################################################%%%%%%%%%%%%%%%%%%####************++++++++++++++++++++++++++++++******#####%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###################################################################***********************************+++++++++++++++++++++++++++++++++++++++++++++++++++********************************######%%%%%%%##############################################################################################################################################################################################%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@%@%%%%%%####################################**********************************************++++++++++++++++++++++++***********************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*##############################################################+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*##############################################################################*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****+++++++++++++++++++++++++++++++++++++++++++++++++++++++*******##########################%#%%%%###########################################################################################%%%%%%%%#######################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###########################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
*********************************************************************************************************************************************************************######***********************************************************************************#######################***********######******************************************++++++++++++++++++++++++++*#%%@@@@@@@@@@@@@@@%%#+++++++++++++++*******+++++++++++++++++**************************************************@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#**************************************************************************++++++++++++++++++++++++++++++++++++++******************************************************************************************************************************************************************************%@@@@@@@@@@@@@@@@#**************#@#%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%################################**+++++++++++++++*************############################################################################%%%%%%%%%%%%%%%%%%####****************++++++++++++++++++++++++++*****#####%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######%%%%###########################################################**********************************++++++++++++++++++++++++++++++++++++++++++++++++++++***********************************####%%%%%%############################################################################################################################################################################################%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@%%%%%%####################################**********************************************++++++++++++++++++++++**********************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#############################################################*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**##############################################################################*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****++++++++++++++++++++++++++++++++++++++++++++++++++++++******############################%%#%%%##########################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##########################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
*********************************************************************************************************************************************************************######***********************************************************************************#######################***********######******************************************++++++++++++++++++++++++++*#%%@@@@@@@@@@@@@@@%%#++++++++++++++********++++++++++++++++++*************************************************@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#**************************************************************************++++++++++++++++++++++++++++++++++++++*****************************************************************************************************************************************************************************#@@@@@@@@@@@@@@@@@**************#@%*%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###############################**+++++++++++++++++************############################################################################%%%%%%%%%%%%%%%%%%%###********************+++++++++++++++++++++++****#####%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####%%%%%%%%%%%%%%%%%################################################************************************++++++++++++++++++++++++++++++++++++++++++++++++++***************************************#######%%########################################################################################################################################################################################%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%###################################***********************************************+++++++++++++++++++**********************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*###########################################################*+++*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*###############################################################################*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******+++++++++++++++++++++++++++++++++++++++++++++++++++++*******###########################%#%%%%##########################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####################################################################%%%##%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
*********************************************************************************************************************************************************************######************************************************************************************######################***********######*********************************************+++++++++++++++++++++++*%%%@@@@@@@@@@@@@@@%%#++++++++++++++********++++++++++++++++++*************************************************%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#***************************************************************************++++++++++++++++++++++++++++++++++++******************************************************************************************************************************************************************************%@@@@@@@@@@@@@@@@#**************%@**@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###############################**++++++++++++++++++************############################################################################%%%%%%%%%%%%%%%%%%%###*********************++++++++++++++++++++++****####%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%################################################************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++**************************************#############################################################################################################################################################################################%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%##################################************************************************++++++++++++++++*********************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++##########################################################*+++**++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**###############################################################################*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****+++++++++++++++++++++++++++++++++++++++++++++++++++++********########%#################%%%%%%%#########################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##################################################################%%%%#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
*********************************************************************************************************************************************************************######************************************************************************************######################***********######***************************************************+++++++*+++++++++*%%%@@@@@@@@@@@@@@@%%#++++++++++++++********++++++++++++++++++*************************************************%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#***************************************************************************+++++++++++++++++++++++++++++++++++******************************************************************************************************************************************************************************#@@@@@@@@@@@@@@@@%**************#@#*#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##############################**++++++++++++++++++++***********############################################################################%%%%%%%%%%%%%%%%%%%%##*********************++++++++++++++++++++******####%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###############%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%################################################************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++****************************************########################################################################################################################################################################################%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%##################################************************************************++++++++++++++******************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#########################################################*+++**++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**###############################################################################*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****+++++++++++++++++++++++++++++++++++++++++++++++++++**********#####%%%%################%%%%%%%#########################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###%%###########################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
*********************************************************************************************************************************************************************######*************************************************************************************####################************######****************************************************++++++**++++++++*%%%@@@@@@@@@@@@@@@%%#++++++++++++++********++++++++++++++++++*************************************************%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#***************************************************************************++++++++++++++++++++++++++++++++++*******************************************************************************************************************************************************************************%@@@@@@@@@@@@@@@@#**************%@**%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##############################***+++++++++++++++++++++**********###########################################################################%%%%%%%%%%%%%%%%%%%%%##**********************+++++++++++++++++++*****#####%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###############%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##################################################**********************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********************************************#################################################################################################################################################################################%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%#################################*************************************************++++++++++******************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#######################################################*++++**++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*################################################################################*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***#*+++++++++++++++++++++++++++++++++++++++++++++++++++*******########%%%%###############%%%%%%%##########################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##########################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
*********************************************************************************************************************************************************************#####***************************************************************************************###################***********#######********************************************************++++++++++++*%%%@@@@@@@@@@@@@@@%%#++++++++++++++********++++++++++++++++++*************************************************%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%****************************************************************************+++++++++++++++++++++++++++++++++*******************************************************************************************************************************************************************************#@@@@@@@@@@@@@@@@@**************#@#**%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#############################***++++++++++++++++++++++***********##########################################################################%%%%%%%%%%%%%%%%%%%%%%#**********************++++++++++++++++++++****####%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#%%%%%%###############%%#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##################################################**********************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*************************************************#########################################################################################################################################################################%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@%@%%%%################################**************************************************+++++++******************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++######################################################*++++***+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**################################################################################*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#***+++++++++++++++++++++++++++++++++++++++++++++++++*********##*#####%%%%##############%%%%%%%############################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
*********************************************************************************************************************************************************************#####***************************************************************************************###################***********#######********************************************************++++++++++++*%%%@@@@@@@@@@@@@@@%%#++++++++++++++********++++++++++++++++++*************************************************%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%****************************************************************************++++++++++++++++++++++++++++++++********************************************************************************************************************************************************************************%@@@@@@@@@@@@@@@@#**************%@***@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##########################*****++++++++++++++++++++++++**********##########################################################################%%%%%%%%%%%%%%%%%%%%%%#**********************++++++++++++++++++++****####%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#%%%%%%%##############%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###################################################*********************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****************************************************##################################################################################################################################################################%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@%%%%################################**************************************************+++********************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#####################################################*++++***+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**################################################################################*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#***++++++++++++++++++++++++++++++++++++++++++++++++********#########%%%%%###############%%%#%#############################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
*********************************************************************************************************************************************************************#####****************************************************************************************##################***********#######********************************************************++++++++++++*%%%@@@@@@@@@@@@@@@%%#++++++++++++++********+++++++++++++++++++************************************************%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%****************************************************************************++++++++++++++++++++++++++++++++******************************************************************************************************************************************************************************+#@@@@@@@@@@@@@@@@@**************#@#*##@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######################*******+++++++++++++++++++++++++**********##########################################################################%%%%%%%%%%%%%%%%%%%%%%#*********************+++++++++++++++++++*+****###%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##############%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#################################################**********************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**************************************++++++++*********##########################################################################################################################################################%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@%%%%##############################*************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*###################################################*+++++***+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**################################################################################**+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#***+++++++++++++++++++++++++++++++++++++++++++++++********##########%%%%%#############%%%%%%%#############################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
*********************************************************************************************************************************************************************#####*****************************************************************************************#################***********#######********************************************************++++++++++++*%%@@@@@@@@@@@@@@@@%%#++++++++++++++********+++++++++++++++++++************************************************%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%****************************************************************************+++++++++++++++++++++++++++++++********************************************************************************************************************************************************************************%@@@@@@@@@@@@@@@@#**************%@*%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######################********++++++++++++++++++++++++++*********##########################################################################%%%%%%%%%%%%%%%%%%%%%%#********************++++++++++++++++++++******###%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##################################################**********************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****************************+++++++++++++++++*********###################################################################################################################################################%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@%%%%##############################*****************************************************####************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*##################################################*++++++***++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**#################################################################################**+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#***+++++++++++++++++++++++++++++++++++++++++++++**********#########%%%%%%#############%%%#%%##*###########################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
*********************************************************************************************************************************************####********************#####******************************************************************************************################***********#######********************************************************++++++++++++*%%@@@@@@@@@@@@@@@@%%#++++++++++++++********+++++++++++++++++++************************************************%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%****************************************************************************++++++++++++++++++++++++++++++*********************************************************************************************************************************************************************************%@@@@@@@@@@@@@@@@**************#@##@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####################*********+++++++++++++++++++++++++++**********#########################################################################%%%%%%%%%%@@%%%%%%%%%%#********************++++++++++++++++++++******###%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#################################################**********************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********************+++++++++++++++++++++++++********##############################################################################################################################################%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@%%%%##############################************************************************###########********************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*################################################*+++++++***++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*##################################################################################*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**#***++++++++++++++++++++++++++++++++++++++++++++***********#########%%%%%%############%%%%%%%##############################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########%%%%%%%%%%%%%%#####################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
******************************************************************************************************************************************#########******************#####*******************************************************************************************##############************#######********************************************************++++++++++++*%%@@@@@@@@@@@@@@@@%%#++++++++++++++********+++++++++++++++++++************************************************%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%****************************************************************************+++++++++++++++++++++++++++++*********************************************************************************************************************************************************************************#@@@@@@@@@@@@@@@@#**************%@*%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####################**********++++++++++++++++++++++++++++*********#########################################################################%%%%%%%%%@@@@%%%%%%%%%#*********************++++++++++++++++***+*****##%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###################################################**********************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******************++++++++++++++++++++++++++++++**********########################################################################################################################################%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@%%%%##############################********************************************###############*****************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*###############################################*++++++****+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**##################################################################################*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******+++++++++++++++++++++++++++++++++++++++++++***********#########%%%%%%%%#########%#%%#%%################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
*****************************************************************************************************************************************###########*****************#####********************************************************************************************#############************#######********************************************************++++++++++++*%%@@@@@@@@@@@@@@@@%%#++++++++++++++********+++++++++++++++++++************************************************%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#****************************************************************************+++++++++++++++++++++++++++++*********************************************************************************************************************************************************************************%@@@@@@@@@@@@@@@%**************#@%#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%################*************+++++++++++++++++++++++++++++*********#########################################################################%%%%%%%%%@@@@@%%%%%%%%#**********************+++++++++++++*********#*##%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####################################################***********************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***************++++++++++++++++++++++++++++++++++++++********###################################################################################################################################%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@%%%%#############################********************************###***####################*#*************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**#############################################*+++++++****+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**##################################################################################*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******++++++++++++++++++++++++++++++++++++++++++***********##########%%%%%%%%#########%#%%%%%################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
****************************************************************************************************************************************#############****************#####**********************************************************************************************###########************#######********************************************************++++++++++++*%%@@@@@@@@@@@@@@@@%%#++++++++++++++********++++++++++++++++++++***********************************************%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#****************************************************************************+++++++++++++++++++++++++++++********************************************************************************************************************************************************************************#@@@@@@@@@@@@@@@@#**************%@#%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##############***************+++++++++++++++++++++++++++++*********#########################################################################%%%%%%%%%@@@@@%%%%%%%%#**********************+++++++++++++*********#*#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####################################################*********************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***********+++++++++++++++++++++++++++++++++++++++++++********###############################################################################################################################%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@%%%%############################*******************************###############################************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**###########################################*++++++++****+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*###################################################################################**++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******+++++++++++++++++++++++++++++++++++++++++************##########%%%%%%%%########%%%#%%%#######################%%########################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
***************************************************************************************************************************************###############****************####***********************************************************************************************##########************#######*******************************************************+++++++++++++#%%@@@@@@@@@@@@@@@@@%#+++++++++++++*********++++++++++++++++++++***********************************************%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#****************************************************************************++++++++++++++++++++++***************************************************************************************************************************************************************************************%@@@@@@@@@@@@@@@@**************%@%#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%############*****************++++++++++++++++++++++++++++++********##########################################################################%%%%%%%@@@@@@@@%%%%%%#************************++++++++*************##%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###################################################************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*++++++++++++++++++++++++++++++++++++++++++++++++++++******###########################################################################################################################%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%#############################***************************##################################**********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**#########################################*+++++++++***+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**###################################################################################**++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**#***++++++++++++++++++++++++++++++++++++++++************##########%%%%%%%%%########%%##%%##*###################%%%%%%#######################################################################################################################################################%##############################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#########################%%%%%%%%####################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
***************************************************************************************************************************************###############****************####************************************************************************************************#########***********########*******************************************************+++++++++++++#%%@@@@@@@@@@@@@@@@@%#+++++++++++++*********++++++++++++++++++++***********************************************#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#****************************************************************************++++++++++++++++++++++**************************************************************************************************************************************************************************************#@@@@@@@@@@@@@@@@#*************#@@%#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%############*****************+++++++++++++++++++++++++++++++*******##########################################################################%%%%%%%@@@@@@@@%%%%%%##***********************++++++***+***+*******#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####################################################**************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****#######################################################################################################################%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%#############################***************************#################################**********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**#######################################*+++++++++***+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**###################################################################################**++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**#***+++++++++++++++++++++++++++++++++++++++*************##########%%%%%%%%%#######%%#%%%######################%%%%%%%%%#################################################################################################################################################%##%%##############################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######################%%%%%%%%%%%%%################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
**************************************************************************************************************************************#################***************###**************************************************************************************************########***********########********************************************************+++++++++++*#%%@@@@@@@@@@@@@@@@@%#*++++++++++++*********++++++++++++++++++++***********************************************#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#****************************************************************************++++++++++++++++++++++**************************************************************************************************************************************************************************************%@@@@@@@@@@@@@@@%**************%@@#%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%############*****************++++++++++++++++++++++++++++++++*******#########################################################################%%%%%%%@@@@@@@@%%%%%%##*************************++*****++**+******##%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####################################################***************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******##################################################################################################################%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@%@%%%%%%#############################************************###################################*******+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***####################################*++++++++++***+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*####################################################################################**++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**#***++++++++++++++++++++++++++++++++++++++*************##########%%%%%%%%%%######%%%%%%##*###################%%%%%%%%%%%################################################################################################################################################%#%%%##############################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###%########%%%%%%####%%%%%%%%%%%%%################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
**************************************************************************************************************************************##################**************###***************************************************************************************************######************########*********************************************************++++++++++*#%%@@@@@@@@@@@@@@@@@%#*++++++++++++*********++++++++++++++++++++***********************************************#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#****************************************************************************+++++++++++++++++++****************************************************************************************************************************************************************************************#@@@@@@@@@@@@@@@@%*************#@@@#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%############****************+++++++++++++++++++++++++++++++++*******#########################################################################%%%%%%%%@@@@@@@%%%%%%##*******************************************#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####################################################**************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****##############################################################################################################%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@%@%%%%%%#############################*******************######################################*********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**##################################*+++++++++++***+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*####################################################################################**++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**#***+++++++++++++++++++++++++++++++++++++*************###########%%%%%%%%%%#####%%##%%######################%%%%%%%%%%%%##################################################################################################################################################%%%##############################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#%%%#####%%%%%%%%%%%%%%%%%%%%%%%%################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
**************************************************************************************************************************************##################**************##*****************************************************************************************************##*##************########**********************************************************+++++++++*#%%@@@@@@@@@@@@@@@@@%#*++++++++++++*********++++++++++++++++++++***********************************************#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#****************************************************************************+++++++++++++++++++****************************************************************************************************************************************************************************************%@@@@@@@@@@@@@@@@**************%@@%#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##########*****************++++++++++++++++++++++++++++++++++******#########################################################################%%%%%%%%@@@@@@@@%%%%%##**************************+******+********#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####################################################************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******#########################################################################################################%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%##############################****************#######################################*********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**###############################*++++++++++++***++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**####################################################################################**++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**#***++++++++++++++++++++++++++++++++++++*************############%%%%%%%%%%######%%%%##*####################%%%%%%%%%%%%%################################################################################################################################################%%%###############################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##%%%%%%%%%%%%%%%%%%%%%%%%################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
*************************************************************************************************************************************###################**************##**********************************************************************************************************************########**********************************************************+++++++++*#%%@@@@@@@@@@@@@@@@@%#*++++++++++++**********+++++++++++++++++++***********************************************#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#****************************************************************************+++++++++++++++++++****************************************************************************************************************************************************************************************@@@@@@@@@@@@@@@@%+************#@@@#%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#########*#****************+++++++++++++++++++++++++++++++++++******#########################################################################%%%%%%%%@@@@@@@@%%%%%##****************************************#*#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###################################################*************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********##################################################################################################%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%###############################***************#####################################***********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#############################**++++++++++++***++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#####################################################################################**++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**#***+++++++++++++++++++++++++++++++++++*************############%%%%%%%%%%%###%%##%%#######################%%%%%%%%%%%%%%###############################################################################################################################################%%@%%##############################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
*************************************************************************************************************************************###################**************##**********************************************************************************************************************########***********************************************************++++++++*#%%@@@@@@@@@@@@@@@@@%#*++++++++++++**********+++++++++++++++++++************************************************@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#****************************************************************************+++++++++++++++++++***************************************************************************************************************************************************************************************#@@@@@@@@@@@@@@@@*+************%@@@#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#########*#****************++++++++++++++++++++++++++++++++++++*****##########################################################################%%%%%%%@@@@@@@@%%%%%##****************************************##%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######################################################***********************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********#***##########################################################################################%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%###################################********#######################################**************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**###########################*+++++++++++++***+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**#####################################################################################**++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**#***+++++++++++++++++++++++++++++++++**************#############%%%%%%%%%%%###%%#%%##*#####################%%%%%%%%%%%%%%##############################################################################################################################################%%@@%%##############################%%##%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
*************************************************************************************************************************************###################**************##**********************************************************************************************************************########************************************************************+++++++*#%%@@@@@@@@@@@@@@@@@%#*++++++++++++**********+++++++++++++++++++************************************************@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%*****************************************************************************+++++++++++++++++++***************************************************************************************************************************************************************************************%@@@@@@@@@@@@@@@%+*************@@@##@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###########****************++++++++++++++++++++++++++++++++++++*****##########################################################################%%%%%%%@@@@@@@@%%%%%##**************************************###%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######################################################************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***********########################################################################################%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%####################################****########################################****************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#########################*++++++++++++++***+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**#####################################################################################**++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**#***+++++++++++++++++++++++++++++++++**************#############%%%%%%%%%%%##%##%%##*######################%%%%%%%%%%%%%%#############################################################################################################################################%%@@@%%##############################%%##%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
*************************************************************************************************************************************###################**************************************************************************************************************************************########**************************************************************+++++*#%@@@@@@@@@@@@@@@@@@%%*++++++++++++**********+++++++++++++++++++************************************************@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%*****************************************************************************+++++++++++++++++****************************************************************************************************************************************************************************************#@@@@@@@@@@@@@@@@**************%@@@*%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##########*****************++++++++++++++++++++++++++++++++++++*****##########################################################################%%%%%%@@@@@@@@@@%%%%###*************************************###%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######################################################**************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***************#################################################################################%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%##############################################################################********************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**######################*+++++++++++++++**++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*######################################################################################**++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**#***+++++++++++++++++++++++++++++++****************#############%%%%%%%%%%%#%%#%%##*#######################%%%%%%%%%%%%%%#############################################################################################################################################%@@@@@%########################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
*************************************************************************************************************************************###################**************************************************************************************************************************************########***************************************************************+++**#%@@@@@@@@@@@@@@@@@@%%*++++++++++++**********++++++++++++++++++*************************************************@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%*****************************************************************************+++++++++++++++++****************************************************************************************************************************************************************************************%@@@@@@@@@@@@@@@%**************@@@%#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##########****************++++++++++++++++++++++++++++++++++++++*****#########################################################################%%%%%%@@@@@@@@@@%%%%###************************************###%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######################################################**************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****************##############################################################################%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%###################################*########################################**********************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**####################*+++++++++++++++++*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**#######################################################################################*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**#***+++++++++++++++++++++++++++++++***************#############%%%%%%%%%%%%%##%%##**#######################%%%%%%%%%%%%%%############################################################################################################################################%@@@@@@%#%######################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
**************************************************************************************************************************************##################**************************************************************************************************************************************########****************************************************************++**#%@@@@@@@@@@@@@@@@@@%%*++++++++++++**********++++++++++++++++++*************************************************@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%*****************************************************************************+++++++++++++++++***************************************************************************************************************************************************************************************#@@@@@@@@@@@@@@@@#+************%@@@*%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##########****************+++++++++++++++++++++++++++++++++++++++****#########################################################################%%%%%%@@@@@@@@@@%%%%###************************************##%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########################################################**************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*************#**############################################################################%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%##########################################################################*************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*##################**+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**#######################################################################################***++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**#***++++++++++++++++++++++++++++++***************##############%%%%%%%%%%%%##%%##**########################%%%%%%%%%%%%%%%###################################################################################################################%%%%%%%%%%%%%%%%#######%%@@@@@@%#%%###############################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###############%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
**************************************************************************************************************************************##################**************************************************************************************************************************************########********************************************************************#%@@@@@@@@@@@@@@@@@@%%*++++++++++++**********+++++++++++++++++++************************************************@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%*****************************************************************************+++++++++++++++*****************************************************************************************************************************************************************************************%@@@@@@@@@@@@@@@%**************@@@%*%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###########***************+++++++++++++++++++++++++++++++++++++++++***#########################################################################%%%%%%%@@@@@@@@@@%%%#####*********************************##%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#########################################################***************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***************#########################################################################%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%########################################################################****************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**################+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*########################################################################################****+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**#***+++++++++++++++++++++++++++++***************###############%%%%%%%%%%%%#%%##*#########################%%%%%%%%%%%%%%%%#################################################################################################################%%%%%%%%%%%%%%%%%%%%####%%@@@@@@@%%#%###############################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##############%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
**************************************************************************************************************************************##################**************************************************************************************************************************************########********************************************************************%%@@@@@@@@@@@@@@@@@@%%*++++++++++++**********+++++++++++++++++++************************************************%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#*****************************************************************************++++++++++++++***********************************************************************************************##****************************************************************************************#@@@@@@@@@@@@@@@@*************+%@@@%#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###########***************+++++++++++++++++++++++++++++++++++++++++***#########################################################################%%%%%%%@@@@@@@@@@%%%######*******************************##%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########################################################*************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****************####################################################################%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%######################################################################*******************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*##############*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**##############%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########################################****++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******++++++++++++++++++++++++++++***************################%%%%%%%%%%%%####**#**######################%%%%%%%%%%%%%%%%###############################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%##%%@@@@@@@@%################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##############%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
**************************************************************************************************************************************###################**************************************************************************************************************************************#######********************************************************************%%%@@@@@@@@@@@@@@@@@%%#++++++++++++**********+++++++++++++++++++************************************************%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#*****************************************************************************++++++++++++++***********************************************************************************************##****************************************************************************************%@@@@@@@@@@@@@@%#**************@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###########***************+++++++++++++++++++++++++++++++++++++++++***##########################################################################%%%%%%@@@@@@@@@@%%%######******************************###%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######################################################**************************************++++++++++++++++++++**++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****************##################################################################%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%####################################################################***********************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**###########*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**###########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#############################*****+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******+++++++++++++++++++++++++++****************###############%%%%%%%%@%%%%###*****#######################%%%%%%%%%%%%%%%%##############################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@%####%###########################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#############%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
**************************************************************************************************************************************###################**************************************************************************************************************************************#######*******************************************************************#%%%@@@@@@@@@@@@@@@@@%%#++*+++++++++**********++++++++++++++++++++***********************************************%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#*****************************************************************************+++++++++++++***********************************************************************************************###****************************************************************************************%@@@@@@@@@@@@@@#**************%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@%%%%%%%%%@@@%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###########**************++++++++++++++++++++++++++++++++++++++++++***##########################################################################%%%%%%@@@@@@@@@@%%%#########**************************###%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########################################################**************************************+++++++++++++++++****+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**++++**********************############################################################%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%##################################################################**************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**#########*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*###########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######################*******+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******++++++++++++++++++++++++++***************#################%%%%%%%%@%%%###****#########################%%%%%%%%%%%%%%%%############################################################################################################%%%%%%%%%@@@@@@@@@@@@@@%%%%%%@@@@@@@@@@%%#%#%#############################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##############%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
***************************************************************************************************************************************##################**************************************************************************************************************************************######********************************************************************#%%%@@@@@@@@@@@@@@@@@%%#++*+++++++++**********+++++++++++++++++++++**********************************************%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#******************************************************************************++++++++++++***********************************************************************************************####**************************************************************************************#@@@@@@@@@@@@@@%***************@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@%%%%%%%%%%@@@@%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###########**************++++++++++++++++++++++++++++++++++++++++++*****########################################################################%%%%%%@@@@@@@@@@%%%#########**************************##%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#########################################################****************************************++++++++++++*********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***+*********************#########################################################%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%################################################################*****************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#######*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**###########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###################******++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******+++++++++++++++++++++++++***************##################%%%%%%%@%%%%##****##*#######################%%%%%%%%%%%%%%%%###########################################################################################################%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#%#%###############################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##############%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
****************************************************************************************************************************************################****************************************************************************************************************************************####*********************************************************************#%%@@@@@@@@@@@@@@@@@@%%#++++++++++++**********+++++++++++++++++++++**********************************************#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#******************************************************************************++++++++++************************************************************************************************#####**************************************************************************************%@@@@@@@@@@@@@@***************#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@%%%%%%%%%@@%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%############*************++++++++++++++++++++++++++++++++++++++++++*****########################################################################%%%%%%%@@@@@@@@%%%%##########************************##%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########################################################********************************************+++++*********************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****************************####################################################%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%###############################################################********************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*######+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*###########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###############******++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****++++++++++++++++++++++++***************##################%%%%%%%%@%%%%#*****##########################%%%%%%%%%%%%%%%%##########################################################################################################%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#%##########################%%####################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%############%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
****************************************************************************************************************************************################******************************************************************************************************************************************##*********************************************************************#%%@@@@@@@@@@@@@@@@@@%%#++++++++++++**********++++++++++++++++++++++*********************************************#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#******************************************************************************++++++++++************************************************************************************************#####*************************************************************************************#@@@@@@@@@@@@@@#***************%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@%%%%%%%%%@@%%%%%@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###########**************++++++++++++++++++++++++++++++++++++++++++*****#########################################################################%%%%%%@@@@@@@@%%%%###########**********************##%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#########################################################*********************************************+++*****************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****************************#################################################%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%##############################################################**********************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**##**+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*###########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%################******+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****+++++++++++++++++++++++***************###################%%%%%%%%%%%%##*****##########################%%%%%%%%%%%%%%%%#########################################################################################################%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%###########################%%%####################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%############%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
****************************************************************************************************************************************################*****************************************************************************************************************************************************************************************************************#%%@@@@@@@@@@@@@@@@@@%%#++++++++++++**********+++++++++++++++++++++++********************************************#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#*******************************************************************************+++++++++************************************************************************************************#####*************************************************************************************%@@@@@@@@@@@@@@***************#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###########**************++++++++++++++++++++++++++++++++++++++++++******########################################################################%%%%%%%@@@@@@@%%%%###########**********************#%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#########################################################*******************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******************************###############################################%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%###########################################################***************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**#########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%################*****++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******++++++++++++++++++++++***************####################%%%%%@%%%%%%#*****###########################%%%%%%%%%%%%%%%%########################################################################################################%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#%#######################%%%%#%%%%%%#############%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%############%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
*****************************************************************************************************************************************###############*****************************************************************************************************************************************************************************************************************#%%@@@@@@@@@@@@@@@@@@%%#++++++++++++**********++++++++++++++++++++++++*******************************************#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%*********************************************************************************++++++**************************************************************************************************#####************************************************************************************#%@@@@@@@@@@@@@#***************%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%@@@@@@@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###########**************++++++++++++++++++++++++++++++++++++++++++******########################################################################%%%%%%%@@@@@@@@%%%############********************#%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#########################################################**********************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****+************************#############################################%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%###########################################################*****************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###############*****++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****+++++++++++++++++++++***************#####################%%%%@@%%%%%%#*****###########################%%%%%%%%%%%%%%%%#######################################################################################################%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#%%####################%%%%%%%%%%%%%%%%%########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##%%%######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
*******************************************************************************************************************************************#############*****************************************************************************************************************************************************************************************************************#%%@@@@@@@@@@@@@@@@@@%%#++++++++++++**********+++++++++++++++++++++++++*******************************************@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%*****************************************************************************************************************************************************************************************#####************************************************************************************%@@@@@@@@@@@@@%***************#@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%@@@@@@@@@@@%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###########**************++++++++++++++++++++++++++++++++++++++++++*******########################################################################%%%%%%@@@@@@@@%%%##############*****************##%@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#########################################################*********************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****************************########################################%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%###########################################################******************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%################*****+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****++++++++++++++++++++**************######################%%%%%%%%%%%%%#*****###########################%%%%%%%%%%%%%%%%######################################################################################################%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#%%##################%%%%%%%%%%%%%%%%%%%%%#####%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
********************************************************************************************************************************************###########******************************************************************************************************************************************************************************************************************#%%@@@@@@@@@@@@@@@@@@%%#***+*++++++***********++++++++++++++++++++++++++******************************************@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%*****************************************************************************************************************************************************************************************######***********************************************************************************%@@@@@@@@@@@@@#***************%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%@@@@@@@@@@@%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###########**************++++++++++++++++++++++++++++++++++++++++++********#######################################################################%%%%%%@@@@@@@@%%%################***********#***#%%@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##########################################################*********************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****************************#######################################%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%###########################################################********************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#################*****++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****+++++++++++++++++++*************########################%%%%%%%%%%%%%#*****###########################%%%%%%%%%%%%%%%%######################################################################################################%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%##%##################%%%%%%%%%%%%%%%%%%%%%%%%##%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
*********************************************************************************************************************************************##########******************************************************************************************************************************************************************************************************************#%%@@@@@@@@@@@@@@@@@@%%#***+*++++++***********++++++++++++++++++++++++++******************************************%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%*****************************************************************************************************************************************************************************************######**********************************************************************************#@@@@@@@@@@@@@%***************#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%@@@@@@@@@%%%%@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#########***************++++++++++++++++++++++++++++++++++++++++++********########################################################################%%%%%%@@@@@@@%%%#####################*****##**#%%@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##########################################################*********************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********************************#################################%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%##########################################################**********************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##################****+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****++++++++++++++++++**************#########################%%%%%%%%%%%%%##***############################%%%%%%%%%%%%%%%%%####################################################################################################%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%####################%%%%%%%%%%%%%%%%%%%%%%%%#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
**********************************************************************************************************************************************#########********************************************************************************************************************************************#*********************************************************************#%%@@@@@@@@@@@@@@@@@@%%#***+*++++++***********+++++++++++++++++++++++++++*****************************************%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%*****************************************************************************************************************************************************************************************######**********************************************************************************%@@@@@@@@@@@@@#***************%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@%%%%%%%%%%%%@@@@@%@@@@%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#########***************++++++++++++++++++++++++++++++++++++++++++*********#######################################################################%%%%%%@@@@@@@%%%###########################**##%%@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#########################################################********************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***********************************###########################%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%#########################################################***********************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##################*****++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****++++++++++++++++++*************#########################%%%%%%%%%%%%%%###**############################%%%%%%%%%%%%%%%%%####################################################################################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%####################%%%%%%%%%%%%%%%%%%%%%%%%#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
**********************************************************************************************************************************************##########*****************************************************************************************************************************************************************************************************************#%%@@@@@@@@@@@@@@@@@@%%#***+*+++++++**********+++++++++++++++++++++++++++++***************************************%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#*****************************************************************************************************************************************************************************************######*********************************************************************************#@@@@@@@@@@@@@%****************@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@%%%%%%%%%@@@@@@@@%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#########**************+++++++++++++++++++++++++++++++++++++++++++*********########################################################################%%%%%@@@@@@%%%%#########################*#*##%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######################################################*********************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*************************************######################%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%#######################################################**************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**####%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##################****++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****++++++++++++++++**************##########################%%%%%%%%%%%%%##**##############################%%%%%%%%%%%%%%%%%###################################################################################################%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%##%################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
**********************************************************************************************************************************************##########*****************************************************************************************************************************************************************************************************************#%%@@@@@@@@@@@@@@@@@@%%#***+*++++++***********++++++++++++++++++++++++++++++**************************************%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#*****************************************************************************************************************************************************************************************######*********************************************************************************%@@@@@@@@@@@@@#***************%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#########**************+++++++++++++++++++++++++++++++++++++++++++**********#######################################################################%%%%%%@@@@@%%%%##########################*##%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########################################################********************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*************************************##################%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%###%%%################################################***************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#####%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###################****+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****+++++++++++++++**************###########################%%%%%%%%%%%%%##**##############################%%%%%%%%%%%%%%%%%##################################################################################################%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%##################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
********************************************************************************************************************************************############*****************************************************************************************************************************************************************************************************************#%%@@@@@@@@@@@@@@@@@@%%#***+*++++++***********+++++++++++++++++++++++++++++++*************************************%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#*****************************************************************************************************************************************************************************************######********************************************************************************#@@@@@@@@@@@@@%****************@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#########*************++++++++++++++++++++++++++++++++++++++++++++**********########################################################################%%%%%@@@@@%%%%##########################*##%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#########################################################**********************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**************************************###############%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%#################################################***************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**####%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####################***+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****+++++++++++++***************############################%%%%%%%%%%%%%##*###############################%%%%%%%%%%%%%%%%%##################################################################################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
******************************************************************************************************************************************##############*****************************************************************************************************************************************************************************************************************#%%@@@@@@@@@@@@@@@@@@%%#***+*++***************++++++++++++++++++++++++++++++++++**********************************#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#*****************************************************************************************************************************************************************************************######********************************************************************************%@@@@@@@@@@@@@#***************%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#########*************++++++++++++++++++++++++++++++++++++++++++++***********########################################################################%%%%@@@@@%%%%############################%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#########################################################*********************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**************************************#############%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%#################################################****************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*####%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####################****++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****++++++++++++**************###############################%%%%%%%%%%%%#*################################%%%%%%%%%%%%%%%%%#################################################################################################%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
*****************************************************************************************************************************************###############*****************************************************************************************************************************************************************************************************************#%%@@@@@@@@@@@@@@@@@@%%#***+******************+++++++++++++++++++++++++++++++++++*********************************#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#*****************************************************************************************************************************************************************************************######*******************************************************************************#@@@@@@@@@@@@@%***************#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########**************++++++++++++++++++++++++++++++++++++++++++++***********########################################################################%%%%%@@@@%%%%############################%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##########################################################********************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++************************************############%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%##################################################*******************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*###%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######################***++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***++++++++++**************###############################*#%%%%%%%%%%%%#*################################%%%%%%%%%%%%%%%%%#################################################################################################%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
*************************************************************************************************************************************###################*****************************************************************************************************************************************************************************************************************#%%@@@@@@@@@@@@@@@@@@%%#***+******************+++++++++++++++++++++++++++++++++++*********************************#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#*****************************************************************************************************************************************************************************************######*******************************************************************************%@@@@@@@@@@@@@#***************%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########*************++++++++++++++++++++++++++++++++++++++++++++************#########################################################################%%%%@@@@%%%%###########################%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###########################################################******************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********************************###########%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%#################################################*#*******************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***###%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######################**++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**++++++++++**************###############################**#%%%%%%%%%%%%#*################################%%%%%%%%%%%%%%%%%###########################################################################################%#####%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
************************************************************************************************************************************####################*****************************************************************************************************************************************************************************************************************#%%@@@@@@@@@@@@@@@@@@%%#*******+**************+++++++++++++++++++++++++++++++++++**********************************@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#*******************************************************************************************************++********************************************************************************######******************************************************************************#@@@@@@@@@@@@@%***************#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########*************++++++++++++++++++++++++++++++++++++++++++++*************#########################################################################%%%%%%@%%%%###########################%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###########################################################*****************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******************************##########%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%####################################################*##*******************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**###%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######################***+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**++++++++**************###############################***#%%%%%%%%%%%%%#*################################%%%%%%%%%%%%%%%%%###########################################################################################%####%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
***********************************************************************************************************************************#####################*******************************************************************************************************************************************#*********************************************************************#%%@@@@@@@@@@@@@@@@@@%%#*******+++************++++++++++++++++++++++++++++++++++++*********************************@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%******************************************************************************************++++****+++++++++++++***************************************************************************######******************************************************************************%@@@@@@@@@@@@@****************%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########*************++++++++++++++++++++++++++++++++++++++++++++*************##########################################################################%%%%%%%%%###########################%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%############################################################**************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****************************########%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%####################################################*##*******************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****###%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######################**+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**++++++***************###############################****#%%%%%%%%%%%%##*###############################%%%%%%%%%%%%%%%%%%###########################################################################################%##%#%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%###############%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
***********************************************************************************************************************************#####################*******************************************************************************************************************************************#*********************************************************************#%%@@@@@@@@@@@@@@@@@@%%#********+++***********+++++++++++++++++++++++++++++++++++++********************************%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%*****************************************************************************************+**++++++++++++++++++++++************************************************************************######*****************************************************************************#@@@@@@@@@@@@@#***************#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########*************++++++++++++++++++++++++++++++++++++++++++++*************###########################################################################%%%%@%%%##########################%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#############################################################*************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**++++++++******************#####%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%#######################################################*******************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******##%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######################***++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**+++++**************###############################******#%%%%%%%%%%%%##################################%%%%%%%%%%%%%%%%%%############################################################################################%##%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#%%###%##%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
***********************************************************************************************************************************#####################*******************************************************************************************************************************************#*********************************************************************#%%@@@@@@@@@@@@@@@@@@%%#*********+************++++++++++++++++++++++++++++++++++++++*******************************%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%****************************************************************************************+++++++++++++++++++++++++++++++++++++*************************************************************######*****************************************************************************%@@@@@@@@@@@@@****************%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######**************++++++++++++++++++++++++++++++++++++++++++++**************##########################################################################%%%%%%%%##########################%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%############################################################************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**************###%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@%%%%#######################################################********************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****###%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########################**++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**++*+**************##############################********#%%%%%%%%%%%%###################################%%%%%%%%%%%%%%%%%############################################################################################%##%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%##%%###%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
**********************************************************************************************************************************######################*****************************************************************************************************************************************************************************************************************#%@@@@@@@@@@@@@@@@@@@%%#**********************+++++++++++++++++++++++++++++++++++++++******************************%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#***************************************************************************************++++++++++++++++++++++++++++++++++++++++++*************************++++****************************######****************************************************************************#@@@@@@@@@@@@@#******#********#@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######**************++++++++++++++++++++++++++++++++++++++++++++**************###########################################################################%%%%%%%%########################%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#############################################################**********************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********#####%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@%%%%#######################################################********************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******##%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#########################**+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********************###############################*********#%%%%@@@@%%%%###################################%%%%%%%%%%%%%%%%%###############################################################################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#%%%%%##%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
**********************************************************************************************************************************######################*****************************************************************************************************************************************************************************************************************#%@@@@@@@@@@@@@@@@@@@%%#*********+************+++++++++++++++++++++++++++++++++++++++++****************************%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#***************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++*************+++++++++++++++**********************######****************************************************************************@@@@@@@@@@@@@@******##********%@@@@@@@@@@@@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######*************+++++++++++++++++++++++++++++++++++++++++++++***************###########################################################################%%%%%%%#######################%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##############################################################********************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******#####%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@%%%%########################################################*******************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******##%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%#########################**+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********************################################**********##%%%%@@@@%%%%###################################%%%%%%%%%%%%%%%%%###############################################################################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#%%%%%%#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
*********************************************************************************************************************************######################******************************************************************************************************************************************************************************************************************%%@@@@@@@@@@@@@@@@@@@%%#****+***++************++++++++++++++++++++++++++++++++++++++++++***************************#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#***************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********************######***************************************************************************#@@@@@@@@@@@@@%****#%#********#@@@@@@@@@@@@@@@@@#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######**************+++++++++++++++++++++++++++++++++++++++++++++****************###########################################################################%%%%%%#######################%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###############################################################******************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*++++++++++++++++++++++++++++++++++++++++++++++++++**********###%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@%%%%########################################################********************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******##%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%##########################**+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++************#*##*****#################################************#%%%%%@@@@%%%%###################################%%%%%%%%%%%%%%%%%###############################################################################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#%%#%%%#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
*********************************************************************************************************************************######################******************************************************************************************************************************************************************************************************************%%@@@@@@@@@@@@@@@@@@@@%#****++*++++***********+++++++++++++++++++++++++++++++++++++++++++**********************+***#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#***************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******************######***************************************************************************%@@@@@@@@@@@@@#***%%**********%@@@@@@@@@@@@@@@@%*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######*************++++++++++++++++++++++++++++++++++++++++++++++****************#############################################################################%%%%######################%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##############################################################****************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*+++++++++++++++++++++++++++++++++++++++++++++++++++++***+++**###%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@%%%########################################################**********************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******##%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%##########################**++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*++++++++++++++++++++++++******************#******##################################*************#%%%%@@@@@%%%###################################%%%%%%%%%%%%%%%%%%#############################################################################################%#%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%##%%##%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
********************************************************************************************************************************#######################******************************************************************************************************************************************************************************************************************%%@@@@@@@@@@@@@@@@@@@@%#****++*+++************++++++++++++++++++++++++++++++++++++++++++++++++***++++++++++++++++**#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#***************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****************######**************************************************************************%@@@@@@@@@@@@@%***%#**********#@@@@@@@@@@@@@@@@@##@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######*************++++++++++++++++++++++++++++++++++++++++++++++*****************#############################################################################%%%######################@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###############################################################**************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**####%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@%%########################################################**********************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******##%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%############################**++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****************+++++******************#*##*#***###################################***************#%%%%@@@@@%%%###################################%%%%%%%%%%%%%%%%%%#############################################################################################%#%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#%%%#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
********************************************************************************************************************************######################*******************************************************************************************************************************************************************************************************************%%@@@@@@@@@@@@@@@@@@@@%#****++****************+++++++++++++++++++++++++++++++++++++++++++++++++*++++++++++++++++++*#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%#***************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****************######**************************************************************************@@@@@@@@@@@@@@%**%#***********%@@@@@@@@@@@@@@@@%*#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######*************+++++++++++++++++++++++++++++++++++++++++++++++******************##############################################################################%#############%#######%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%################################################################************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**#####%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@%%########################################################***********************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******#%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%############################**++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****************************************##*######################################****************#%%%@@@@@@%%%###################################%%%%%%%%%%%%%%%%%%#############################################################################################%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#%%##%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
*******************************************************************************************************************************#######################*******************************************************************************************************************************************************************************************************************%%@@@@@@@@@@@@@@@@@@@%%#**+*******************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%****************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***************######*************************************************************************%@@@@@@@@@@@@@@**%#***********#@@@@@@@@@@@@@@@@@#*%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######*************+++++++++++++++++++++++++++++++++++++++++++++++******************############################################################################################%%####%%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##############################################################************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**######%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@%#########################################################************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****##%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###########################*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**************************************###########################################*****************#%%%@@@@@@%%%###################################%%%%%%%%%%%%%%%%%%###########################################################################################%#%#%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%##%%%%%%#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
******************************************************************************************************************************########################*******************************************************************************************************************************************************************************************************************%%@@@@@@@@@@@@@@@@@@@%%#**+*******************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%****************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***************######************************************************************************#@@@@@@@@@@@@@@%**#************%@@@@@@@@@@@@@@@@%**%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########*************+++++++++++++++++++++++++++++++++++++++++++++++*******************########################################################################################%%%%%%%%%%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###############################################################***********************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**######%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@%#########################################################*************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****##%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###########################**+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**************************************##############################################*************##%%@@@@@@@%%%###################################%%%%%%%%%%%%%%%%%%###########################################################################################%#%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%#%###%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
****************************************************************************************########******************************########################*******************************************************************************************************************************************************************************************************************%%@@@@@@@@@@@@@@@@@@@%%#**+*******************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#*****************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**************######************************************************************************@@@@@@@@@@@@@@@#**************#@@@@@@@@@@@@@@@@@#**%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######**************+++++++++++++++++++++++++++++++++++++++++++++++********************#####################################################################################%%%%%%%%%%%@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%################################################################**********************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**######%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@%#########################################################**************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****##%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###########################**++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++************************************########################################################***#**#%%%@@@@@@@%%%###################################%%%%%%%%%%%%%%%%%%##########################################################################################%%#%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%#####%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
**************************************************************************************#########*******************************########################*******************************************************************************************************************************************************************************************************************%%@@@@@@@@@@@@@@@@@@@%%#**+********************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#*******************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**************######***********************************************************************%@@@@@@@@@@@@@@%***************%@@@@@@@@@@@@@@@@%***@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%########**************++++++++++++++++++++++++++++++++++++++++++++++++*******************####################################################################################%%%%%%%%%%%%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###############################################################*********************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#######%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@%%#########################################################***************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***##%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%############################**+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++************************************###############################################################%%%@@@@@@@%%%###################################%%%%%%%%%%%%%%%%%%##########################################################################################%%#%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%####%##%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
************************************************************************************###########******************************########################*******************************************************************************************************************************************************************************************************************#%%@@@@@@@@@@@@@@@@@@@%%#**+********************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#**********************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*************######**********************************************************************#@@@@@@@@@@@@@@@%**************#@@@@@@@@@@@@@@@@@#***@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######**************+++++++++++++++++++++++++++++++++++++++++++++++++********************##################################################################################%%%%%%%%%%%%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#################################################################*******************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#######%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@%%########################################################******************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**##%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###########################**++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**#*********************************################################################################%%@@@@@@@@%%####################################%%%%%%%%%%%%%%%%%%%#########################################################################################%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
************************************************************************************############*****************************#######################********************************************************************************************************************************************************************************************************************#%%@@@@@@@@@@@@@@@@@@@%%#**+********************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*************######**********************************************************************%@@@@@@@@@@@@@@@#**************%@@@@@@@@@@@@@@@@%***#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######***************+++++++++++++++++++++++++++++++++++++++++++++++++********************#################################################################################%%%%%%##%%%%@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#################################################################*********************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#######%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@%%######################################################*********************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**##%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%############################*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**#**#**************************####################################################################%%@@@@@@@@%%####################################%%%%%%%%%%%%%%%%%%%#########################################################################################%#%#%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
***********************************************************************************#############*****************************#######################***********************************************************************************************************************************************##*******************************************************************#%%@@@@@@@@@@@@@@@@@@@%%#**+********************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%**************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*************######*********************************************************************#@@@@@@@@@@@@@@@%***************@@@@@@@@@@@@@@@@@#***%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%########**************++++++++++++++++++++++++++++++++++++++++++++++++++*********************###############################################################################%%%%%%%##%%%%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%################################################################***********************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**#*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#######%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@%#####################################################*************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***##%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%############################**++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**#**##*#**********************######################################################################%%@@@@@@@%%%####################################%%%%%%%%%%%%%%%%%%%%########################################################################################%#%#%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
********************************#**************************************************#############*****************************######################***********************************************************************************************************************************************###*******************************************************************#%%@@@@@@@@@@@@@@@@@@@%%#**+********************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%***************************************************************************************************++++++++++++++++******++++++++++++++++++++++++++++++++++++++++++++++++++++++*************######*********************************************************************%@@@@@@@@@@@@@@@%**************%@@@@@@@@@@@@@@@@%****%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%#######***************++++++++++++++++++++++++++++++++++++++++++++++++++**********************#############################################################################%%%%%%%%#%%%%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%################################################################************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**#*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#######%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@%%#####################################################***************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***##%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###########%%###############**++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**#**#**#*********************#######################################################################%%@@@@@@@%%%####################################%%%%%%%%%%%%%%%%%%%%########################################################################################%#%#%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
**********************************************************************************###############***************************#######################***********************************************************************************************************************************************###*******************************************************************#%%@@@@@@@@@@@@@@@@@@@%%%**********************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#**************************************************************************************************+++++++++++++++**********+++++++++++++++++++++++++++++++++++++++++++++++++++++************######********************************************************************#@@@@@@@@@@@@@@@@#**************%@@@@@@@@@@@@@@@@*****%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@%%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%########***************+++++++++++++++++++++++++++++++++++++++++++++++++++*********************############################################################################%%%%%%%%%%%%%@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%################################################################*******************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*########%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@%%######################################################****************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**##%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#%%%#####%%%#%%################**+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**#############***##*************####################################################################%%@@@@@@@@%%%####################################%%%%%%%%%%%%%%%%%%%%#####################################################################%%%##################%#%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#%#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
**********************************************************************************###############***************************#######################***********************************************************************************************************************************************###*******************************************************************#%%@@@@@@@@@@@@@@@@@@@@%%**********************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#**************************************************************************************************++++++++++++++*************+++++++++++++++++++++++++++++++++++++++++++++++++++************######********************************************************************%@@@@@@@@@@@@@@@%**************#@@@@@@@@@@@@@@@@%*****@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@%@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%########***************+++++++++++++++++++++++++++++++++++++++++++++++++++**********************##########################################################################%%%%%%%%%%%%%@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%################################################################******************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#**+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*########%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@%%###################################################*********************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**##%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####%%%#%%#################*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**##############************#####*###################################################################%%@@@@@@@@%%%####################################%%%%%%%%%%%%%%%%%%%%%###################################################################%%%%##################%#%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#%#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
************************************************************************************#############***************************######################************************************************************************************************************************************************###*******************************************************************#%%@@@@@@@@@@@@@@@@@@@@%%***********************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#***************************************************************************************************++++++++++++***************++++++++++++++++++++++++++++++++++++++++++++++++++************######*******************************************************************#@@@@@@@@@@@@@@@@#**************%@@@@@@@@@@@@@@@@#*****@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%#######****************+++++++++++++++++++++++++++++++++++++++++++++++++++**********************##########################################################################%%%%%%%%%%%%@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#################################################################******************************************************************++++++*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*##*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**#######%%%%%%%%%%%%%%@@@@@@@@@@@@@@@%%%##################################################*************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**##%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####%%%#%%#################*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*################********#*##########################################################################%%@@@@@@@@%%%####################################%%%%%%%%%%%%%%%%%%%%%%##################################################################%%%%%%%#############%#%#%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#%#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
*************************************************************************************#############**************************######################************************************************************************************************************************************************####******************************************************************#%%@@@@@@@@@@@@@@@@@@@@%%***********************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#***************************************************************************************************+++++++++++*****************++++++++++++++++++++++++++++++++++++++++++++++++*************######*******************************************************************%@@@@@@@@@@@@@@@@**************#@@@@@@@@@@@@@@@@%******@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%@@@@@@@%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%########****************++++++++++++++++++++++++++++++++++++++++++++++++++++**********************########################################################################%%%%%%%%%%%%%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%################################################################******************************************************************++++****+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*##*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**#######%%%%%%%%%%%%%%@@@@@@@@@@@@@@@%%%#******##########################################******************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*++****++++**++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**##%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##%%%%#%%#################**+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*##################********#****#####################################################################%%@@@@@@@@@%%#####################################%%%%%%%%%%%%%%%%%%%%%%##################################################################%%%%%%%%############%#%#%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#%#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
*************************************************************************************#############*************************#######################***********************************************************************************************************************************************#####******************************************************************#%%@@@@@@@@@@@@@@@@@@@@%%***********************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%***************************************************************************************************++++++++++++*******###*******++++++++++++++++++++++++++++++++++++++++++++++++*************######******************************************************************#@@@@@@@@@@@@@@@@%**************%@@@@@@@@@@@@@@@@#*****#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%@@@@@%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%########****************+++++++++++++++++++++++++++++++++++++++++++++++++++++**********************#######################################################################%%%%%%%%%%%%%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###############################################################*****************************************************************++++*****+++**********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**##*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**#######%%%%%%%%%%%%%%@@@@@@@@@@@@@@@%%%#**********#####################################*********************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********+*****+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*###%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#%%##################*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*####################****************##############################################%%%%%###%%%#######%%@@@@@@@@@%%#####################################%%%%%%%%%%%%%%%%%%%%%%%################################################################%%%%%%%%%############%#%#%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
*************************************************************************************#############*************************#######################***********************************************************************************************************************************************#####******************************************************************#%%@@@@@@@@@@@@@@@@@@@@%%***********************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%***************************************************************************************************+++++++++++******#######******+++++++++++++++++++++++++++++++++++++++++++++++*************######******************************************************************%@@@@@@@@@@@@@@@@#*************#@@@@@@@@@@@@@@@@%******#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%@@@@@%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%########****************+++++++++++++++++++++++++++++++++++++++++++++++++++++***********************#####################################################################%%%%%%%%%%%%%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###############################################################****************************************************************++******+++**********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*###*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**#######%%%%%%%%%%%%%%@@@@@@@@@@@@@@%%%%#*****+*******##################################*****************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++*************+*****++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**###%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#%%%#%%##############*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*####################***********************####################################%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@%%#####################################%%%%%%%%%%%%%%%%%%%%%%%%###############################################################%%%%%%%%%%###########%#%#%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
*************************************************************************************#############*************************#######################***********************************************************************************************************************************************#####******************************************************************#%%@@@@@@@@@@@@@@@@@@@@%%***********************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%**************************************************************************************************+++++++++++******#########*****+++++++++++++++++++++++++++++++++++++++++++++++*************######*****************************************************************#@@@@@@@@@@@@@@@@%**************%@@@@@@@@@@@@@@@@#******%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%@@@@%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%########****************++++++++++++++++++++++++++++++++++++++++++++++++++++++************************###################################################################%%%%%%%%%%%%%@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###############################################################***********************************************************************++***********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*###**++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**#######%%%%%%%%%%%%%%@@@@@@@@@@@@@%%%%%###****++++*******#############################***************************************************************************************************************************************************+++++++++++++++++++++++++++++++*************+++******+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**###%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#%%%#%%%#############*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**###################*************************################################%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@%%#####################################%%%%%%%%%%%%%%%%%%%%%%%%###############################################################%%%%%%%%%%%%%########%#%#%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
*************************************************************************************#############*************************#######################***********************************************************************************************************************************************#####******************************************************************#%@@@@@@@@@@@@@@@@@@@@@%%***********************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%*++***********************************************************************************************+++++++++++*****##########*****+++++++++++++++++++++++++++++++++++++++++++++++*************######*****************************************************************%@@@@@@@@@@@@@@@@%**************@@@@@@@@@@@@@@@@%*******%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%########****************+++++++++++++++++++++++++++++++++++++++++++++++++++++++************************##################################################################%%%%%%%%%%%%@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##############################################################***********************************************************************++***********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*####*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**#######%%%%%%%%%%%%%%@@@@@@@@@@@@@%%%%##**####**+++++******###########################*******************************************************************************************************************************************************++++++++++++++++++++++***************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**###%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#%%%#%%%#############**++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***##################**********************##################################%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@%%#####################################%%%%%%%%%%%%%%%%%%%%%%%%%#############################################################%%%%%%%%%%%%%%########%#%#%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
*************************************************************************************##############***********************#######################***********************************************************************************************************************************************#######*****************************************************************#%%@@@@@@@@@@@@@@@@@@@@%%*************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#*+***********************************************************************************************++++++++++++*****###########*****+++++++++++++++++++++++++++++++++++++++++++++**************######****************************************************************#@@@@@@@@@@@@@@@@@#*************%@@@@@@@@@@@@@@@@#*******@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%#######*****************+++++++++++++*+++++++++++++++++++++++++++++++++++++++++************************#################################################################%%%%%%%%%%%%%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#############################################################**************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*####*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*########%%%%%%%%%%%%%%@@@@@@@@@@@%%%%%%#**++***###***++++*****#######################**********************************************************************************************************************************************************+++++++++++++++++*******************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*####%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#############*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#*##################***********##*******################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@%#####################################%%%%%%%%%%%%%%%%%%%%%%%%%##############################################################%%%%%%%%%%%%%########%%##%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
*************************************************************************************##############***********************#######################***********************************************************************************************************************************************#######*****************************************************************#%%@@@@@@@@@@@@@@@@@@@@%%*************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#++*+*********************************************************************************************++++++++++++*****###########*****+++++++++++++++++++++++++++++++++++++++++++++**************######****************************************************************%@@@@@@@@@@@@@@@@@*************#@@@@@@@@@@@@@@@@%********@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%########*****************++++++++++++++++++++++++++++++++++++++++++++++++++++++++************************################################################################%%%%%%%%%%%%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#############################################################**************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++**####*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#######%%%%%%%%%%%%%%@@@@@@@@@@@%%%%%%#**+++++****##****+++****#####################***************************************************************************************************************************************************************++++++++*************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*####%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#############*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**####################**********###****################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@%#####################################%%%%%%%%%%%%%%%%%%%%%%%%%##############################################################%%%%%%%%%%%%%%%%#####%%##%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
************************************************************************************##############################*****#*########################***********************************************************************************************************************************************#######*****************************************************************#%%@@@@@@@@@@@@@@@@@@@@%%*************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#++++*+*******************************************************************************************++++++++++++*****###########*****++++++++++++++++++++++++++++++++++++++++++++***************######***************************************************************#@@@@@@@@@@@@@@@@@%*************%@@@@@@@@@@@@@@@@*********@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@%%%%%%@@@@@@%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%########*****************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++***********************###############################################################%%%%%%%%%%%%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###############################################################*************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#####*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#######%%%%%%%%%%%%%@@@@@@@@@@@@%%%%%%#**+++++++++**###***+++*****#################***************************************************************************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**####%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%############*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**####################********####****#############################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@%#####################################%%%%%%%%%%%%%%%%%%%%%%%%%##############################################################%%%%%%%%%%%%%%%%%%%##%%##%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
*********************************************************************************################################################################***********************************************************************************************************************************************#######*****************************************************************%%%@@@@@@@@@@@@@@@@@@@@%%**************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#+++++++******************************************************************************************++++++++++++*****##########******++++++++++++++++++++++++++++++++++++++++++++**************#######***************************************************************%@@@@@@@@@@@@@@@@@#*************@@@@@@@@@@@@@@@@%********#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@%%%%%%%@@%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%########******************++++*+++++++++++++++++++++++++++++++++++++++++++++++++++++++*********************#############################################################%%%%%%%%%%%%@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%################################################################**************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++*#####*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#######%%%%%%%%%%%%%@@@@@@@@@@@@%%%%%%#**++++++++++++**###***+++***################***************************************************************************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**####%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###########*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**#####################******#####***#############################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@%%#####################################%%%%%%%%%%%%%%%%%%%%%%%%%%############################################################%%%%%%%%%%%%%%%%%%%%%%%%#%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
*******************************************************************************##################################################################***********************************************************************************************************************************************#######*****************************************************************%%%@@@@@@@@@@@@@@@@@@@@%%**************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%*++++++++****************************************************************************************+++++++++++++*****##########******+++++++++++++++++++++++++++++++++++++++++++***************#######**************************************************************#@@@@@@@@@@@@@@@@@%*************#@@@@@@@@@@@@@@@@*********#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%#######********************++**********++++++++++++++++++++++++++++++++++++++++++++++++++******************############################################################%%%%%%%%%%%%@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#################################################################******************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++*#####*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#######%%%%%%%%%%%%%@@@@@@@@@@@@%%%%%%#**+++++++++++++++**##****++***##############***************************************************************************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#####%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##########**+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**####################******######**############################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@%%%####################################%%%%%%%%%%%%%%%%%%%%%%%%%%############################################################%%%%%%%%%%%%%%%%%%%%%%%%#%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
**************************************************************************#######################################################################***********************************************************************************************************************************************#######*****************************************************************%%%@@@@@@@@@@@@@@@@@@@@%%**************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%*++++++++****************************************************************************************++++++++++++++*****#########*****+++++++++++++++++++++++++++++++++++++++++++****************#######**************************************************************%@@@@@@@@@@@@@@@@@%*************%@@@@@@@@@@@@@@@%*********%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%@@@%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%#######********************************+++++++++++++++++++++++++++++++++++++++++++++++++++*++***************##########################################################%%%%%%%%%%%%@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##################################################################******************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++**######*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#######%%%%%%%%%%%%%@@@@@@@@@@@%%%%%%%#**+++++++++++++++++***##***++***############*****************************************************************************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*####%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##########*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**#####################******##################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@%%%%###################################%%%%%%%%%%%%%%%%%%%%%%%%%%############################################################%%%%%%%%%%%%%%%%%%%%%%%%#%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
*************************************************************************########################################################################***********************************************************************************************************************************************#######*****************************************************************%%@@@@@@@@@@@@@@@@@@@@@%%**************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%*++++++++++**************************************************************************************++++++++++++++******#######******++++++++++++++++++++++++++++++++++++++++++*****************#######*************************************************************#%@@@@@@@@@@@@@@@@@#************#@@@@@@@@@@@@@@@@**********%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%@@@@@@@@@@@@@@%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%#######************************************+++++++++++++++++++++++++++++++++++++++++++++++*++****************########################################################%%%%%%%%%%%%@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###################################################################*****************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++*#######*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#######%%%%%%%%%%%%%@@@@@@@@@@@%%%%%%%##**+++++++++++++++++++**##*******###########***********************************************************************************************************************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**####%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##########*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**####################******##################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@%%%%%###################################%%%%%%%%%%%%%%%%%%%%%%%%%%##########################################################%%%%%%%%%%%%%%%%%%%%%%%%%#%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
***********************************************************************##########################################################################**********************************************************************************************************************************************#########****************************************************************%%@@@@@@@@@@@@@@@@@@@@@%%**************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#*+++++++++++*************************************************************************************++++++++++++++******######*******++++++++++++++++++++++++++++++++++++++++*******************#######*************************************************************#@@@@@@@@@@@@@@@@@%*************%@@@@@@@@@@@@@@@%**********%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%@@@@@@@@@@@@@@%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%#######************************************++++++++++++++++++++++++++++++++++++++++++++++******+*************#######################################################%%%%%%%%%%%%@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###################################################################*****************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++*#######*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#######%%%%%%%%%%%%%@@@@@@@@@@@%%%%%%%##**+++++++++++++++++++++**####******#########****************************************************************************************************************************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**####%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##########*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**#####################*****################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@%%%%%###################################%%%%%%%%%%%%%%%%%%%%%%%%%%##########################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
********************************************************************#############################################################################******************************************************************************************************************************#########################****************************************************************%%@@@@@@@@@@@@@@@@@@@@@%%*************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#*++*+++++++*************************************************************************************++++++++++++++++******####*******++++++++++++++++++++++++++++++++++++++++*********************######*************************************************************@@@@@@@@@@@@@@@@@@%************#@@@@@@@@@@@@@@@@***********@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%@@@@@@@@@@@@@%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%#######***************************************++++++++++++++++++++++++++++++++++++++++++++++++++**************##################################################%%%%%%%%%%%%%%%%@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####%###############################################################*****************************************************************************************++++++++++++++++++++++++++++++++++++++++++++*#######*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#######%%%%%%%%%%%%%@@@@@@@@@@@%%%%%%%##**+++++++++++++++++++++++***####*****######**********************************************************************************************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**####%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##########*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*++***####################****##################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@%%%%%%%%#################################%%%%%%%%%%%%%%%%%##%%%%%%#########################################################%%%%%%%%%%%%%%%%%%%%%%%%#%%#%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
******************************************************************##############################################################################*******************************************************************************************************************************#########################****************************************************************%%@@@@@@@@@@@@@@@@@@@@@%%*************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#*++*++++++++************************************************************************************++++++++++++++++*******###*******++++++++++++++++++++++++++++++++++++++***********************######************************************************************#@@@@@@@@@@@@@@@@@@#************%@@@@@@@@@@@@@@@%***********@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%@@@@@@@@@@@@@%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%#######****************************************+++++++++++++++++++++++++++++++++++++++++++++++*****************###############################################%%%%%%%%%%%%%%%%%@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####################################################################******************************************************************************************++++++++++++++++++++++++++++++++++++++++++*#######*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#######%%%%%%%%%%%%%@@@@@@@@@@@%%%%%%%##**++++++++++++++++++++++++++**#######*#*#####***********************************************************************************************************************************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#####%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#########*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******####################***##################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@%%%%%%%%%################################%%%%%%%%%%%%%%#####%%%%%%#########################################################%%%%%%%%%%%%%%%%%%%%%%%%#%%#%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
**************************************############**********####################################################################################******************************************************************************************************************************##########################****************************************************************%%@@@@@@@@@@@@@@@@@@@@@%%*************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#*++++*+++++++*********************************************************************************++++++++++++++++++*******##********++++++++++++++++++++++++++++++++++++*************************######************************************************************%@@@@@@@@@@@@@@@@@%************#@@@@@@@@@@@@@@@@*+**********@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%@@@@@@@@@@@@@@%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%###########%#%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%#######*****************************************+++++++++++++++++++++++++++++++++++++++++++*********************###########################################%%%%%%%%%%%%%%%%%%%@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####################################################################******************************************************************************************++++++++++++++++++++++++++++++++++++++++**#######**+++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#######%%%%%%%%%%%%%@@@@@@@@@@@%%%%%%%##**++++++++++++++++++++++++++++***###########******************************************************************************************************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**####%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#########*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*+******#######################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@%%%%%%%%%%################################%%%%%%%%%%%%######%%%%%%#########################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%#%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
******************************##**##############################################################################################################******************************************************************************************************************************##########################****************************************************************%%@@@@@@@@@@@@@@@@@@@@@%%**************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%**++++*++++++++*******************************************************************************+++++++++++++++++++*******###*******++++++++++++++++++++++++++++++++++***************************######***********************************************************#@@@@@@@@@@@@@@@@@@%************%@@@@@@@@@@@@@@@#***********#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%@@@@@@@@@@@@@%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%################%##%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%#######*******************************************+++++++++++++++++++***++++++++++++++++************************#########################################%%%%%%%%%%%%%%%%%%%%@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######################################################################******************************************************************************************+++*++++++++++++++++++++++++++++++++++*########**+++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#######%%%%%%%%%%%%%@@@@@@@@@@@%%%%%%%##**++++++++++++++++++++++++++++++***###########**#****************************************************************************************************************************************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**####%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########**++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********######################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@%%%%%%%%%%%################################%%%%%%%%%%########%%%%%#########################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
***************************#####################################################################################################################********************************************************************************************************************######***###########################****************************************************************%%@@@@@@@@@@@@@@@@@@@@@%%**************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#**+*++*+++++++++****************************************************************************+++++++++++++++++++++*******###*******+++++++++++++++++++++++++++++++******************************######***********************************************************%@@@@@@@@@@@@@@@@@@#************@@@@@@@@@@@@@@@@************#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%@@@@@@@@@@@@@%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%#####################%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@%%%%%%%%%%%###%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%######********************************************+++++++++++++++++*******++++++*********************************#######################%%%%%%%%###%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######################################################################*********************************************************************************************++++++++++++++++++++++++++++++++++*#########*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#######%%%%%%%%%%%%%@@@@@@@@@@@%%%%%%%##**++++++++++++++++++++++++++++++++***#########**********************************************************************************************************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**###%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#########*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***********#####################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@%%%%%%%%%%%%%#################################%%%%%%%#########%%%%%%########################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
**********************##########################################################################################################################********************************************************************************************************************####################################****************************************************************%%@@@@@@@@@@@@@@@@@@@@@%%**************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*+++**#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#**+**++++++++++++**************************************************************************+++++++++++++++++++++******######******+++++++++++++++++++++++++++++********************************######**********************************************************#@@@@@@@@@@@@@@@@@@%************%@@@@@@@@@@@@@@@#+***********%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%@@@@@@@@@@@@@%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%#######################%%#%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@%%%%%%%%%%%%###%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%######*****************+***************************+++++++++++++***********+++++++++++++*************************#######################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######################################################################***********************************************************************************+*******+++++++++++++++++++++++++++++++++++*#########*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#######%%%%%%%%%%%%%@@@@@@@@@@@%%%%%%%##***++++++++++++++++++++++++++++++++*****####%%####*******************************************************************************************************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**####%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##########*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***************###################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@%%%%%%%%%%%%%%################################################%%%%%%##########################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
********************############################################################################################################################*******************************************************************************************************************#####################################****************************************************************%%@@@@@@@@@@@@@@@@@@@@@%%***************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*+*+**#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%******++++++++++++++***********************************************************************++++++++++++++++++++++******#######******++++++++++++++++++++++++++**********************************######**********************************************************%@@@@@@@@@@@@@@@@@@%************@@@@@@@@@@@@@@@@*+***********%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%@@@@@@@@@@@@@@%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%#########################%####%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@%%%%%%%%%%%%%####%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%######*****************+***************************+++++*******************+++++++++++++*************************####################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######################################################################****************************************************************************************+++++***+++++++++++++++++++++++++++++*#########*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#######%%%%%%%%%%%%%@@@@@@@@@@@%%%%%%%###**++++++++++++++++++++++++++++++++*******#####%%###*******************************************************************************************************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**####%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#########*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******************##################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@%%%%%%%%%%%%%%%###############################################%%%%%%############################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
****************################################################################################################################################*******************************************************************************************************************#####################################****************************************************************%%@@@@@@@@@@@@@@@@@@@@@%%***************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*+++**#%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%******+++++++++++++++**********************************************************************++++++++++++++++++++++*****#########*****++++++++++++++++++++++++************************************######**********************************************************@@@@@@@@@@@@@@@@@@@#***********#@@@@@@@@@@@@@@@%*************@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%@@@@@@@@@@@@@@%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%###########################%#####%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%####%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%######*****************+****************************++++********************++++**********************************##################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########################################################################*************************************************************************************++++++****++++++++++++++++++++++++++++*#########*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#######%%%%%%%%%%%%%@@@@@@@@@@@%%%%%%%###**++++++++++++++++++++++++++++++++++********#####%%###****************************************************************************************************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**####%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#########*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******************##################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@%%%%%%%%%%%%%%%%##############################################%%%%%%#############################################################%%%%%%%%%%%%%%%%%%%#%%#%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
***#############################################################################################################################################******************************************************************************************************************#######################################***************************************************************%%@@@@@@@@@@@@@@@@@@@@@%%*********************************++++++++++++++++++++++++++++++++++++++++++++++++++++++*+++++**%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%*****++*+++++++++++++++++*****************************************************************++++++++++++++++++++++*****##########******+++++++++++++++++******************************************######*********************************************************#@@@@@@@@@@@@@@@@@@%************@@@@@@@@@@@@@@@@**************@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%@@@@@@@@@@@@@@@%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###########################%######%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%#####%%%%%%%%%%%%%%%%%%%%%%%%%@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%######************************************************************************************************************################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########%################################################################******************************************************************************+*****+++++++****++++++++++++++++++++++++++**##########*++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#######%%%%%%%%%%%%%@@@@@@@@@@@@%%%%%%###**+++++++++++++++++++++++++++++++++++*********######%%###*************************************************************************************************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*####%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++************************################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@%%%%%%%%%%%%%%%%%#############################################%%%%%%%###############################################################%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
################################################################################################################################################******************************************************************************************************************#######################################***************************************************************%%@@@@@@@@@@@@@@@@@@@@@%%*********************************++++++++++++++++++++++++++++++++++++++++++++++++++++++*+*+++**%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#**+**++*++++++++++++++++++**************************************************************++++++++++++++++++++++++*****###########*****++++++++++++++*********************************************######*********************************************************%@@@@@@@@@@@@@@@@@@#***********#@@@@@@@@@@@@@@@%**************@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#############################%#######%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%#####%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%#######***********************************************************************************************************###############%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########################################################################************************************************************************************++++++****++++++++++++++++++++++++++*###########*++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#######%%%%%%%%%%%%%@@@@@@@@@@@@%%%%%%###**++++++++++++++++++++++++++++++++++++***********######%####***********************************************************************************************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**####%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**************************##############################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@%%%%%%%%%%%%%%%%%#############################################%%%%%%%###############################################################%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
################################################################################################################################################******************************************************************************************************************#######################################**************************************************************#%%@@@@@@@@@@@@@@@@@@@@@%%*********************************++++++++++++++++++++++++++++++++++++++++++++++++++++++*+*+++**%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#*++**+++++++++++++++++++++*************************************************************++++++++++++++++++++++++*****############******+*++******************************************************######********************************************************#@@@@@@@@@@@@@@@@@@@#***********@@@@@@@@@@@@@@@@#*************#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##############################%#######%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%#####%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%#######***********************************************************************************************************##############%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########################################################################***********************************************************************************++++++********++++++++++++++++++++***###########*++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#######%%%%%%%%%%%%%@@@@@@@@@@@@%%%%%%###**+++++++++++++++++++++++++++++++++++++++***********######%%###**********************************************************************************************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**####%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**++***************************#############################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@%%%%%%%%%%%%%%%%%%############################################%%%%%%%###############################################################%%%%%%%%%%%%%%%%%%%%%#%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
################################################################################################################################################******************************************************************************************************************#######################################**************************************************************#%%@@@@@@@@@@@@@@@@@@@@@%%#*********************************+++++++++++++++++++++++++++++++++++++++++++++++++++++*+*++***%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#*++***+++++++++++++++++++++++*********************************************************+++++++++++++++++++++++*******#############***************************************************************#####*********************************************************%@@@@@@@@@@@@@@@@@@%***********#@@@@@@@@@@@@@@@%**************#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##############################%%#######%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@%%%%%%%%#####%%%%%#####%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%######************************************************************************************************************##############%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########################################################################************************************************************************************++***********+++++++++++++++++++***###########*++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#######%%%%%%%%%%%%%@@@@@@@@@@@@%%%%%%###**++++++++++++++++++++++++++++++++++++++++*************######%%###*******************************************************************************************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#####%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********************************############################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@%%%%%%%%%%%%%%%%%%%###########################################%%%%%%%###############################################################%%%%%%%%%%%%%%%%%%%%%#%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
################################################################################################################################################******************************************************************************************************************#######################################**************************************************************#%%@@@@@@@@@@@@@@@@@@@@@%%#*********************************+++++++++++++++++++++++++++++++++++++++++++++++++++++*+*++***#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#**+***+*++++++++++++++++++++++*******************************************************++++++++++++++++++++++++*******#############***************************************************************#####*********************************************************%@@@@@@@@@@@@@@@@@@#*********+*@@@@@@@@@@@@@@@@#**************#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###############################%%########%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@%%%%%%%########%%%%######%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%#####*************************************************************************************************************#############%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#########################################################################***************************************************************************************************++++++++++++++++***###########**+++++++++++++++++++++++++++++++++++++++++++++++++++++++*#######%%%%%%%%%%%%%@@@@@@@@@@@@%%%%%%###**+++++++++++++++++++++++++++++++++++++++++++**++********######%%%%##****************************************************************************************************************************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**#####%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######**++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*************************************#########################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%##########################################%%%%%%%###############################################################%%%%%%%%%%%%%%%%%%%%%#%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
################################################################################################################################################******************************************************************************************************************#######################################*************************************************************##%@@@@@@@@@@@@@@@@@@@@@@%%#**********************************++++++++++++++++++++++++++++++++++++++++++++++++++++*+**+***#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%*********++++++++++++++++++++++******************************************************+++++++++++++++++++++++++*******#############***************************************************************#####********************************************************#@@@@@@@@@@@@@@@@@@@#**********%@@@@@@@@@@@@@@@@***************#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%################################%%########%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@%%%%%%##########%%%%######%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%####*************************************************************************************************************#############%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#########################################################################*************************************************************************************************++++++++++++++++**#############*+++++++++++++++++++++++++++++++++++++++++++++++++++++++**######%%%%%%%%%%%%%@@@@@@@@@@@@%%%%%%####*++++++++++++++++++++++++++++++++++++++++++++++++***********######%%%###************************************************************************************************************************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**#####%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######**+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***************************************#########################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%#########################################%%%%%%%###############################################################%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
################################################################################################################################################******************************************************************************************************************#######################################*************************************************************##%@@@@@@@@@@@@@@@@@@@@@@%%#***********************************+++++++++++++++++++++++++++++++++++*****************+******#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%******************++++++++**+++******************************************************++++++++++++++++++++++++********#############***************************************************************#####********************************************************%@@@@@@@@@@@@@@@@@@%**********#@@@@@@@@@@@@@@@@%***************%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#################################%%########%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@%%%%%############%%%%######%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%#####***********************************************************************************************************##############%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#########################################################################*********************************************************************************************++++++++++++++++++**#############*+++++++++++++++++++++++++++++++++++++++++++++++++++++++**######%%%%%%%%%%%%%@@@@@@@@@@@@@%%%%%####*+++++++++++++++++++++++++++++++++++++++++++++*+++++**+********######%%%###*******************************************************************************************************************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*######%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******************************************###############%%#####################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%#########################################%%%%%%%##############################################################%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
################################################################################################################################################******************************************************************************************************************#######################################*************************************************************#%%@@@@@@@@@@@@@@@@@@@@@@%%#************************************++++++++++++++++++++++++++++++++++*****************+******#@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%*+*****************+++++++***++*****************************************************+++++++++++++++++++++++++********#############***************************************************************#####********************************************************@@@@@@@@@@@@@@@@@@@#**********%@@@@@@@@@@@@@@@@****************%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#################################%%########%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@%%%%%#############%%%%######%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######*********************************************************************************************************#############%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#########################################################################******************************************************************************************++++++++++++++++++++**#############*+++++++++++++++++++++++++++++++++++++++++++++++++++++++**######%%%%%%%%%%%%%@@@@@@@@@@@@@%%%%%####*+++++++++++++++++++++++++++++++++++++++++++++++++++++*++********#######%%%##*****************************************************************************************************************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*####%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********************************************###############%%%###################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%#########################################%%%%%%%##############################################################%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
################################################################################################################################################******************************************************************************************************************#######################################************************************************************#%%%%@@@@@@@@@@@@@@@@@@@@@@%#**************************************++++++++++++++++++++++++++++++*********+*********+***+**#@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#***********************++++*********************************************************+++++++++++++++++++++++**********#############***************************************************************#####*******************************************************#@@@@@@@@@@@@@@@@@@@**********#@@@@@@@@@@@@@@@@%****************%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##################################%#########%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@%%%################%%%#######%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@%%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##******************************************************************************************************#############%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######################################################################*******************************************************************************************+++++++++++*++**+***#############**++++++++++++++++++++++++++++++++++++++++++++++++++++++**#######%%%%%%%%%%%@@@@@@@@@@@@@@%%%%%####**+++++++++++++++++++++++++++++++++++++++++++++++++++++++***********######%%%%##************************************************************************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**#####%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**************************************************##########%%%%%%%%%%################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%########################################%%%%%%%##############################################################%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
################################################################################################################################################******************************************************************************************************************#######################################************************************************************#%%%%@@@@@@@@@@@@@@@@@@@@@@%#**************************************++++++++++++++++++++++++++++++***********************+***@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#************************++**********************************************************++++++++++++++++++++++************###########****************************************************************#####*******************************************************%@@@@@@@@@@@@@@@@@@%**********%@@@@@@@@@@@@@@@@#****************%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##################################%#########%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@%%%#################%%%########%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@%%%%%%##***************************************************************************************************#############%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######################################################################******************************************************************************************+++++++++++*++**+***#############**++++++++++++++++++++++++++++++++++++++++++++++++++++++**#######%%%%%%%%%%%%@@@@@@@@@@@@@%%%%%####**+++++++++++++++++++++++++++++++++++++++++++++++++++++++++************#######%%###*******************************************************************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**####%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***************************************************#########%%%%%%%%%%%%##############%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%#######################################%%%%%%%###############################################################%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
################################################################################################################################################******************************************************************************************************************#######################################************************************************************#%%%%@@@@@@@@@@@@@@@@@@@@@@%#**************************************+++++++++++++++++++++++++++++****************************%@@@@@@@@@@@@@@@@@@@@@@@@@@@%*************************************************************************************++++++++++++++++++++++************###########****************************************************************#####*******************************************************@@@@@@@@@@@@@@@@@@@#*********#@@@@@@@@@@@@@@@@@*****************@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##################################%#########%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@%####################%%%#######%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@%%%%%%%#**************************************************************************************************###########%%%%%%%%%%%%%%%%%%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########################################################################****************************************************************************************++**++++++++++*++**#######%%######*++++++++++++++++++++++++++++++++++++++++++++++++++++++**#######%%%%%%%%%%%%@@@@@@@@@@@@@@%%%%####**++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++************######%%%###**************************************************************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**####%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********************************************************########%%%%%%%%%%%%%%############%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%######################################%%%%%%%###############################################################%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
################################################################################################################################################******************************************************************************************************************#######################################************************************************************#%%%%@@@@@@@@@@@@@@@@@@@@@@%#****************************************++++++++++++++++++++++++++*****************************%@@@@@@@@@@@@@@@@@@@@@@@@@@%%*************************************************************************************+++++++++++++++++++++**************#########*****************************************************************#####******************************************************%@@@@@@@@@@@@@@@@@@@**********%@@@@@@@@@@@@@@@@#****************#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#################################%#########%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@%#####################%%%########%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@%%%%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@%%%%%%%%%%%%%#************************************************************************************************##########%%%%%%%%%%%%%%%%%%%%%%%@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##########################################################################********************************************************************************************+++++*++*++**#######%%######*++++++++++++++++++++++++++++++++++++++++++++++++++++++**######%%%%%%%%%%%%%@@@@@@@@@@@@@@%%%%%###**++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**************#######%%%###*******************************************************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*#####%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******************************************************########%%%%%%%%%%%%%%%%##########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%######################################%%%%%%%################################################################%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
################################################################################################################################################******************************************************************************************************************#######################################************************************************************%%%%@@@@@@@@@@@@@@@@@@@@@@@%#*********************************************+++++++++++++++++++++*****************************%@@@@@@@@@@@@@@@@@@@@@@@@@@%#*************************************************************************************+++++++++++++++++++++***************#######******************************************************************#####******************************************************%@@@@@@@@@@@@@@@@@@%********+#@@@@@@@@@@@@@@@@@*****************#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###########################################%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@%#######################%%########%%%%%%%%%%%%%%%%%%%@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@%%%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@%%%%%%#%%%%%%%%%%%#**********************************************************************************************#######%%%%%%%%%%%%%%%%%%%%%%%@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#########################################################################*******************************************************************************************+++++*+++++**#####%#%%######*+++++++++++++++++++++++++++++++++++++++++++++++++++++++*######%%%%%%%%%%%%%@@@@@@@@@@@@@@@%%%%###**++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*************############***************************************************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*####%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********************************************************#######%%%%%%%%%%%%%%%%%%#######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%#####################################%%%%%%%################################################################%%%%%%%%%%%%%%%%%%%%%%#%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
################################################################################################################################################******************************************************************************************************************#######################################***********************************************************#%%%%@@@@@@@@@@@@@@@@@@@@@@@%#**********************************************++++++++++++++++++*******************************%@@@@@@@@@@@@@@@@@@@@@@@@@%%#*************************************************************************************++++++++++++++++++++******************####*******************************************************************#####*****************************************************#@@@@@@@@@@@@@@@@@@@#*********%@@@@@@@@@@@@@@@@%*****************#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###########################################%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@%########################%%########%%%%%%%%%%%%%%%%%%@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@%@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@%%%%%%%%#############*********************************************************************************************#####%%%%%%%%%%%%%%%%%%%%%%%@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##########################################################################********************************************************************************************++***++++**#####%#%%%#####*+++++++++++++++++++++++++++++++++++++++++++++++++++++++*######%%%%%%%%%%%%%@@@@@@@@@@@@@@@%%%%####*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***********############********************************************************************************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**###%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++************************************************************#######%%%%%%%%%%%%%%%%%%%#####%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####################################%%%%%%%################################################################%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
###################################################################################%%%%%########################################################*****************************************************************************************************************########################################***********************************************************#%%%%@@@@@@@@@@@@@@@@@@@@@@@%#************************************************++++++++++++++*********************************#@@@@@@@@@@@@@@@@@@@@@@@@@%%***************************************************************************************++++++++++++++++++******************************************************************************************#####*****************************************************%@@@@@@@@@@@@@@@@@@@#********#@@@@@@@@@@@@@@@@@#*****************#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##########################################%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@%%#########################%#########%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@%%%%%%%%%%#############********************************************************************************************#######%%%%%%%%%%%%%%%%%%%@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%############################################################################**********************************************************************************************++++***#####%%%%%#####**++++++++++++++++++++++++++++++++++++++++++++++++++++++*#######%%%%%%%%%%%%@@@@@@@@@@@@@@@%%%%####**+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**************#######%####***************************************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**###%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*************************************************************#######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####################################%%%%%%%%################################################################%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
##################################################################################%%%%%%%%######################################################*****************************************************************************************************************########################################***********************************************************#%%%%@@@@@@@@@@@@@@@@@@@@@@@%#*************************************************+++++++++++++*********************************#%@@@@@@@@@@@@@@@@@@@@@@@@%%*******************************************************************+*******************++++++++++++++++++******************************************************************************************#####*****************************************************@@@@@@@@@@@@@@@@@@@%*********%@@@@@@@@@@@@@@@@%******************#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##########################################%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@%###########################%%########%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@%%%%%%%%%%%#############*******************************************************************************************#########%%%%%%%%%%%%%%%@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#############################################################################*********************************************************************************************++++**######%%%%%######*+++++++++++++++++++++++++++++++++++++++++++++++++++++**#######%%%%%%%%%%%%@@@@@@@@@@@@@@@@%%%####**++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**************#######%###***********************************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*####%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***************************************************************######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####################################%%%%%%%%################################################################%%%%%%%%%%%%%%%%%%%%%%#%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
##################################################################################%%%%%%%%%####################################################*****************************************************************************************************************#########################################***********************************************************%%%%@@@@@@@@@@@@@@@@@@@@@@@@%%******************************************************+++++++**********************************#%%@@@@@@@@@@@@@@@@@@@@@@%%#*****************************************************************************************++++++++++++++++******************************************************************************************#####****************************************************#@@@@@@@@@@@@@@@@@@@#********#@@@@@@@@@@@@@@@@@#******************%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#########################################%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@%###########################%%#########%%%%%%%%%%%%%%%%%%%@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@%%%%%%%%%%%%###############***************************************************************************************############%%%%%%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###############################################################################********************************************************************************************+++**######%%%%%%#####*++++++++++++++++++++++++++++++++++++++++++++++++++++++*#######%%%%%%%%%%%%@@@@@@@@@@@@@@@@%%%%###**++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***************######%####*****************************************************************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*####%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****************************************************************######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###################################%%%%%%%%#####################################################%%%%%%%%##%%%%%%%%%%%%%%%%%%%%%%#%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
#################################################################################%%%%%%%%%%####################################################*****************************************************************************************************************#########################################**********************************************************#%%%%@@@@@@@@@@@@@@@@@@@@@@@@%%***********************************************************************************************#%%%%%%@@@@@@@@@@@@@@@@@@%%#*****************************************************************************************++++++++++++++++******************************************************************************************#####****************************************************%@@@@@@@@@@@@@@@@@@@#********%@@@@@@@@@@@@@@@@%*******************%@@@@@@@@@@@@@@@@@@%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#########################################%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@%############################%%#########%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@%%%%%%%%%%%%##################************************************************************************************###########%%%%%%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%################################################################################*******************************************************************************************+*+**######%%%%%%#####*++++++++++++++++++++++++++++++++++++++++++++++++++++++*#######%%%%%%%%%%%%@@@@@@@@@@@@@@@@%%%%###**+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**************#######%###***************************************************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**###%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****************************************************************#######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###%@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###################################%%%%%%%%#####################################################%%%%%%%%#%%%%%%%%%%%%%%%%%%%%%%%#%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
#################################################################################%%%%%%%%%%####################################################*****************************************************************************************************************#########################################**********************************************************#%%%%@@@@@@@@@@@@@@@@@@@@@@@@%%***********************************************************************************************#%%%%%%%@@@@@@@@@@@@@@@@@%%#*****************************************************************************************++++++++++++++++******************************************************************************************#####****************************************************@@@@@@@@@@@@@@@@@@@%*******+#@@@@@@@@@@@@@@@@@#*******************%@@@@@@@@@@@@@@@@@@###%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#########################################%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@%##########******#############%%#########%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@%%%%%%%%%%%%%####################*********************************************************************************###########%%%%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#################################################################################*****************************************************************************************+*+**#####%%%%%%%#####**++++++++++++++++++++++++++++++++++++++++++++++++++++**#######%%%%%%%%%%%%%@@@@@@@@@@@@@@@@%%%####*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***************######%%###*********************************************************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*###%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******************************************************************######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###%%@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##################################%%%%%%%%#####################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
################################################################################%%%%%%%%%%%%###################################################*****************************************************************************************************************#########################################**********************************************************#%%%%@@@@@@@@@@@@@@@@@@@@@@@@%%************************************************************************************************#%%%%%%@@@@@@@@@@@@@@@@%%%#*****************************************************************************************++++++++++++++++***************************************************************#**************************#####***************************************************#@@@@@@@@@@@@@@@@@@@#********%@@@@@@@@@@@@@@@@@********************%@@@@@@@@@@@@@@@@@@##%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########################################%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@%########***********##########%%##########%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@%%%%%%%%%%%%%%######################*****************************************************************************###########%%%%%%%%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%################################################################################***************************************************************************************++*+*######%%%%%%%#####**++++++++++++++++++++++++++++++++++++++++++++++++++++**#######%%%%%%%%%%%%%@@@@@@@@@@@@@@@@%%%%###*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****************#####%%#####**************###***********************************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*###%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********************************************************************########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###%%@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##################################%%%%%%%%####################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
################################################################################%%%%%%%%%%%%###################################################*****************************************************************************************************************#########################################**********************************************************#%%%@@@@@@@@@@@@@@@@@@@@@@@@@%%************************************************************************************************#%%%%%%%@@@@@@@@@@@@@@@%%%******************************************************************************************++++++++++++++++**************************************************************###*************************#####***************************************************%@@@@@@@@@@@@@@@@@@@********#@@@@@@@@@@@@@@@@@%********************%@@@@@@@@@@@@@@@@@@##%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######################################%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@%#######**************#########%%##########%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@%%%%%%%%%%%%%%%%%#######################**************************************************************************##########%%%%%%%%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##################################################################################*************************************************************************************+**+*######%%%%%%%######*++++++++++++++++++++++++++++++++++++++++++++++++++++**#######%%%%%%%%%%%%%@@@@@@@@@@@@@@@@%%%%###*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***************######%%####************######********************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**###%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******************************************************************########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#################################%%%%%%%%###################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
################################################################################%%%%%%%%%%%%###################################################*****************************************************************************************************************#########################################**********************************************************#%%%@@@@@@@@@@@@@@@@@@@@@@@@@%%************************************************************************************************####%%%%@@@@@@@@@@@@@@@%%%******************************************************************************************++++++++++++++++**************************************************************####************************#####***************************************************@@@@@@@@@@@@@@@@@@@%********%@@@@@@@@@@@@@@@@@#********************%@@@@@@@@@@@@@@@@@@#%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######################################%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@%######*****************#######%##%########%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@%%%%%%%%%%%%%%%%%%##########################**********************************************************************#########%%%%%%%@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###################################################################################***********************************************************************************+****#####%%%%%%%%%#####*++++++++++++++++++++++++++++++++++++++++++++++++++++**#######%%%%%%%%%%%%%@@@@@@@@@@@@@@@@%%%%###**++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****************###########**********########*****************************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**##%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******************************************************************########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#################################%%%%%%%%###################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
################################################################################%%%%%%%%%%%%###################################################*****************************************************************************************************************#########################################**********************************************************%%%%@@@@@@@@@@@@@@@@@@@@@@@@@%%*************************************************************************************************######%@@@@@@@@@@@@@@@%%#******************************************************************************************++++++++++++++++*************************************************************#####************************#####**************************************************#@@@@@@@@@@@@@@@@@@@#*******#@@@@@@@@@@@@@@@@@@*********************@@@@@@@@@@@@@@@@@@@#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######################################%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@%######******************#########%##########%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%############################*******************************************************************########%%%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###################################################################################***************************************************************************************#####%%%%%%%%%#####**+++++++++++++++++++++++++++++++++++++++++++++++++++***######%%%%%%%%%%%%%@@@@@@@@@@@@@@@@%%%%%##**++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****************############******##########**************************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*###%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******************************************************************#########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%################################%%%%%%%%##################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
################################################################################%%%%%%%%%%%%%##################################################*****************************************************************************************************************#########################################**********************************************************%%%%@@@@@@@@@@@@@@@@@@@@@@@@@%%**************************************************************************************************#####%%@@@@@@@@@@@@@@%%#*+****************************************************************************************++++++++++++++++*************************************************************#####************************#####**************************************************%@@@@@@@@@@@@@@@@@@@********%@@@@@@@@@@@@@@@@@%*********************@@@@@@@@@@@@@@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######################################%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@%######*******************#########%#########%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%%###############################**************************************************************########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####################################################################################*************************************************************************************####%%%%%%%%%%#####**+++++++++++++++++++++++++++++++++++++++++++++++++++***######%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@%%%%###*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****************###########*****###########************************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*###%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********************************************************************########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%################################%%%%%%%%%#################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
################################################################################%%%%%%%%%%%%%###################################################**************************************************************************************************************############################################********************************************************#%%%%@@@@@@@@@@@@@@@@@@@@@@@@@%%*******************************************************************************************************%%@@@@@@@@@@@@@%%%*********************************************************************************************++++++++++++++*************************************************************#####************************#####*************************************************#@@@@@@@@@@@@@@@@@@@%*******#@@@@@@@@@@@@@@@@@@*********************#@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%@@@@%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########################################%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@%#####**********************#######%%#########%%%%%%%%%%%%%%%%@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%###################################********************************************************###########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####################################################################################*******************************************************************************++***####%%%%%%%%%%%####**++++++++++++++++++++++++++++++++++++++++++++++++++++**######%%%%%%%%%%%%%@@@@@@@@@@@@@@@@%%%%%%##*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***************############*############***********************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**###%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******************************************************************#########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%################################%%%%%%%#################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
################################################################################%%%%%%%%%%%%%##################################################***************************************************************************************************************############################################********************************************************#%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@%*******************************************************************************************************#%@@@@@@@@@@@@@%%#*********************************************************************************************++++++++++++++************************************************************#######***********************#####*************************************************#@@@@@@@@@@@@@@@@@@@#*******%@@@@@@@@@@@@@@@@@%*********************#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########################################%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@%#####***********************#######%%#########%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%######################################****************************************************##########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####################################################################################******************************************************************************+***#####%%%%%%%%%%%#####*++++++++++++++++++++++++++++++++++++++++++++++++++++**######%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@%%%%%##*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****************##########################********************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**##%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******************************************************************#########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%################################%%%%%%%#################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
################################################################################%%%%%%%%%%%%%##################################################**************************************************************************************************************#############################################********************************************************#%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@%*******************************************************************************************************#%@@@@@@@@@@@@@%%#*********************************************************************************************+++++++++++++*************************************************************#######***********************#####*************************************************%@@@@@@@@@@@@@@@@@@@*******#@@@@@@@@@@@@@@@@@@#*********************#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######################################%%%%%%%%%%%%%%%%%@%%@@@@@@@@@@@@%#####************************#######%%#########%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%###########################################*******************************************##########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######################################################################################********************************************************************************#####%%%%%%%%%%%#####*++++++++++++++++++++++++++++++++++++++++++++++++++++**######%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@%%%%%##**+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***************#########################******************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*###%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****************************************************************##########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###############################%%%%%%%#################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
################################################################################%%%%%%%%%%%%%##################################################**************************************************************************************************************#############################################********************************************************#%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@%*******************************************************************************************************#%@@@@@@@@@@@@@%%#*********************************************************************************************+++++++++++++*************************************************************#######***********************#####************************************************#@@@@@@@@@@@@@@@@@@@%*******%@@@@@@@@@@@@@@@@@@**********************#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%############********###################%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@%#####*************************#######%##########%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%#######################################################*******************************######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######################################################################################******************************************************************************#####%%%%%%%%%%%#####*++++++++++++++++++++++++++++++++++++++++++++++++++++**######%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@%%%%%%#***++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****************#######################*****************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*###%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****************************************************************##########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###############################%%%%%%%################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
################################################################################%%%%%%%%%%%%%%#################################################************************************************************************************************************###############################################********************************************************#%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@%*******************************************************************************************************%%@@@@@@@@@@@@@%%**********************************************************************************************++++++++++++**************************************************************#######***********************######***********************************************%@@@@@@@@@@@@@@@@@@@#******#@@@@@@@@@@@@@@@@@@%**********************%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##########*************################%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@%#####**************************######%%##########%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%##################################################################*****************###%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####################################################################################******************************************************************************#####%%%%%%%%%%%#####*++++++++++++++++++++++++++++++++++++++++++++++++++++**######%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@%%%%%%##**++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****************#####################*************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**##%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***************************************************************############%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###############################%%%%%%%%############################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
################################################################################%%%%%%%%%%%%%%#################################################************************************************************************************************************###############################################********************************************************%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@%*******************************************************************************************************%%@@@@@@@@@@@@%%%**********************************************************************************************++++++++++++*************************************************************########***********************######***********************************************@@@@@@@@@@@@@@@@@@@@*******%@@@@@@@@@@@@@@@@@@#+*********************%@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##########***************###############%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@%#####***************************######%%#########%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%##################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######################################################################################****************************************************************************####%%%%%%%%%%%%#####**+++++++++++++++++++++++++++++++++++++++++++++++++++**######%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@%%%%%##***+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****************####################************************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*###%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******************************************************************############%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##############################%%%%%%%%############################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
################################################################################%%%%%%%%%%%%%%#################################################***********************************************************************************************************################################################********************************************************%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@%*******************************************************************************************************%%@@@@@@@@@@@@%%#***********************************************************************************************+++++++++++*************************************************************########***********************######**********************************************#@@@@@@@@@@@@@@@@@@@%******#@@@@@@@@@@@@@@@@@@%***********************%@@@@@@@@@%@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#########******************#############%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@%#####****************************#####%%##########%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%#################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######################################################################################*************************************************************************#####%%%%%%%%%%%%%#####*+++++++++++++++++++++++++++++++++++++++++++++++++++**######%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@%%%%%#****+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****************##################***********************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*###%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****************************************************************#############%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##############################%%%%%%%%############################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
################################################################################%%%%%%%%%%%%%%#################################################***********************************************************************************************************################################################********************************************************%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@%*******************************************************************************************************%%@@@@@@@@@@@@%%#************************************************************************************************++++++++++*************************************************************########***********************######**********************************************%@@@@@@@@@@@@@@@@@@@#******%@@@@@@@@@@@@@@@@@@%+**********************%@@@@@@@@@%@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########*******************#############%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@%#####*****************************#####%%##########%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%@%%%%%%%%%%%%%%%%%%%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########################################################################################***********************************************************************#####%%%%%%%%%%%%%#####**++++++++++++++++++++++++++++++++++++++++++++++++++**######%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@%%%%%#****+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****************################***********************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*##%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***************************************************************##############%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##############################%%%%%%%%############################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
################################################################################%%%%%%%%%%%%%%%################################################*********************************************************************************************************###################################################******************************************************#%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@%*******************************************************************************************************%%%@@@@@@@@@@@%%************************************************************************************************************************************************************************########***********************######**********************************************@@@@@@@@@@@@@@@@@@@@*******@@@@@@@@@@@@@@@@@@@*+**********************%@@@@@@@@@%@@%*%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#########*********************###########%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@%#####******************************#####%%##########%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##############################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##%######################################################################################**********************************************************************#####%%%%%%%%%%%%%#####**++++++++++++++++++++++++++++++++++********++++++++**######%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@%%%%#****++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****************##############**********************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**##%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***************************************************************##############%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##############################%%%%%%%%########################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
################################################################################%%%%%%%%%%%%%%%################################################**********************************************************************************************************##################################################******************************************************#%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@%*******************************************************************************************************%%%@@@@@@@@@@@%%************************************************************************************************************************************************************************########***********************######*********************************************#@@@@@@@@@@@@@@@@@@@%******#@@@@@@@@@@@@@@@@@@%************************%@@@@@@@@@%@@%#%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#########*********************###########%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@%#####*******************************#################%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%############################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######################################################################################*********************************************************************#####%%%%%%%%%%%%%#####**++++++++++++++++++++++++++++++++**********++++++++**######%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@%%%%##******++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******************##############********************************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**##%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####*++++++++++++++++++++++++++++++++++++++++++++++++++++++++***+++**************************************************************###############%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#############################%%%%%%%%########################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
################################################################################%%%%%%%%%%%%%%%################################################***********************************************************************************************************#################################################******************************************************#%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@%*******************************************************************************************************%%%@@@@@@@@@@%%#***********************************************************************************************************************************************************************#########***********************######*********************************************%@@@@@@@@@@@@@@@@@@@#******%@@@@@@@@@@@@@@@@@@#************************%@@@@@@@@%%@@%#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##########**********************##########%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@%#####********************************################%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##########################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######################################################################################*******************************************************************####%%%%%%%%%%%%%%#####**+*+++++++*********+++++++++++*************++**++++**######%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@%%%%##******+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******************##############*****************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*###%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####*+++++++++++++++++++++++++++++++++++++++++++++++++++**********************************************************************#################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#############################%%%%%%%%########################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
################################################################################%%%%%%%%%%%%%%%%##############################################************************************************************************************************************#################################################******************************************************%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@%*******************************************************************************************************%%%@@@@@@@@@@%%#***********************************************************************************************************************************************************************#########***********************######*********************************************@@@@@@@@@@@@@@@@@@@%******#@@@@@@@@@@@@@@@@@@@*************************%@@@@@@@@%%@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##########************************#########%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@######*********************************################%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%@%%%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########################################################################################****************************************************************#####%%%%%%%%%%%%%%%####**+*+++++***********++++++++*********************+++**######%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@%%%%#*******+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********************########%####***************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*###%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###**++++++++++++++++++++++++++++++++++++++++++++++++*********************************************************************#*#################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#############################%%%%%%%%#######################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
################################################################################%%%%%%%%%%%%%%%%##############################################*************************************************************************************************************################################################******************************************************%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@%*******************************************************************************************************%%%@@@@@@@@@%%%************************************************************************************************************************************************************************#########***********************######*******************************************+#@@@@@@@@@@@@@@@@@@@%******%@@@@@@@@@@@@@@@@@@%*************************%@@@@@@@@%%@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##########*************************########%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@######*********************************#################%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####################################################################################***************************************************************#####%%%%%%%%%%%%%%%#####*+*++++*****************************************+++**######%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@%%%%#*******+*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******************########%####******#*****************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**##%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##**++++++++++++++++++++++++++++++++++++++++++++**********************************************************************####################%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#############################%%%%%%%%#######################%%%##########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
#################################################################################%%%%%%%%%%%%%%%##############################################*************************************************************************************************************################################################*****************************************************#%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@%******************************************************************************************************#%%%@@@@@@@@@%%%************************************************************************************************************************************************************************#########***********************######********************************************%@@@@@@@@@@@@@@@@@@@#*****#@@@@@@@@@@@@@@@@@@@#*************************@@@@@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##########**************************######%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@%######**********************************#################%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######################################################################################*************************************************************#####%%%%%%%%%%%%%%%#####************************************************+++**######%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@%%%%##********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********************##############********************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*###%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##**++++++++++++++++++++++++++++++++++++++++++**********************************************************************#####################%%%%%%%%%%%%@@@@@@@@@@@@@%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%############################%%%%%%%%####################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
#################################################################################%%%%%%%%%%%%%%%%############################################**************************************************************************************************************################################################*****************************************************#%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@%#*****************************************************************************************************#%%@@@@@@@@@@%%#***********************************************************************************************************************************************************************##########***********************######*******************************************#@@@@@@@@@@@@@@@@@@@%******%@@@@@@@@@@@@@@@@@@@**************************@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###########***************************#####%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@%#####************************************################%%%%%%%%%%%%%%%@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######################################################################################***********************************************************####%%%%%%%%%%%%%%%%%####*************************************************++**######%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@%%%%##*********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********************##############*****************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*###%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##*++++++++++++++++++++++++++++++++++++++++++*********************************************************************#####################%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%############################%%%%%%%%####################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
#################################################################################%%%%%%%%%%%%%%%%############################################**************************************************************************************************************################################################*****************************************************#%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@%%#*****************************************#***********************************************************#%%@@@@@@@@@@%%#***********************************************************************************************************************************************************************##########***********************######*******************************************%@@@@@@@@@@@@@@@@@@@%*****#@@@@@@@@@@@@@@@@@@@%**************************@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###########****************************####%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@%#####************************************#################%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####################################################################################**********************************************************####%%%%%%%%%%%%%%%%%####**+**********************************************+++**#####%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@%%%%%#**********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********************##########%###**************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*###%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##*+++++++++++++++++++++++++++++++++++++++++********************************************************************######################%%%%%%%%%%%%%@@@@%@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%############################%%%%%%%%####################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
#################################################################################%%%%%%%%%%%%%%%%############################################***************************************************************************************************************###############################################*****************************************************#%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#**************************************###########****************************************************#%%@@@@@@@@@@%%#***********************************************************************************************************************************************************************#####%####***********************######*******************************************@@@@@@@@@@@@@@@@@@@@#*****%@@@@@@@@@@@@@@@@@@@#*************************#@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%############*****************************###%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@%#####*************************************#################%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@%%%%%%%%%%%%%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######################################################################################*******************************************************#####%%%%%%%%%%%%%%%%#####*******+***********************************+*****++***#####%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@%%%%#************++**+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********************###############**********************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**##%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##**+*+++++++++++++++++++++++++++++++++++++*****************************************************************#########################%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%############################%%%%%%%%##################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
#################################################################################%%%%%%%%%%%%%%%%%###########################################***************************************************************************************************************###############################################*****************************************************#%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#**************************************################***********************************************#%%@@@@@@@@@%%%************************************************************************************************************************************************************************####%%####***********************######******************************************#@@@@@@@@@@@@@@@@@@@%******@@@@@@@@@@@@@@@@@@@@**************************%@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#############*****************************###%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@%####***************************************################%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###############################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######################################################################################******************************************************#####%%%%%%%%%%%%%%%%%#####************************************************++***#####%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@%%%%#****************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********************###############********************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**##%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##**+*++++++++++++++++++++++++++++++++++++++************************************************************###########################%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%############################%%%%%%%%##################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
#################################################################################%%%%%%%%%%%%%%%%%###########################################***************************************************************************************************************###############################################*****************************************************#%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#**************************************#################**********************************************#%%%@@@@@@@@%%#************************************************************************************************************************************************************************####%%####***********************######******************************************%@@@@@@@@@@@@@@@@@@@#*****%@@@@@@@@@@@@@@@@@@@%************************#%@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#############*******************************##%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@%####***************************************#################%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##############################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####################################################################################*****************************************************#####%%%%%%%%%%%%%%%%%#####*****************************************************#####%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@%%%%#******************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***********************##############******************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*###%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##**+*++++++++++++++++++++++++++++++++++++++**********************************************************############################%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%############################%%%%%%%%#################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
#################################################################################%%%%%%%%%%%%%%%%%##########################################****************************************************************************************************************###############################################*****************************************************#%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#*************************************##################**********************************************#%%%@@@@@@@@%%#************************************************************************************************************************************************************************####%%####***********************######******************************************@@@@@@@@@@@@@@@@@@@%******@@@@@@@@@@@@@@@@@@@@#***********************#%@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###########**********************************##%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@%###*****************************************#################%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@%%%%@%%%%%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###########################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####################################################################################***************************************************####%%%%%%%%%%%%%%%%%%%####*****************************************************#####%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@%%%%#*******************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++************************###############**************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**###%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##**+*+++++++++++++++++++++++++++++++++***+**********************************************************###########################%%@%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###########################%%%%%%%%%###################%%%##########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
##################################################################################%%%%%%%%%%%%%%%%#########################################*****************************************************************************************************************###############################################*****************************************************%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#*************************************##################**********************************************#%%%@@@@@@@%%%*********************************************************************************************************************************####************************************####%%####***********************######*****************************************#@@@@@@@@@@@@@@@@@@@%*****#@@@@@@@@@@@@@@@@@@@@***********************#@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#########*************************************##%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@%###******************************************################%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##########################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######################################################################################*************************************************####%%%%%%%%%%%%%%%%%%%####*+***************************************************#####%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@%%%%#**********************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*************************#############*************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**##%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##**+*+*++++++++++*++++++++++++++++++***********************************************************##############################%%%@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###########################%%%%%%%%%################%%%%%%%%########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
##################################################################################%%%%%%%%%%%%%%%%%#######################################******************************************************************************************************************###############################################****************************************************#%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#*************************************##################**********************************************#%%%@@@@@@%%%#*******************************************************************************************************************************########**********************************###%%%####***********************######*****************************************%@@@@@@@@@@@@@@@@@@@#*****%@@@@@@@@@@@@@@@@@@@%**********************%@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######*****************************************###%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@%##********************************************#################%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@%%%%@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######################################################################################***********************************************#####%%%%%%%%%%%%%%%%%%%####*****************************************************#####%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@%%%%#************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*************************#############***********************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*###%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##**+++*+*++++++++********++++++++*************************************************************#############################%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##########################%%%%%%%%%%##########%%%%%%%%%%%%%%%%%%##%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
##################################################################################%%%%%%%%%%%%%%%%%#######################################******************************************************************************************************************###############################################****************************************************#%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#*************************************##################**********************************************#%%%@@@@@@%%%#******************************************************************************************************************************##########********************************####%%%####***********************######****************************************#@@@@@@@@@@@@@@@@@@@%*****#@@@@@@@@@@@@@@@@@@@@#*********************#@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####********************************************##%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@%##*********************************************#################%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@@@@@@@@@@@@@%@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########################################################################################*********************************************#####%%%%%%%%%%%%%%%%%%%#####****************************************************#####%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@%%%%#**************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***********************##############*********************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**###%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##***++*+*+++++***********+*****************************************************************##############################%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##########################%%%%%%%%%%%%#####%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
##################################################################################%%%%%%%%%%%%%%%%%######################################*******************************************************************************************************************###############################################****************************************************#%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#*************************************##################**********************************************#%%%@@@@@@%%%#******************************************************************************************************************************###########*******************************####%%%####***********************#####*****************************************#@@@@@@@@@@@@@@@@@@@%*****%@@@@@@@@@@@@@@@@@@@@**********************@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%@%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####*********************************************###%%%%%%%%%%%%%%%%%%@@@@@@@@@@%%##*********************************************#################%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#########################################################################################********************************************#####%%%%%%%%%%%%%%%%%%%%####****************************************************#####%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@%%%%#*************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*************************#############*******************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**###%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##***+**+***+***************************************************************************################################%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%###%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##########################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
#################################################################################%%%%%%%%%%%%%%%%%%####################################**********************************************************************************************************************##############################################****************************************************#%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%*************************************#################***********************************************#%%%@@@@@@%%%******************************************************************************************************************************#############******************************####%%%####************************####*****************************************%@@@@@@@@@@@@@@@@@@@#****#@@@@@@@@@@@@@@@@@@@@%*********************%@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####**********************************************####%%%%%%%%%%%%%%%%%@@@@@@@@%%%%#***********************************************#################%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%@@%@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####################################################%%%%%%%%%%%%%%%%%%@@@@@@%%%%@@@%%@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##############%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########################################################################################******************************************####%%%%%%%%%%%%%%%%%%%%%####****************************************************#####%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%#****************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**************************#############***************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**##%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%****************************+++****************************************************##################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%####%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#########################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
##################################################################################%%%%%%%%%%%%%%%%%###################################***********************************************************************************************************************##############################################****************************************************#%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%*************************************#################***********************************************#%%%@@@@@%%%%*****************************************************************************************************************************##############******************************####%%%####************************####****************************************#@@@@@@@@@@@@@@@@@@@%*****%@@@@@@@@@@@@@@@@@@@@#********************#@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####**********************************************####%%%%%%%%%%%%%%%%%@@@@@@@%%%%%#***********************************************#################%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##################################################%%%%%%%%%%%%%%%%%%%@@@@@@@@%%@@@%%%%@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######################################################################################******************************************####%%%%%%%%%%%%%%%%%%%%%####****************************************************#####%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%#******************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***************************#############***********************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**##%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%**********************************************************************************#################################%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@%%######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#########################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
##################################################################################%%%%%%%%%%%%%%%%%################################**************************************************************************************************************************##############################################****************************************************#%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%*************************************#################***********************************************#%%%@@@@@%%%#*****************************************************************************************************************************##############******************************####%%%####************************####****************************************%@@@@@@@@@@@@@@@@@@@#*****@@@@@@@@@@@@@@@@@@@@@*********************@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####**********************************************######%%%%%%%%%%%%%%%@@@@@%%%%%%%*************************************************#################%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%################################################%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@%%%%%%%%%%%%%@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######################################################################################****************************************####%%%%%%%%%%%%%%%%%%%%%####*****************************************************####%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%#******************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***************************#############******************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**###%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#******************************************************************************##################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
##################################################################################%%%%%%%%%%%%%%%%%###############################***************************************************************************************************************************##############################################****************************************************%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%*************************************#################***********************************************#%%%@@@@@%%%#*****************************************************************************************************************************###############*****************************####%%%####************************####****************************************@@@@@@@@@@@@@@@@@@@@*****%@@@@@@@@@@@@@@@@@@@@%********************%@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####*********************************************########%%%%%%%%%%%%%%%@@@%%%%%%%#**************************************************################%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##############################################%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@%%%%%%%%%%%%%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######################################################################################*************************************#####%%%%%%%%%%%%%%%%%%%%%####*****************************************************####%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%##********************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****************************#############**************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**###%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#************************************************************************######################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
##################################################################################%%%%%%%%%%%%%%%%%############################******************************************************************************************************************************##############################################****************************************************%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%*************************************#################***********************************************#%%%@@@@%%%%******************************************************************************************************************************#####%%%%%#####*****************************####%%%####*************************##****************************************#@@@@@@@@@@@@@@@@@@@%*****@@@@@@@@@@@@@@@@@@@@@#*******************#@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######********************************************#########%%%%%%%%%%%%%%%%%%%%%%%%#*****************************************************##############%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%############################################%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@%%%%%%%%%%%%%%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#########################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####################################################################################************************************####%%%%%%%%%%%%%%%%%%%%%%####**************************************************+**####%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%##**********************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****************************#############************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**##%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#********************************************************************########################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%###########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
##################################################################################%%%%%%%%%%%%%%%%%###########################*******************************************************************************************************************************##############################################****************************************************%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%************#************************################************************************************#%%%@@@@%%%#******************************************************************************************************************************#####%%%%%#####*****************************####%%%####*************************##****************************************%@@@@@@@@@@@@@@@@@@@#****#@@@@@@@@@@@@@@@@@@@@@*******************#@@@@@@@@@@@@@@@@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######*******************************************##########%%%%%%%%%%%%%%%%%%%%%%%#*********************************************************##########%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##########################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%%%%%%%%%%%%%%%%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###########################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######################################################################################**********************************####%%%%%%%%%%%%%%%%%%%%%%#####*************************************************+**####%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%#*************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****************************#############*********************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**##%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#*****************************************************************#########################################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%############%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###############%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
##################################################################################%%%%%%%%%%%%%%%%%%#########################********************************************************************************************************************************##############################################****************************************************%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%************##***********************################************************************************#%%%@@@@%%%#*****************************************************************************************************************************#####%%%%%%#####*****************************####%%%####*************************#****************************************#@@@@@@@@@@@@@@@@@@@%*****%@@@@@@@@@@@@@@@@@@@@%*******************%@@@@@@@@@@@@@@@@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%############***************************************###########%%%%%%%%%%%%%%%%%%%%%%#************************************************************########%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########################################################################################********************************####%%%%%%%%%%%%%%%%%%%%%%#####*************************************************+**#####%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%#***************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******************************############*****************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**###%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#**************************************************************#########################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%##############%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#############%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
##################################################################################%%%%%%%%%%%%%%%%%%#########################********************************************************************************************************************************#############################################*****************************************************%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%************##***********************################************************************************#%%%@@@@%%%#*****************************************************************************************************************************#####%%%%%%######****************************####%%%####******************************************************************%@@@@@@@@@@@@@@@@@@@#****#@@@@@@@@@@@@@@@@@@@@@#******************#@@@@@@@@@@@@@@@@@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%################***********************************############%%%%%%%%%%%%%%%%%%%%%***************************************************************######%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@@@%@@@@@@%@%%@@%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######################################################################################*******************************####%%%%%%%%%%%%%%%%%%%%%%#####*************************************************+**#####%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%#***************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******************************#############**************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**###%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#********************************************************############################################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#############%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
##################################################################################%%%%%%%%%%%%%%%%%%#########################********************************************************************************************************************************##############################################***************************************************#%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#************************************################************************************************#%%%@@@%%%%******************************************************************************************************************************#####%%%%%%######****************************####%%%####******************************************************************@@@@@@@@@@@@@@@@@@@@*****%@@@@@@@@@@@@@@@@@@@@%******************#@@@@@@@@@@@@@@@@@@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########################***************************##############%%%%%%%%%%%%%%%%%%#****************************************************************######%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######################################################################################*****************************####%%%%%%%%%%%%%%%%%%%%%%%####*************************************************+**#####%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%##****************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********************#********#############********************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**###%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#*****************************************************###########################################%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%##################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
##################################################################################%%%%%%%%%%%%%%%%%%#########################********************************************************************************************************************************##############################################***************************************************#%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#************************************################************************************************#%%%%@%%%%#******************************************************************************************************************************#####%%%%%%######****************************####%%%###******************************************************************#@@@@@@@@@@@@@@@@@@@%****#@@@@@@@@@@@@@@@@@@@@@%******************%@@@@@@@@@@@@@@@@@@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##########################************************###############%%%%%%%%%%%%%%%%%%#*****************************************************************######%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###############################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########################################################################################***************************####%%%%%%%%%%%%%%%%%%%%%%%%%###****************************************************#####%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%##*****************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********************#####*******############*******************+++++******++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**##%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#****************************************************########################################%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%###################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
##################################################################################%%%%%%%%%%%%%%%%%%#########################***********************************************************************************************************************##*******##############################################***************************************************#%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#************************************##################**********************************************#%%%%%%%%%#******************************************************************************************************************************#####%%%%%%######****************************####%%%###******************************************************************%@@@@@@@@@@@@@@@@@@@#****%@@@@@@@@@@@@@@@@@@@@@#*****************#@@@@@@@@@@@@@@@@@@@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%############################*********************#################%%%%%%%%%%%%%%%%%#*******************************************************************####%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###########################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######################################################################################**************************####%%%%%%%%%%%%%%%%%%%%%%%%%####***************************************************#####%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%#********************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********************#####*******#############********************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**##%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#**************************************************#######################################%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#####################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
##################################################################################%%%%%%%%%%%%%%%%%##########################**********************************************************************************************************************#######**###############################################***************************************************#%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#************************************##################***********************************************%%%%%%%%%*******************************************************************************************************************************#####%%%%%%######****************************####%%%###*****************************************************************#@@@@@@@@@@@@@@@@@@@%*****@@@@@@@@@@@@@@@@@@@@@%******************@@@@@@@@@@@@@@@@@@@@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###############################*******************##################%%%%%%%%%%%%%%%%#********************************************************************####%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########################################################################################************************####%%%%%%%%%%%%%%%%%%%%%%%%%####***************************************************#####%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%#***********************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********************###**********############*************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**###%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%#*************************************************###################################%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#######################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
##################################################################################%%%%%%%%%%%%%%%%%##########################**********************************************************************************************************************########################################################***************************************************%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#*************************************#################***********************************************%%%%%%%%#*******************************************************************************************************************************#####%%%%%%######****************************####%%%###*****************************************************************%@@@@@@@@@@@@@@@@@@@#****#@@@@@@@@@@@@@@@@@@@@@#*****************%@@@@@@@@@@@@@@@@@@@@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%################################****************####################%%%%%%%%%%%%%%##*********************************************************************###%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######################################################################################**********************###%%%%%%%%%%%%%%%%%%%%%%%%%%####****************************************************####%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%##*************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***********************************############***********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**###%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%#***********************************************####################%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#########################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##%##%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
##################################################################################%%%%%%%%%%%%%%%%%###########################********************************************************############*************************************************########################################################**************************************************#%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#*************************************##################**********************************************%%%%%%%%#*******************************************************************************************************************************#####%%%%%%######****************************####%%%###*****************************************************************@@@@@@@@@@@@@@@@@@@@*****%@@@@@@@@@@@@@@@@@@@@@*****************#@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%################################***************#######################%%%%%%%%%%%##**********************************************************************###%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##################*****#################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######################################################################################********************###%%%%%%%%%%%%%%%%%%%%%%%%%%####****************************************************#####%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%##***************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**************************************###########*******++++**+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**###%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%##*******************************************###################%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%###########################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
##################################################################################%%%%%%%%%%%%%%%%%############################****************************************************##################*********************************************#########################################################**************************************************#%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#*************************************###################*********************************************%%%%%%%%#*******************************************************************************************************************************#####%%%%%%######****************************####%%%###****************************************************************#@@@@@@@@@@@@@@@@@@@%****#@@@@@@@@@@@@@@@@@@@@@%*****************@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@%@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##################################************#########################%%%%%%%%%%#************************************************************************##%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%################******#################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######################################################################################******************####%%%%%%%%%%%%%%%%%%%%%%%%%%%###****************************************************#####%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%##*******************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**************************************###########******++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**###%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%##************************************###################%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#############################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
##################################################################################%%%%%%%%%%%%%%%%%############################*************************************************########################******************************************#########################################################**************************************************#%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#*************************************####################********************************************%%%%%%%#********************************************************************************************************************************#####%%%%%%######****************************####%%%###****************************************************************%@@@@@@@@@@@@@@@@@@@#****%@@@@@@@@@@@@@@@@@@@@@#****************%@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%################################***********#########################%%%%%%%%%%#************************************************************************##%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%################********################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###################################################################################*****************####%%%%%%%%%%%%%%%%%%%%%%%%%%%###****************************************************#####%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#*************************************************************+++++++++++++++++**++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***************************************###**#####******++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**###%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%##**********************************#############%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%###############################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
###################################################################################%%%%%%%%%%%%%%%%###############################*************************#########**********############################****************************************#########################################################**************************************************#%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#************#*************************#######################****************************************%%%%%%%##*******************************************************************************************************************************#####%%%%%%%####*****************************###%%%%###***************************************************************#@@@@@@@@@@@@@@@@@@@%****#@@@@@@@@@@@@@@@@@@@@@@****************#@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%################################**********#########################%%%%%%%%%%#*************************************************************************##%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@%%%%%%%%%%%%%%@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##############**********################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####################################################################################***************####%%%%%%%%%%%%%%%%%%%%%%%%%%%####***************************************************#####%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#****************************************************************+++++++************++++++++**+++++++++*+++++++++++++++++++++++++++++++++++++++++****************************************#***##***********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**###%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%#*********************************#########%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
###################################################################################%%%%%%%%%%%%%%%%#################################***********************#########**********#############################***************************************#########################################################**************************************************#%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#************#**************************############################**********************************#%%%%%%#********************************************************************************************************************************#####%%%%%%%####*****************************###%%%%###***************************************************************%@@@@@@@@@@@@@@@@@@@#****%@@@@@@@@@@@@@@@@@@@@@%****************@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###############################********###########################%%%%%%%%%#*************************************************************************##%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@%%%%%%%%%%%%%@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#############************###############%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######################################################################################**************###%%%%%%%%%%%%%%%%%%%%%%%%%%%%####***************************************************#####%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#*******************************************************************++******************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++******************************************#****##**#******+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**##%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%#*********************************##########%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%####################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
###################################################################################%%%%%%%%%%%%%%%%####################################*###****************#########*********##############################***************************************#########################################################**************************************************#%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#***********##****************************##############################*****************************##%%%%%%#********************************************************************************************************************************#####%%%%%%#####*****************************###%%%%###***************************************************************@@@@@@@@@@@@@@@@@@@%*****@@@@@@@@@@@@@@@@@@@@@@#***************%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###############################******############################%%%%%%%%%#**************************************************************************##%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@%%%%%%%%%%%%%%%%%%%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%############***************##############%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######################################################################################************###%%%%%%%%%%%%%%%%%%%%%%%%%%%%####***************************************************#####%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%##******************************************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++********************************************##****#*******++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**###%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%@%%%%%##********************************##########%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%######################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
###################################################################################%%%%%%%%%%%%%%%%##########################################*************###########********###############################**************************************##########################################################*************************************************#%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#***********##*****************************##################################*****##########*********##%%%%%##*********************************************************************************************************************************####%%%%%%#####*****************************###%%%%###**************************************************************#@@@@@@@@@@@@@@@@@@@%****#@@@@@@@@@@@@@@@@@@@@@@***************#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%################################*****############################%%%%%%%%##***************************************************************************#%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@%%%%%%%%%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%############*****************###############%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####################################################################################**********###%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###***************************************************#####%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%#**********************************************************************************************************++++++++++++++++++++++++++++++++++++++****************************************++***************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**###%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@%%%%%#*******************************###########%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%########################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
###################################################################################%%%%%%%%%%%%%%%%###########################################************###########******#################################**************************************##########################################################*************************************************#%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#***********#*********************************#########################################################%%%%%##**#******************************************************************************************************************************####%%%%%%#####*****************************###%%%%###**************************************************************%@@@@@@@@@@@@@@@@@@@#****%@@@@@@@@@@@@@@@@@@@@@%***************@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#################################**#############################%%%%%%%%##***************************************************************************##%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%%%@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##########********************##############%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####################################################################################********##%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###****************************************************####%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%#**********************************************************************************************************++++++++++++++++++++++++++++++++++++++***************************************+++++*#***********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**###%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%#************************#################%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%###########################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
####################################################################################%%%%%%%%%%%%%%%#############################################*********############******#################################**************************************###########################################################************************************************%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#***********#**********************************########################################################%%%%%##**####*#*************************************************************************************************************************####%%%%%######*****************************###%%%%###*************************************************************#@@@@@@@@@@@@@@@@@@@%****#@@@@@@@@@@@@@@@@@@@@@@#**************%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##################################################################%%%%%%##***************************************************************************##%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##########**********************##############%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####################################################################################*****##%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###****************************************************####%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%##*********************************************************************************************************+++++++++++++++++++++++++++++++++++++++************************************++++++++**#********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**###%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%#********************####################%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%##############################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
####################################################################################%%%%%%%%%%%%%%##############################################******###############*****###################################*************************************###########################################################************************************************%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#***********#**************************************####################################################%%%%###*##*##*#*************************************************************************************************************************######%%%#####******************************###%%%%###*************************************************************%@@@@@@@@@@@@@@@@@@@#****%@@@@@@@@@@@@@@@@@@@@@%**************#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####################################################################%%%%#*****************************************************************************##%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#########*************************############%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###################################################################################*#**##%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####***************************************************####%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%##***********************************************************************************************************++++++++++++++++++++++++++++++++++++++***********************************++++++++=+*****++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**####%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%##*****************#####################%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
####################################################################################%%%%%%%%%%%%%%################################################***################*****###################################*************************************###########################################################************************************************%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#***********#****************************************##################################################%%%%######*###**************************************************************************************************************************######%%######******************************###%%%%###************************************************************#@@@@@@@@@@@@@@@@@@@%****#@@@@@@@@@@@@@@@@@@@@@@%**************%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%################################%%%##################################%#*****************************************************************************##%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@%%%%@@@@@@@@@%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%@@%%%%@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########***************************###########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####################################################################################*##%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####***************************************************####%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%##***********************************************************************************************************++++++++++++++++++++++++++++++++++++++**********************************+++++++++++=+***++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**####%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%##***************######################%%%%@@@@@@@@@@@@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%####################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
#####################################################################################%%%%%%%%%%%%##########################################################################################################*************************************###############################################################*********************************************#%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#***********#*******************************************###############################################%%%%###########*************************************************************************************************************************##############******************************###%%%####************************************************************%@@@@@@@@@@@@@@@@@@@#****%@@@@@@@@@@@@@@@@@@@@@@#*************%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@%%%%%%@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%@@@@@@@%%%%%%%%%%%#%%%%%%%%%%%%%%%%%%%%%%%%%%###############################%%%%%#############################%%####******************************************************************************#%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@%%%%%%%@@@@%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%%@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#########****************************##########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###***************************************************###%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%##***************************************************************************************************************++++++++++++++++++++++++++++++************************************+++++++++++++++=+**+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**###%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%#*************#######################%%%@@@@@@@@@@@@@@@@@@%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#########################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
#####################################################################################%%%%%%%%%%%%##########################################################################################################*************************************###############################################################*********************************************#%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#***********##********************************************#############################################%%%############*************************************************************************************************************************##############******************************###%%%####************************************************************%@@@@@@@@@@@@@@@@@@%#****%@@@@@@@@@@@@@@@@@@@@@@*************#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##############################%%%%%%%##################################******************************************************************************##%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########******************************#########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###***************************************************##%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%####*************************************************************************************************************++++++++++++++++++++++++++++++************************************+++++++++++****++++*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**###%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%#***********########################%%%%@@@@@@@@@@@@@@@@@@%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%#############################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
#####################################################################################%%%%%%%%%%%%###########################################################################################################************************************##############################################################**********************************************#%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#***********##*********************************************############################################%%%############*************************************************************************************************************************##############******************************###%%%####***********************************************************#@@@@@@@@@@@@@@@@@@@%#***#@@@@@@@@@@@@@@@@@@@@@@%*************%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%##%%%%%%%%%%%%%%%%%%%%%%%%%%%############################%%%%%%%%%#################################*******************************************************************************##%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%@@@@@@@%@@%%%%%%%%%%%%%%%%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########*******************************##########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###**************************************************###%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#####*************************************************************************************************************++++++**++++++++++++****+++************************************+++++++++++******+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**####%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%#*********#########################%%%@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@%%%##################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
#####################################################################################%%%%%%%%%%%############################################################################################################************************************##############################################################**********************************************#%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%**********###*********************************************############################################%%%###########***************************************************************************************************************************############*******************************###%%%####***********************************************************%@@@@@@@@@@@@@@@@@@%##***%@@@@@@@@@@@@@@@@@@@@@@#************#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@%%%%%%%%@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###########################%%%%%%%%%%%################################*******************************************************************************##%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%@@@@@@@@@@@@%%%%%%%%%%%%@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########********************************#########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###**************************************************###%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#######***********************************************######******************************************************++++++++++++++++++++++++**************************************++++++++++**********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**####%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%##******##########################%%%@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@%####################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
######################################################################################%%%%%%%%%%############################################################################################################************************************##############################################################**********************************************#%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%**********###*********************************************############################################%%###########****************************************************************************************************************************############*******************************###%%%####**********************************************************#@@@@@@@@@@@@@@@@@@@%#***#@@@@@@@@@@@@@@@@@@@@@@%************#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##########################%%%%%%%%%%%%###############################********************************************************************************##%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%@@@@@@@@@@@@%%%%%%%%%%%%@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######**********************************########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#############################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###***********************************************#####%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#######*********************************************##########******************************************************++++++++++++++++++++++**************************************+++++++***************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**####%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%#*****##########################%%%@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@%###################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
######################################################################################%%%%%%%%%#############################################################################################################************************************##############################################################**********************************************%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%**********###*********************************************############################################%%##########******************************************************************************************************************************##########********************************###%%%####**********************************************************%@@@@@@@@@@@@@@@@@@@%#***%@@@@@@@@@@@@@@@@@@@@@@#************%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@%%%%%%%%@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%##########################%%%%%%%%%%%%%%##############################*********************************************************************************##%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%@@@@@@@@@@@@@@%%%%%%%%%%@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########***********************************########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#############################################################################%%%%%@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%###*********************************************#######%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%########******************************************#############******************************************************+++++++++++++++++*****************************************+++++*****########*#***+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**###%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%###############################%%%@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@%###################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
#######################################################################################%%%%%%%%#############################################################################################################***********************************##############################################################***********************************************%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#*********###*********************************************#############################################%##*#######*******************************************************************************************************************************########*********************************###%%%####*********************************************************#@@@@@@@@@@@@@@@@@@@%###**@@@@@@@@@@@@@@@@@@@@@@@************#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%##########################%%%%%%%%%%%%%%%#############################*********************************************************************************###%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%@@@@@@@@%%%%%%%%%%%@@@@@@@@@@%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%@@@@@@@@@@@@@@@@%%%%%%%%@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######************************************########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##########################################################################%%%%@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%###********************************************########%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%########***************************************###############********************************************************+++++++++++****************************************************#############*#*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***###%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%##############################%%%@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@%##################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
#######################################################################################%%%%%%%%#############################################################################################################***********************************##############################################################***********************************************%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#*********###*********************************************################################################*#######********************************************************************************************************************************######*********************************####%%%####*********************************************************%@@@@@@@@@@@@@@@@@@@%###*#@@@@@@@@@@@@@@@@@@@@@@%************@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%%%%%@@@@@@@@@@@@@@@@@@@@@%%%%%%%%@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%##########################%%%%%%%%%%%%%%%%%############################*********************************************************************************###%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%@@@@@@@@@%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%@@@@@@@@@@@@@@@@%%%%%%%%@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########************************************########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#########################################################################%%%@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%##******************************************#########%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#########*************************************################****************************************************************************************************************#####################*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**####%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#############################%%%@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@%#################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
########################################################################################%%%%%%################################################################################################################*********************************##############################################################**********************************************#%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#*********###*********************************************##############################################*#*#######************************************************************************************************************************************************************************###%%%####********************************************************#@@@@@@@@@@@@@@@@@@@@%###*%@@@@@@@@@@@@@@@@@@@@@@#***********%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%########################%%%%%%%%%%%%%%%%%%%%#######################%#%#**********************************************************************************###%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%@@@@@@@@@@@@@@@@%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%@@@@@@@@@@@@@%%%%%%%%%%@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######*************************************########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####################################################################%%%@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%##*****************************************##########%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%##########**********************************###################******************************************************************+*****************************************#########################+=+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**####%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%###########################%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@%###############################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
########################################################################################%%%%%%################################################################################################################*********************************##############################################################**********************************************#%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#*********###*********************************************##############################################*#*#######************************************************************************************************************************************************************************###%%%####********************************************************%@@@@@@@@@@@@@@@@@@@%%####@@@@@@@@@@@@@@@@@@@@@@%***********#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%##################%%%%%@%%%%%%%%%%%%%%%%%%%%%#########################%#**********************************************************************************###%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%@@@@@@@@@@@@@@@@@%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%@@@@@@@@@@@@%%%%%%%%%%@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########*************************************########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####################################################################%%@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%##***************************************############%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%###########********************************#####################**####****************************************************************************************************##########################+=+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**####%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#########################%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@%%##############################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
########################################################################################%%%%%%################################################################################################################*********************************##############################################################**********************************************#%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#*********###*********************************************##############################################*##########***********************************************************************************************************************************************************************###%%%####*******************************************************#@@@@@@@@@@@@@@@@@@@@%%###%@@@@@@@@@@@@@@@@@@@@@@%***********@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@%%%%%%%%%%%%@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%#############%%%%@@@@%%%%%%%%%%%%%%%%%%%%%%%%%##########################***********************************************************************************##%%%%%%%%%%%%%%%%%%%@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%@@@@@@@@@@@@@@@@@@%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######**************************************########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#################################################################%@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%##**************************************#############%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%############*****************************################################************************************************************************************************###########################+==++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**####%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%########################%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@%#############################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
#########################################################################################%%%%##################################################################################################################*******************************###############################################################**********************************************#%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#*********###*********************************************#################################################*########**********************************************************************************************************************************************************************###%%%####*******************************************************%@@@@@@@@@@@@@@@@@@@%%%###%@@@@@@@@@@@@@@@@@@@@@@#**********%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%########%%%@@@@@%%%%%%%@%%%@@@%%%%%%%%%%%%%%%%%########################************************************************************************************###%%%%%%%%%%%%%%%%%%%%@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########**************************************########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%############################################%%%%%%%############%%@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%###************************************#############%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#############**************************#################################%%#*********************************************************************************************############################*==++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*####%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#######################%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@%############################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
##########################################################################################%%####################################################################################################################******************************################################################################*********************************************#%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#*********###*********************************************##########################################################**********************************************************************************************************************************************************************###%%%####******************************************************#@@@@@@@@@@@@@@@@@@@@%%%###@@@@@@@@@@@@@@@@@@@@@@%**********#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%@@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@%%%%%@@@@@@@@@@@@@@@@%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%%%%@%%%%%%%%@@@%%%%%%%%%%%%%%%%%%%%%#######################*************************************************************************************##%%%%%%%%%%%%%%%%%%%%%@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########***************************************########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##########################################%%%%%%%%###########%%@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%##***********************************############%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%#############************************###################################%%##*******************************************************************************************############################*+==++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**####%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%######################%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%@@@@@@@@@@@@@%###########################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
################################################################################################################################################################################################################******************************################################################################*********************************************#%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#*********###*********************************************###########################################################*********************************************************************************************************************************************************************###%%%####******************************************************%@@@@@@@@@@@@@@@@@@@@%%%##%@@@@@@@@@@@@@@@@@@@@@@#**********%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@%%%%@@@@@@@@@@@@%@@@%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%@%@@@@%@@@@@@%%%@%%@@@@%%%%%%%%@@%%%%%%%%%%%%%%%%%######################*************************************************************************************###%%%%%%%%%%%%%%%%%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######****************************************########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########################################%%%%%%%%###########%%@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%##**********************************###########%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%#############**********************######################################%%%##****************************************************************************************######%%%%%%%#################*===+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**####%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#####################%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%@@@@@@@@@@@@@%###########################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
################################################################################################################################################################################################################******************************################################################################*********************************************#%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#*********###********************************************#############################################################*******************************************************************************************************************************************************************####%%%####*****************************************************#@@@@@@@@@@@@@@@@@@@@%%%%#%@@@@@@@@@@@@@@@@@@@@@@@**********%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%@@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@%%%%@@@@@@@@@@@@%@@@%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%@%%@@@@%%%%@@@@%%@%%%%%%%%@@@@%%%%%%%%%%%%%%%%%%%%%%#################%##**************************************************************************************###%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########*****************************************#######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########################################%%%%%%%%%%%########%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%#*********************************##########%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#############*********************########################################%%%%%#*************************************************************************************#####%%%%%%%%%%%###############*++=+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**####%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%###################%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@%###########################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
################################################################################################################################################################################################################*****************************#################################################################*********************************************#%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#*********###********************************************#################################################*############******************************************************************************************************************************************************************####%%%####*****************************************************%@@@@@@@@@@@@@@@@@@@@%%%%#%@@@@@@@@@@@@@@@@@@@@@@%*********#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%@@@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@%%%%@@@@@@@@@@@@%@@@%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@%@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@%%%%%%%%%%%@@@%@@@%%@@%@@@@@@%%%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%#############%##%##**************************************************************************************###%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######******************************************#######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######################################%%%%%%%%%%%%%####%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%#********************************#########%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%##############******************############################################%%%%%##*******************************************************************************#####%%%%%%%%%%%%%%%###############*+==+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**#####%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#################%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@%##########################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
#################################################################################################################################################################################################################****************************#################################################################********************************************#%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#*********###********************************************###############################################################*****************************************************************************************************************************************************************####%%%####****************************************************#@@@@@@@@@@@@@@@@@@@@%%%%#%@@@@@@@@@@@@@@@@@@@@@@@#*********%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%@@@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@%%%%%%%@@@@@@@@@@@@@%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%@%%%%%%%%@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##################***************************************************************************************##%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########******************************************#######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####################################%%%%%%%%%%%%%%%%%#%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%##******************************########%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%#############****************###############################################%%%%%%%##**************************************************************************####%%%%%%%%%%%%%%%%%%%#######%########*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**#####%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%################%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@%%%%%%%%%%%%@@@%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@%##########################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
#################################################################################################################################################################################################################****************************#################################################################********************************************#%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#*********###********************************************###############################################################*****************************************************************************************************************************************************************####%%%####****************************************************%@@@@@@@@@@@@@@@@@@@@%%%%%%@@@@@@@@@@@@@@@@@@@@@@%*********#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%@@@@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@%%%%%%%@@@@@@@@@@@@@%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%################****************************************************************************************###%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######*******************************************########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####################################%%%%%%%%%%%%%%%%#%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%##******************************#######%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#############**************###############################################**#%%%%%%%%%%###*******************************************************************####%%%%%%%%%%%%%%%%%%%%%%######%#########**++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**####%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%##############%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%@@@@@@@%%%%%%%%%%%%%%%@@@@@@@@@@@@@@%#########################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
#################################################################################################################################################################################################################****************************#################################################################********************************************#%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#*********###********************************************###############################################################*****************************************************************************************************************************************************************####%%%####***************************************************#@@@@@@@@@@@@@@@@@@@@%%%%%%%@@@@@@@@@@@@@@@@@@@@@@%*********@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%@@@@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@%%%%%%%%%@@@@@@@@@@@@%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#############%#****************************************************************************************####%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######*********************************************#######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####################################%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%#*****************************#######%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#############*************###############################################****##%%%%%%%%%%%%%###***##########*********************************************###%%%%%%%%%%%%%%%%%%%%%%%%%%%######%###########*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***####%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#############%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%@@%%%%%%@@@@@@@@@@@@@%#########################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
##################################################################################################################################################################################################################***************************#################################################################********************************************#%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#*********###********************************************################################################################****************************************************************************************************************************************************************####%%%####**************************##***********************@@@@@@@@@@@@@@@@@@@@@%%%%%%@@@@@@@@@@@@@@@@@@@@@@@#********%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%@@@@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@%%%%%%%%%%@@@@@@@@@@@%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####%%##%#%#%#*****************************************************************************************###%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######*********************************************#########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###################################%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%#*****************************#####%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#############***********#################################################*****##%%%%%%%%%%%%%%%%%%%%%%############*********************************#####%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######%############*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**#####%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%############%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@%%@@@@@@@@@@@@@%########################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
##################################################################################################################################################################################################################***************************##################################################################*******************************************#%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#*********###********************************************################################################################****************************************************************************************************************************************************************####%%%####**************************##**********************%@@@@@@@@@@@@@@@@@@@@%%%%%%%@@@@@@@@@@@@@@@@@@@@@@%********#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%@@@@@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@%%%%%%%%%%@@@@@@@@@@@%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#%#%#%#*****************************************************************************************###%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######**********************************************##########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##############################%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%#***************************#####%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%##############********##################################################******####%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######*******************######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###################**++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**#####%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#########%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@%########################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
##################################################################################################################################################################################################################***************************##################################################################*******************************************#%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%*********###********************************************################################################################****************************************************************************************************************************************************************####%%%####*************************###*********************#@@@@@@@@@@@@@@@@@@@@@%%%%%%@@@@@@@@@@@@@@@@@@@@@@@#********@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%@@@@@@@@@%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@%%%%%%%%%%%@@@@@@@@@@%%%%%%%%%%%%%%%%@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#%#%%##*****************************************************************************************###%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######************************************************##########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#############################%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%#***************************####%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%##############*****################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######%############*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***#####%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%########%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@########################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
##################################################################################################################################################################################################################***************************##################################################################*******************************************#%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%*********###********************************************################################################################*******************#********************************************************************************************************************************************####%%%####*************************####********************%@@@@@@@@@@@@@@@@@@@@%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@********%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%@@@@@@@@@@%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@%%%%%%%%%%%%@@@@@@@@@%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%@@@@@@@@@%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#*******************************************************************************************###%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########************************************************############%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######################%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%#**************************####%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%###############**####################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########%#**#########*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***#####%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%######%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#######################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
##################################################################################################################################################################################################################***************************##################################################################*******************************************%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%*********###********************************************################################################################*******************#********************************************************************************************************************************************####%%%####*************************####*******************#@@@@@@@@@@@@@@@@@@@@%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@%*******#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%@@@@@@@@@%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@%%%%%%%%%%%%@@@@@@@@@%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%@@@@@@@@@%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#*******************************************************************************************###%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########************************************************#############%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###%##################%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%##*************************###%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%########################################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########%#*****######**++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%####%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@%@@@@@@@@@@@@@@#######################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
##################################################################################################################################################################################################################***************************##################################################################*******************************************%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%*********###********************************************##################################################################**************************************************************************************************************************************************************####%%%####*************************####*******************%@@@@@@@@@@@@@@@@@@@@%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@#*******%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%@@@@@@@@@@%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%@@@@@@@@%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%#%%#*******************************************************************************************####%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########*************************************************##############%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##################%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%#************************###%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%######################################%%%%%%%#############################################%%%%%%%%%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#########%#*********#***++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**#####%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%######################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
###################################################################################################################################################################################################################**************************##################################################################*******************************************%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%*********###********************************************###################################################################*************************************************************************************************************************************************************####%%%####*************************####******************#@@@@@@@@@@@@@@@@@@@@%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@*******%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%@@@@@@@@@@%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%@@@@@@@@%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%@@@@@@%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##*******************************************************************************************###%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#########**************************************************##############%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######%%#####%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#####********************##%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%###########%%%%#####################%%%%%%%%%%%#############################################%%%%%%%%%%%%%%%%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#########%#**+++********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**#####%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@######################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
###################################################################################################################################################################################################################**************************##################################################################*******************************************%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%*********###*******************************************####################################################################*************************************************************************************************************************************************************####%%%####*************************####******************%@@@@@@@@@@@@@@@@@@@@%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@%******#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%@@@@@@@@@@@%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%@@@@%@@@%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###******************************************************************************************###%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##########**************************************************###############%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%########****************##%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%########%%%%%%%##################%%%%%%%%%%%%%%##############################################%%%%%%%%%%%%%%%%@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##########%%#*+++++******++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**#####%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#####################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
###################################################################################################################################################################################################################**************************##################################################################*******************************************%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%*********###*******************************************####################################################################*************************************************************************************************************************************************************####%%%####************************#####*****************#@@@@@@@@@@@@@@@@@@@@%##%%%%%@@@@@@@@@@@@@@@@@@@@@@@*******%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%@@@@@@@@@@@%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%@@@%@@@%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####*****************************************************************************************###%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##########***************************************************###############%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%###%#######***********###%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%######%%%%%%%%%#################%%%%%%%%%%%%%%%#################################################%%%%%%%%%%%%@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###########%%#*+*+*++*****+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**######%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@######################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
###################################################################################################################################################################################################################*************************##################################################################*******************************************#%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%*********###*******************************************######################################################################***********************************************************************************************************************************************************####%%%####************************#####*****************%@@@@@@@@@@@@@@@@@@@@%##%%%%%@@@@@@@@@@@@@@@@@@@@@@%******#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%@@@@@@@@@@@%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%@@@@%%%%%%%######****************************************************************************************####%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###########****************************************************###############%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%########*******##%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%####%%%%%%%%%%%################%%%%%%%%%%%%%%%%###################################################%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%############%%#*+*+*++*++*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**######%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#####################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
###################################################################################################################################################################################################################*************************##################################################################*******************************************#%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%*********###******************************************#########################################################################*********************************************************************************************************************************************************####%%%####************************######***************#@@@@@@@@@@@@@@@@@@@@%###%%%%@@@@@@@@@@@@@@@@@@@@@@@#******@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%@@@@@@@@@@@@%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%@@@@@@%%%%%%########***************************************************************************************###%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##########******************************************************###############%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%########****##%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%##%%%%%%%%%%%%%%##############%%%%%%%%%%%%%%%%%####################################################%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###############%%#*+++*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*++++**#####%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#####################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
####################################################################################################################################################################################################################************************##################################################################*******************************************#%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%*********###******************************************##########################################################################********************************************************************************************************************************************************####%%%####************************######***************%@@@@@@@@@@@@@@@@@@@%####%%%%@@@@@@@@@@@@@@@@@@@@@@@******%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%@@@@@@@@@@@@%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%@@@@@@@@@%%%%%#########**************************************************************************************###%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###########*******************************************************##############%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%###########%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%@%%%%%%%%%%%#############%%%%%%%%%%%%%%%%%%####################################################%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#################%%#*++++*+*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***+****######%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#####################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
####################################################################################################################################################################################################################************************##################################################################*******************************************#%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%*********###******************************************###########################################################################******************#************************************************************************************************************************************####%%%####************************######**************#@@@@@@@@@@@@@@@@@@@@%####%%%%@@@@@@@@@@@@@@@@@@@@@@%*****#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%@@@@@@@@@@@@%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%@@@@@@@@@@%%%%###########************************************************************************************###%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%############*******************************************************##############%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%#########%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%############%%%%%%%%%%%%%%%%%%%###################################################%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####################%%#*++++++*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****+****######%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#####################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
####################################################################################################################################################################################################################************************##################################################################*******************************************#%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%*********###******************************************################################################################################**************************************************************************************************************************************************####%%%###*************************######**************%@@@@@@@@@@@@@@@@@@@@#*####%%@@@@@@@@@@@@@@@@@@@@@@@#*****@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%@@@@@@@@@@@@@%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%@@@@@@@@@@@%%%#############**********************************************************************************####%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#############********************************************************##############%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%######%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%###########%%%%%%%%%%%%%%%%%%%%#################################################%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%#####################%%%%*+++*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********######%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%####################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
####################################################################################################################################################################################################################************************##################################################################*******************************************#%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#*******####******************************************################################################################################**************************************************************************************************************************************************####%%%###*************************######**************@@@@@@@@@@@@@@@@@@@@%***###%%@@@@@@@@@@@@@@@@@@@@@@%*****%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%@@@@@@@@@@@@@%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%@@@@@@@@@@@%%%%#############*********************************************************************************####%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%############*********************************************************##############%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%#####%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%#########%%%%%%%%%%%%%%%%%%%%%################################################%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%#######################%%%%*+++*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***********#####%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%####################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
####################################################################################################################################################################################################################************************##################################################################*******************************************%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#*******####******************************************#################################################################################*************************************************************************************************************************************************####%%%###*************************######************+%@@@@@@@@@@@@@@@@@@@@#***####%@@@@@@@@@@@@@@@@@@@@@@%****#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%@@@@@@@@@@@@@@%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%@@@@@@@@@@@@%%%%###############********************************************************************************###%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##############**********************************************************##############%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%###%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%#######%%%%%%%%%%%%%%%%%%%%%%%############################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@%%%%%%%%%%#########################%%%%*+++*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++************######%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%####################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
####################################################################################################################################################################################################################***********************###################################################################******************************************#%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#*******####******************************************#################################################################################*************************************************************************************************************************************************####%%%###*******+*+++*****+*******######*************%@@@@@@@@@@@@@@@@@@@%*****###%@@@@@@@@@@@@@@@@@@@@@@#****@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%@@@@@@@@@@@@@@%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@%%%################*******************************************************************************####%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##############************************************************************#############%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%####%%%%%%%%%%%%%%%%%%%%@@%%%#########################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###########################%%%%#+*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*************#####%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#####################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
####################################################################################################################################################################################################################***********************###################################################################******************************************#%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#*******####******************************************#################################################################################*************************************************************************************************************************************************####%%%###******++*+++++***+*******######***********+#@@@@@@@@@@@@@@@@@@@@#*****###@@@@@@@@@@@@@@@@@@@@@@%****%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%@@@@@@@@@@@@@@@%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@%%%%#################*****************************************************************************####%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###############************************************************************##############%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%###%%%%%%%%%%%%%%%%%%%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%###############%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##########################%%%%#+*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***************####%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#####################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
####################################################################################################################################################################################################################***********************###################################################################******************************************#%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#*******#####*****************************************#################################################################################*************************************************************************************************************************************************###%%%%###******++*+++++++++******#######************%@@@@@@@@@@@@@@@@@@@@*******#%@@@@@@@@@@@@@@@@@@@@@@%***#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%@@@@@@@@@@@@@@@%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@%%%%%##################***************************************************************************####%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##############**************************************************************#############%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#########################%%%%#+*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***************####%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%####################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
####################################################################################################################################################################################################################***********************###################################################################******************************************#%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#*******#####*****************************************##################################################################################************************************************************************************************************************************************###%%%%###******++*+++++++++******#######************@@@@@@@@@@@@@@@@@@@@%*******#%@@@@@@@@@@@@@@@@@@@@@@#**#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%@@@@@@@@@@@@@@@%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@%%%%%%##################**************************************************************************#####%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##############****************************************************************#############%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######################%%%%%#**++*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****************###%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%####################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
####################################################################################################################################################################################################################***********************###################################################################******************************************#%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%******######*****************************************##################################################################################************************************************************************************************************************************************###%%%%###******++++++++++++******########**********#@@@@@@@@@@@@@@@@@@@@#*******#@@@@@@@@@@@@@@@@@@@@@@%***%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%@@@@@@@@@@@@@@@@%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@%%%%%%%%##################*************************************************************************#####%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##############*******************************************************************###########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@%%%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%%@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####################%%%%%#*****+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****************###%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#####################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
##################################################################################################################################################################################################################************************###################################################################*******************************************#%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%******######******************************************########################################################################*#############*******************************************************************************************************************************************###%%%%###******++*++++++++*******########**********%@@@@@@@@@@@@@@@@@@@@********#@@@@@@@@@@@@@@@@@@@@@@%**%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%@@@@@@@@@@@@@@@@%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@%%%%%%%%####################***********************************************************************######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%############*******************************************************************############%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@%%%%@@@@@@@@@%%%%%%%%%%%%%%%%%%@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####################%%%%%#**++*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********************##%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#####################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
##################################################################################################################################################################################################################************************###################################################################*******************************************#%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#*****######******************************************#######################################################################################******************************************************************************************************************************************###%%%%###*******+*++++++++*******########********+#@@@@@@@@@@@@@@@@@@@@%********%@@@@@@@@@@@@@@@@@@@@@@#*#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%@@@@@@@@@@@@@@@@@%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@%%%%%%%%%%###################**********************************************************************######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#############********************************************************************############%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%@@@@@@@@@@@@@%%%%%%%%%%%%%%%%@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####################%%%%%#**++*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******************###%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#####################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
####################################################################################################################################################################################################################**********************###################################################################*******************************************#%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#*****######******************************************########################################################################################*****************************************************************************************************************************************###%%%%###*******+***++++*********########****+****%@@@@@@@@@@@@@@@@@@@@#********@@@@@@@@@@@@@@@@@@@@@@%**@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%@@@@@@@@@@@@@@@@@%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@%%%%%%%%%%%%#####################*******************************************************************#######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%############*********************************************************************############%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###################%%%%%#*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******************###%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#####################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
#####################################################################################################################################################################################################################*********************###################################################################*******************************************%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#****#######******************************************##########################################################################################***************************************************************************************************************************************###%%%%###************++**********########*******+*@@@@@@@@@@@@@@@@@@@@@********#@@@@@@@@@@@@@@@@@@@@@@%*%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%@@@@@@@@@@@@@@@@@@%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@%%%%%%%%%%%%%######################*****************************************************************########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%############***********************************************************************############%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##################%%%%%%#*+*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******************###%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#####################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
#####################################################################################################################################################################################################################*********************###################################################################*******************************************%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#***########******************************************###############################################################################################**********************************************************************************************************************************###%%%%###***********************#########*******+#@@@@@@@@@@@@@@@@@@@@%********%@@@@@@@@@@@@@@@@@@@@@@*#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%@@@@@@@@@@@@@@@@@@@%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@%%%%%%%%%%%%%#######################***************************************************************#########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%############***********************************************************************#############%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##################%%%%%%#*+*++**+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********************##%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#####################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
#####################################################################################################################################################################################################################*********************###################################################################*******************************************%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#**#########*******************************************###############################################################################################*********************************************************************************************************************************###%%%%###***********************#########********%@@@@@@@@@@@@@@@@@@@@#******+#@@@@@@@@@@@@@@@@@@@@@@@*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%@@@@@@@@@@@@@@@@@@@%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%########################*************************************************************#########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###########**************************************************************************############%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#################%%%%%%**+*+***++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********************###%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#####################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
#####################################################################################################################################################################################################################*********************###################################################################*******************************************%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%############*******************************************###############################################################################################*********************************************************************************************************************************###%%%####***********************####%####*******#@@@@@@@@@@@@@@@@@@@@%********%@@@@@@@@@@@@@@@@@@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%@@@@@@@@@@@@@@@@@@@@%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%########################***********************************************************###########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##########***************************************************************************############%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###############%%%%%%%**+*+****+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********************###%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%####################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
#####################################################################################################################################################################################################################*********************###################################################################*******************************************%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%############*******************************************###*###########################################################################################*********************************************************************************************************************************####%%####***********************####%####*******%@@@@@@@@@@@@@@@@@@@@%+*******@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%@@@@@@@@@@@@@@@@@@@@%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%#########################*********************************************************############%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##########***************************************************************************############%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###############%%%%%%%****+****+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********************##%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%####################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
#####################################################################################################################################################################################################################********************####################################################################*******************************************%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%############**********************************************#############################################################################################*****************************************************************************************#####**********************************###%%%####*****************+*****####%%####******@@@@@@@@@@@@@@@@@@@@@********#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%@@@@@@@@@@@@@@@@@@@@@%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%###########################******************************************************##############%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%############****************************************************************************############%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#############%%%%%%%#*+*+*******+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**************************##%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@%####################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
####################################################################################################################################################################################################################*********************####################################################################******************************************#%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%###########*************************************************##########################################################################################****************************************************************************************#######*********************************###%%%####*****************+*****###%%%####*****#@@@@@@@@@@@@@@@@@@@@%********%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%@@@@@@@@@@@@@@@@@@@@%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%############################***************************************************################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%############******************************************************************************###########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#############%%%%%%%#***********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**************************##%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@%####################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
####################################################################################################################################################################################################################*********************####################################################################******************************************#%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%###%%%%#####***************************************************########################################################################################**************************************************************************************#########********************************###%%%####***********************###%%%####*****%@@@@@@@@@@@@@@@@@@@@#+*******@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%@@@@@@@@@@@@@@@@@@@@@%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%#############################************************************************#################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#############******************************************************************************############%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%@%%@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#############%%%%%%%#*****+*****+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*************************##%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@%####################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
####################################################################################################################################################################################################################*********************#####################################################################*****************************************#%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%##%%%%%#####*****************************************************#######################################################################*##############*************************************************************************************###########*******************************###%%%####***********************###%%%%###****#@@@@@@@@@@@@@@@@@@@@%*******+%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@%%%%%%@%@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%###############################********************************************###################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###############******************************************************************************############%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%############%%%%%%%%#*****+******++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*************************#%%%@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@####################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
####################################################################################################################################################################################################################*********************#####################################################################*****************************************#%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%#####*******************************************************#####################################################################################***********************************************************************************#############******************************###%%%####*****************+****####%%%%###****%@@@@@@@@@@@@@@@@@@@@#+*******@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%#################################********************####****************##*#####*############%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###############********************************************************************************###########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%############%%%%%%%%***+*********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***************************##%%@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#####################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
###################################################################################################################################################################################################################**********************#####################################################################*****************************************#%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%#####**********************************************************###################################################################################**********************************************************************************##############*****************************###%%%####*****************+****###%%%%%%###***@@@@@@@@@@@@@@@@@@@@@*******+#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%##################################**************######*****************#**********##########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##############**********************************************************************************###########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%############%%%%%%%%**************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***************************##%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@######################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
###################################################################################################################################################################################################################**********************#####################################################################*****************************************#%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%####****************************************************************##############################################################################***************#******************************************************************##############*****************************###%%%####********+*************###%%%%%%###**#@@@@@@@@@@@@@@@@@@@@#+*******%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%####################################********######*******************************##########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###############**********************************************************************************###########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%############%%%%%%%#*****+*********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**************************##%%@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#####################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
###################################################################################################################################################################################################################**********************#####################################################################*****************************************#%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%####******************************************************************############################################################################**************###****************************************************************########%######*****************************###%%%####********+*************###%%%%%%###**%@@@@@@@@@@@@@@@@@@@@**+****+*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%#######################################*#######**********************************#########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##############***********************************************************************************###########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%############%%%%%%%#*****+*********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++************************##%%%%%@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#####################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
###################################################################################################################################################################################################################**********************####################################################################******************************************%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%#####************************************************************************########################################################################***********#####***************************************************************######%%%######*****************************####%%####**********************###%%%%%%###*#@@@@@@@@@@@@@@@@@@@@%*******+#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%############################################***********************************#########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###############*************************************************************************************##########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%############%%%%%%%#*+*+*+*********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*++++*++*****+******************##%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@####################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
############################################################################################%%#####################################################################################################################**********************#####################################################################*****************************************%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%######*************************************************************************#######################################################################***********######**************************************************************#####%%%%%######****************************###%%%####**********************###%%%%%%###*%@@@@@@@@@@@@@@@@@@@@*********%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%##########################################*************************************########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###############**************************************************************************************##########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%############%%%%%%%****+*+*********+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*++**********************##%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@####################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
###########################################################################################%%%%%###################################################################################################################**********************#####################################################################****************************************#%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#########****************************************************************************#######################################################################*******#######**************************************************************#####%%%%%%#####****************************###%%%####**********************##%%%%%%%####%@@@@@@@@@@@@@@@@@@@%*********@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%######################################**************************************########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%################**************************************************************************************###########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%############%%%%%%#*+**+*+*********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*+++*+++**********************##%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@####################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
###########################################################################################%%%%%###################################################################################################################**********************#####################################################################****************************************#%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%##########*****************************************************************************########################################################################****#######%#**************************************************************####%%%%%%%#####****************************###%%%####*******+*************###%%%%%%%####@@@@@@@@@@@@@@@@@@@@********+#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%####################################**************************************########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%################****************************************************************************************###########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%############%%%%%%#*+**+*+**********++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***++********************##%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@####################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
##########################################################################################%%%%%%%##################################################################################################################**********************#####################################################################****************************************#%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%##########******************************************************************************#######################################################################***########%%#*************************************************************####%%%%%%%#####****************************###%%%####*******+*************###%%%%%%%%##%@@@@@@@@@@@@@@@@@@@%*********%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%#################################***************************************########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#################****************************************************************************************############%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%############%%%%%%#*+**+*************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********************###%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@####################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
##########################################################################################%%%%%%%##################################################################################################################**********************#####################################################################****************************************#%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%##########******************************************************************************######################################################################*****#######%%#*************************************************************####%%%%%%%%####****************************###%%%####*******+*************###%%%%%%%%#%@@@@@@@@@@@@@@@@@@@@#+********@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%###############################****************************************########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#################******************************************************************************************###########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%############%%%%%%*****+**************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****************###%%%%%%%%%%%%%%@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@####################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
##########################################################################################%%%%%%%%#################################################################################################################*********************######################################################################****************************************#%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#*#######********************************************************************************###################################################################*******#######%%#*************************************************************####%%%%%%%%####****************************####%%####*******+*************###%%%%%%%%#%@@@@@@@@@@@@@@@@@@@%*********#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%#############################*****************************************#######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#################******************************************************************************************############%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%############%%%%%#******+*************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******************###%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@####################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
##########################################################################################%%%%%%%%#################################################################################################################*********************######################################################################****************************************#%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#****####********************************************************************************##################################################################********#######%@%************************************************************#####%%%%%%%%####****************************####%%####*******+*************##%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@#+********%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%##########################*****************************************#######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#################******************************************************************************************############%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###########%%%%%%#***+**++************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++************######%%%%%%%%%%%%%%%%%%%%%@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@####################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
##########################################################################################%%%%%%%###################################################################################################################********************######################################################################****************************************#%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#***######*******************************************************************************###############################################################************##*###%@%#***********************************************************#####%%%%%%%%####****************************####%%####*********************##%%%%%%%%%%@@@@@@@@@@@@@@@@@@@%**********@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%########################******************************************#######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%################*********************************************************************************************##########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##########%%%%%%#***********************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*++*++******###%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#####################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
##########################################################################################%%%%%%%###################################################################################################################*******************#######################################################################****************************************#%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#****####********************************************************************************##############################################################*************##*###%@%#***********************************************************#####%%%%%%%%####****************************####%%####********************###%%%%%%%%%@@@@@@@@@@@@@@@@@@@@#*********#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%@@%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####################*******************************************#######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#################*********************************************************************************************###########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##########%%%%%%*+***********************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*++++***#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#####################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
###########################################################################################%%%%%####################################################################################################################*******************#######################################################################****************************************%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#****####********************************************************************************##############################################################*************##*###%@%#***********************************************************#####%%%%%%%%#####***************************####%%####**************+*****###%%%%@%%%%@@@@@@@@@@@@@@@@@@@@**********%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##################********************************************########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##################*********************************************************************************************###########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#########%%%%%%#**************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#####################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
############################################################################################%%%#####################################################################################################################*******************########################################################################***************************************%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#****####********************************************************************************#############################################################**************#**###%@%#***********************************************************#####%%%%%%%%#####***************************####%%####**************+*****###%%%%@@%%@@@@@@@@@@@@@@@@@@@@#+*******+*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%@%%%@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%################********************************************#########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##################**********************************************************************************************############%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#########%%%%%%#**************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%####################################################%%#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
####################################################################################################################################################################################################################*******************########################################################################***************************************%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#****####********************************************************************************###########################################################******************####@@@%***********************************************************#####%%%%%%%%#####***************************####%%####**************+*****##%%%%@@@%@@@@@@@@@@@@@@@@@@@@@*********+%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#############*********************************************#########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###################***********************************************************************************************###########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#########%%%%%%***************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*++**+**#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%####################################################%%#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
####################################################################################################################################################################################################################*******************########################################################################***************************************%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#***#####********************************************************************************########################################################*********************####@@@%#**********************************************************#####%%%%%%%%%####***************************####%%####*******************###%%%@@@@@@@@@@@@@@@@@@@@@@@@@%**********%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##########**********************************************########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###################************************************************************************************************############%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########%%%%%%#***************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****+**#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%####################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
####################################################################################################################################################################################################################*******************########################################################################***************************************%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#***#####********************************************************************************########################################################*********************####@@@%#**********************************************************#####%%%%%%%%%####***************************####%%####*******************###%%%@@@@@@@@@@@@@@@@@@@@@@@@@*********+#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@%%%%%%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%@%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######************************************************########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##################**************************************************************************************************###########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########%%%%%%#***************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*+******#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%####################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
####################################################################################################################################################################################################################*******************########################################################################***************************************%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%***#####********************************************************************************########################################################*********************####@@@%#**********************************************************#####%%%%%%%%%####***************************####%%####*******************###%%%@@@@@@@@@@@@@@@@@@@@@@@@%+*********#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%@%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####*************************************************########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###################***************************************************************************************************###########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########%%%%%%****************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**+******%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%################################################%###%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
###################################################################################################################################################################################################################*******************#########################################################################**************************************#%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%****####********************************************************************************#####################################################******#*****************####@@@%#**********************************************************#####%%%%%%%%%####***************************####%%####******************###%%%%@@@@@@@@@@@@@@@@@@@@@@@@***********%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###*************************************************#########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####################***************************************************************************************************############%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######%%%%%%#*****************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%###################################################%%%#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
###################################################################################################################################################################################################################*******************##########################################################################*************************************#%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%****####********************************************************************************#####################################################************************####@@@%#**********************************************************#####%%%%%%%%%####***************************####%%####******************###%%%@@@@@@@@@@@@@@@@@@@@@@@@%***********@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%@%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##**************************************************########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####################***************************************************************************************************#############%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######%%%%%%#*****************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******+*#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%###################################################%%%#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
###################################################################################################################################################################################################################*******************##########################################################################*************************************#%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%***#####********************************************************************************#####################################################************************###%@@@@%**********************************************************#####%%%%%%%%%####***************************####%#####******************###%%%@@@@@@@@@@@@@@@@@@@@@@@@#**********#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##**************************************************########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######################****************************************************************************************************############%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##%##%%%%%%%*******************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%###################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
###################################################################################################################################################################################################################*******************##########################################################################*************************************#%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%***####*********************************************************************************######################################################***********************###%@@@@%**********************************************************#####%%%%%%%%%####**************************#####%#####******************##%%%%@@@@@@@@@@@@@@@@@@@@@@@%***********%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#**#************************************************#########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######################*****************************************************************************************************#############%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##%##%%%%%%#*******************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%##################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
###################################################################################################################################################################################################################*******************##########################################################################*************************************#%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#***###*********************************************************************************######################################################***********************###%@@@@%**********************************************************#####%%%%%%%%%####********************###########%#####*****************###%%%@@@@@@@@@@@@@@@@@@@@@@@@#***********@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%#*#************************************************#########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####################******************************************************************************************************##############%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###%%%%%%%*********************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******************************#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#############################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
###################################################################################################################################################################################################################*******************##########################################################################*************************************#%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#**####*********************************************************************************#######################################################**********************###%@@@@%#*********************************************************#####%%%%%%%%%####*******************############%#####*****************###%%%@@@@@@@@@@@@@@@@@@@@@@@%***********#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%##*##***********************************************########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######################*****************************************************************************************************###############%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##%%%%%%#*********************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****************************+*#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#############################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
###################################################################################################################################################################################################################*******************##########################################################################*************************************#%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#**####*********************************************************************************########################################################********************####%@@@@%#*********************************************************#####%%%%%%%%%####*******************############%#####****************###%%%%@@@@@@@@@@@@@@@@@@@@@@@#***********%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%#####**********************************************#########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######################*****************************************************************************************************#################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#%%%%%%%#**********************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********************************#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#############################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
###################################################################################################################################################################################################################*******************##########################################################################*************************************#%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#**####*********************************************************************************########################################################*******#************####%@@@@%#*********************************************************#####%%%%%%%%%####*******************############%#####****************###%%%@@@@@@@@@@@@@@@@@@@@@@@%************@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%@@@@%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%#####**********************************************########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######################*****************************************************************************************************##*##############%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#%%%%%%%***********************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********************************%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#############################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
####################################################################################################################################################################################################################******************##########################################################################*************************************#%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#**####*********************************************************************************############################################################****************####%@@@@%#*********************************************************#####%%%%%%%%%####*******************############%#####****************###%%%@@@@@@@@@@@@@@@@@@@@@@@#***********#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@%%%%%%%%%%%%%%%%######********************************************#######%#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%######################******************************************************************************************************##*###############%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*************************+******#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%###########################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
####################################################################################################################################################################################################################******************##########################################################################************************************#%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#*#####*********************************************************************************############################################################****************####%@@@@%#*********************************************************#####%%%%%%%%%####******************############%%%####***************####%%%@@@@@@@@@@@@@@@@@@@@@@@************%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%####**********************************************########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######################*******************************************************************************************************#################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#%%%%%%%#************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*******************************#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%###########################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
####################################################################################################################################################################################################################******************##########################################################################************************************#%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#*#####**********************************************************************************###############%###########################################****************####%@@@@%#**********************************************************#####%%%%%%%%####******************############%%%####***************###%%%@@@@@@@@@@@@@@@@@@@@@@@#************@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%####*********************************************#########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########################********************************************************************************************************#################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#*************************************+++*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********************************+*****#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%###########################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
####################################################################################################################################################################################################################******************##########################################################################************************************#%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%######**********************************************************************************###############%%##########################################****************####%@@@@%#**********************************************************#####%%%%%%%#####******************##########%%%%%####***************###%%%@@@@@@@@@@@@@@@@@@@@@@%************#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%###%%%%###********************************************#########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#########################*********************************************************************************************************#*##############%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#**************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******************************************#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%##########################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
####################################################################################################################################################################################################################******************##########################################################################************************************#%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%######***********************************************************************************##############%%##########################################****************####%@@@@%#**********************************************************#####%%%%%%%#####******************#####%%%%%%%%%%####***************##%%%%@@@@@@@@@@@@@@@@@@@@@@#************#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%@@@%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%#####%%%###*******************************************#########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#########################**********************************************************************************************************#*#*############%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##***************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*************************************+***#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%##########################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
####################################################################################################################################################################################################################******************##########################################################################************************************#%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%######***********************************************************************************##############%%%#########################################****************####%@@@@%#**********************************************************#####%%%%%%%#####******************#####%%%%%%%%%%####**************###%%%@@@@@@@@@@@@@@@@@@@@@@%*************%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%@@@@%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%###########********************************************########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#########################****************************************************************************************************************###########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##****************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******************************************#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#########################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
####################################################################################################################################################################################################################*****************###########################################################################************************************#%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%######***********************************************************************************##############%%%#########################################****************####@@@@@%#**********************************************************#####%%%%%%%#####******************#####%%%%%%%%%%%###**************###%%%@@@@@@@@@@@@@@@@@@@@@@#*************@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%@@@@%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%##########********************************************########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##########################*****************************************************************************************************************###########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##****************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******************************************+***%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#########################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
####################################################################################################################################################################################################################*****************###########################################################################************************************#%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%######***********************************************************************************##############%%@%########################################***************#####@@@@@%#***********************************************************####%%%%%%%#####******************#####%%%%%%%%%%%###**************###%%%@@@@@@@@@@@@@@@@@@@@@@*************#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%@%%%%###########*******************************************########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###########################******************************************************************************************************************###########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%##*********************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++************************************************#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#########################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
####################################################################################################################################################################################################################*****************############################################################################***********************************#%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%######**********************************************************************************###############%@@%####################################*********************###@@@@@%#***********************************************************####%%%%%%%#####******************####%%%%%%%%%%%%###*************###%%%@@@@@@@@@@@@@@@@@@@@@@#*************%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%###########********************************************#######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%############################*******************************************************************************************************************###########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%####*********************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****************************************+*********#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#######################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
####################################################################################################################################################################################################################*****************############################################################################***********************************#%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%######**********************************************************************************###############%@@%####################################*********************###@@@@@%#***********************************************************####%%%%%%%#####******************####%%%%%%%%%%%%###*************###%%%@@@@@@@@@@@@@@@@@@@@@%**************%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%@%%%%##########********************************************########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%############################********************************************************************************************************************###########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%@%%####*********************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**************************++***********************#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#######################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
####################################################################################################################################################################################################################*****************############################################################################***********************************#%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%######**********************************************************************************###############%@@@%################################************************###@@@@@%#***********************************************************#####%%%%%%#####******************####%%%%%%%%%%%%###*************###%%%@@@@@@@@@@@@@@@@@@@@@#**************@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%@%%%%###########*******************************************########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#############################**********************************************************************************************************************##########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%@%@%#####**********************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********************************************+*******#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#######################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
###################################################################################################################################################################################################################******************############################################################################***********************************%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%######*********************************************************************************################%@@@%###############################***********************#*##%@@@@@%#***********************************************************#####%%%%%%#####******************####%%%%%%%%%%%%%##*************###%%%@@@@@@@@@@@@@@@@@@@@%**************#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%##########********************************************#######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%############################***********************************************************************************************************************###########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%@@%%######**********************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++******************************************************+****#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@########################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
###################################################################################################################################################################################################################******************############################################################################***********************************%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#####**********************************************************************************################%@@@%###############################***********************#*##%@@@@@%#***********************************************************#####%%%%%######******************####%%%%%%%%%%%%%##************###%%%%@@@@@@@@@@@@@@@@@@@@#**************%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%@@@%@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%@%%@%%%%%%###########*******************************************#######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%############################************************************************************************************************************************###########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@%@%#######**********************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++********************************************************+***#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%########################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
###################################################################################################################################################################################################################******************############################################################################***********************************%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#####*********************************************************************************#################%@@@@%###############################*******************#**#*##%@@@@@%#***********************************************************######%%%%######******************####%%%%%%%%%%%%%##************###%%%%@@@@@@@@@@@@@@@@@@@%***************%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%@@@@%%@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@@@%%%%%%###########*******************************************########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#############################*************************************************************************************************************************###########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@%#######**********************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***************************************************************#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#########################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
########################################################################################%%#########################################################################################################################******************############################################################################***********************************%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%####*********************************************************************************#################%@@@@%##################################****************#**#*##%@@@@@%#***********************************************************########%######*******************####%%%%%%%%%%%%%##************###%%%@@@@@@@@@@@@@@@@@@@@#***************@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@@@%%@%%%%##########*******************************************########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%############################***************************************************************************************************************************###########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@%#########******************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**************************************************************#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@###########################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
########################################################################################%%%#######################################################################################################################*******************############################################################################***********************************%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%####*********************************************************************************#################%@@@@%##################################****************#**#*##%@@@@@%#***********************************************************###############*******************####%%%%%%%%%%%%###************###%%%@@@@@@@@@@@@@@@@@@@%***************#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%@%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@%@%@%%%%###########*******************************************#######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#############################****************************************************************************************************************************##########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@%%%%%%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@%##########******************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****************************************************************#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%###########################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
#######################################################################################%%%%%%######################################################################################################################******************#############################################################################**********************************%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#####*******************************************************************************###################@@@@%%###################################***************#**###%@@@@@%#************************************************************##############*******************####%%%%%%%%%%%%###************###%%%@@@@@@@@@@@@@@@@@@@#***************#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@%@@%%%%%%%%%##########*******************************************#######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#############################*****************************************************************************************************************************#########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@%%%%%%%@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@%###########**********************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****************************************************************************#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@###############################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
#######################################################################################%%%%%%######################################################################################################################******************#############################################################################*********************************#%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#####*******************************************************************************###################@@@@@%###################################******************###%@@@@@%#************************************************************##############*******************####%%%%%%%%%%%%###************##%%%@@@@@@@@@@@@@@@@@@@%#***************%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@%@@@@@%%%%%%###########******************************************#######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#############################*******************************************************************************************************************************#########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@%%%@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@%###########**********************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****************************************************************************#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%###############################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
#######################################################################################%%%%%%#######################################################################################################################*****************#############################################################################*********************************#%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#####*******************************************************************************###################@@@@@%####################################****************####%@@@@@%#*************************************************************#############*******************####%%%%%%%%%%%%###***********###%%%@@@@@@@@@@@@@@@@@@@%****************%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@%%%%%%###########******************************************########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##############################*********************************************************************************************************************************########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@%############***********************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***********************************************************************************#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%###############################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
#######################################################################################%%%%%%#######################################################################################################################*****************#############################################################################*********************************#%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#####*******************************************************************************###################@@@@@%####################################****************####%@@@@@%#*************************************************************############********************####%%%%%%%%%%%%###***********###%%%@@@@@@@@@@@@@@@@@@%#***************#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%@%###########******************************************#######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###############################**********************************************************************************************************************************#######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@%%############************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++************************************************************************************#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
#######################################################################################%%%%%%%######################################################################################################################****************##############################################################################*********************************#%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#####*******************************************************************************###################@@@@@%######################################************######%@@@@@%#**************************************************************###########********************####%%%%%%%%%%%%%###**********###%%%@@@@@@@@@@@@@@@@@@%#***************#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@%%%%%%%###########******************************************#######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###############################************************************************************************************************************************************#######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@%#############*************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++****************************************************************************************#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@##################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
#######################################################################################%%%%%%%######################################################################################################################****************##############################################################################*********************************#%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#####********************************************************************************##################@@@@@@%#####################################************######@@@@@@%#**************************************************************##########*********************####%%%%%%%%%%%%%###**********###%%%@@@@@@@@@@@@@@@@@%##***************%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%##########******************************************#######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###############################**************************************************************************************************************************************######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@%#############***********************************************************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*****************************************************************************************#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%##%###############################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
#######################################################################################%%%%%%%######################################################################################################################****************##############################################################################*********************************#%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#####********************************************************************************##################@@@@@@%######################################************#####@@@@@@%#****************************************************************######***********************####%%%%%%%%%%%%%###*********####%%@@@@@@@@@@@@@@@@@@%##***************@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%###########******************************************######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%################################**************************************************************************************************************************************#######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@%###############***************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++************************************************************************************************#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%###################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
#######################################################################################%%%%%%%%#####################################################################################################################****************##############################################################################*********************************#%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#####********************************************************************************##################@@@@@@%######################################************#####@@@@@@%#*****************************************************************####***********************#####%%%%%%%%%%%%%###*********###%%%@@@@@@@@@@@@@@@@@@###***************@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%@@@@@@@@@@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%##########******************************************######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%################################*****************************************************************************************************************************************######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@%#################*************************************************************************++++++++++++++++++++++++++++++++********++++++++++++++++**********************************************************************************************************************###%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#%#################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
#######################################################################################%%%%%%%%######################################################################################################################**************###############################################################################*********************************#%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#####********************************************************************************##################@@@@@@%###*##*###############################**#********#*####@@@@@@%#********************************************************************************************#####%%%%%%%%%%%%%###*********###%%%@@@@@@@@@@@@@@@@@%%##**************#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%#########******************************************#######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%################################******************************************************************************************************************************************#####%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@%###################***********************************************************************************************************************************************+****************************************************************************************************####%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%####################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
########################################################################################%%%%%%%######################################################################################################################*************################################################################################*********************************#%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%####*********************************************************************************################%@@@@@@%###*##################################**#********#*####@@@@@@%#********************************************************************************************#####%%%%%%%%%%%%%###*********###%%%@@@@@@@@@@@@@@@@@%####*************%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@%%%%##########*****************************************#######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#################################******************************************************************************************************************************************#######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@%%####################**************************************************************************************************************************************************************************************************************************************************####%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%####################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
########################################################################################%%%%%%%######################################################################################################################*************################################################################################*********************************#%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%####*********************************************************************************################%@@@@@@@%##*##################################***********#*###%@@@@@@%#********************************************************************************************#####%%%%%%%%%%%%%###********####%%%@@@@@@@@@@@@@@@@%%####*************@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@%%%%##########*****************************************#######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%################################********************************************************************************************************************************************######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@%%%%%%%%%%%%%%%%@@@%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@%######################************************************************************************************************************************************************************************************************************************************************####%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%####################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
########################################################################################%%%%%%%%######################################################################################################################************#################################################################################********************************%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%####*********************************************************************************################%@@@@@@@%#*###################################***********#*###%@@@@@@%#********************************************************************************************#####%%%%%%%%%%%%%###********####%%@@@@@@@@@@@@@@@@@%%####*************@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%@@%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%##########****************************************#######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%################################**********************************************************************************************************************************************######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@%%#######################*********************************************************************************************************************************************************************************************************************************************######%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#####################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@%%%%%%%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
########################################################################################%%%%%%%%######################################################################################################################************#################################################################################********************************%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%###**********************************************************************************################%@@@@@@@%#*###################################*************###%@@@@@@%#********************************************************************************************#####%%%%%%%%%%%%%###********####%%@@@@@@@@@@@@@@@@@%%####************%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@%%%%##########****************************************#######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%################################***********************************************************************************************************************************************########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@%########################*******************************************************************************************************************************************************************************************************************************************#######%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%######################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@%%%%%%%%%%%@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
#########################################################################################%%%%%%%######################################################################################################################************#################################################################################*******************************#%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%###************************************************************************************##############%@@@@@@@%#*###################################*************###%@@@@@@%#********************************************************************************************#####%%%%%%%%%%%%%###********####%%@@@@@@@@@@@@@@@@%%%###************#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@%%%%###########****************************************######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###############################*************************************************************************************************************************************************########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@%########################******************************************************************************************************************************************************************************************************************************************#######%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%#######################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
#########################################################################################%%%%%%%#######################################################################################################################***********#################################################################################*******************************#%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%###************************************************************************************##############%@@@@@@@%#####################################*************###%@@@@@@%#********************************************************************************************#####%%%%%%%%%%%%%###********####%%@@@@@@@@@@@@@@@@%%%###***********#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%############***************************************######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%################################**************************************************************************************************************************************************###########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@%###########################***************************************************************************************************************************************************************************************************************************************########%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%###%######################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
##########################################################################################%%%%%%#######################################################################################################################***********#################################################################################*******************************#%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%###*************************************************************************************#############%@@@@@@@@%##*#*################*##############*************###%@@@@@@%#********************************************************************************************#####%%%%%%%%%%%%%###********####%@@@@@@@@@@@@@@@@%%%%###********###@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%############***************************************######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%################################***********************************#***************************************************************************************************************#############%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@%#############################************************************************************************************************************************************************************************************************************************************#########%%%%%%%%%%%%@%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%##%#######################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
###########################################################################################%%%%%########################################################################################################################***********################################################################################*******************************#%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%###****************************************************************************************##########%@@@@@@@@%#*################################***********##*####%@@@@@@%#********************************************************************************************#####%%%%%%%%%%%%%####*******####%@@@@@@@@@@@@@@@@%%%%###********##@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@%@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@%%%@@%%%%%%%%%%%@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@%%%@@@@@@@@@@@@@%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%###########***************************************#######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###############################*************************************#***************************************************************************************************************################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@%##############################**********************************************************************************************************************************************************************************************************************************#########%%%%@%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#%#######################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
############################################################################################%%%%########################################################################################################################***********################################################################################*******************************#%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%###****************************************************************************************#########%%@@@@@@@@%##################################**************####%@@@@@@%#********************************************************************************************#####%%%%%%%%%%%%%####******####%%@@@@@@@@@@@@@@@%%%%####********#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%@@@@@%%%%%@%%@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@%%%%@@@@@@@@@@@@%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%############**************************************#######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###############################**************************************##**************************************************************************************************************###################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@%################################********************************************************************************************************************************************************************************************************************************#########%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%########################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
########################################################################################################################################################################################################################**********#################################################################################*******************************#%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%###******************************************************************************************#######%@@@@@@@@@%#####*#####################*********************####%@@@@@@%#********************************************************************************************#####%%%%%%%%%%%%%####******####%%@@@@@@@@@@@@@@@%%%%####********%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%@@%@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@%%%%%@@@@@@@@@%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%############**************************************#######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###########################*********************************************#**************************************************************************************************************#####################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@%%#################################*****************************************************************************************************************************************************************************************************************************###########%@%%%%@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%########################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
########################################################################################################################################################################################################################********###################################################################################*******************************#%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%###******************************************************************************************#######%@@@@@@@@@%#####*####################**********************####@@@@@@@%#********************************************************************************************####%%%%%%%%%%%%%%#####****#####%@@@@@@@@@@@@@@@%%%%%####*******%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@%%%%%@@@@@@@@%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%############*************************************#######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######################**************************************************##*************************************************************************************************************#########################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@%###################################***************************************************************************************************************************************************************************************************************************###########%%@%%@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%######################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
###################################################################################################################################################################################################################################################################################################################*******************************#%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@##*******************************************************************************************#######%@@@@@@@@@%#####*####################**********************####@@@@@@@%#********************************************************************************************####%%%%%%%%%%%%%%##############%@@@@@@@@@@@@@@@%%%%#####******%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@%%%%%%@@@@@@%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%############**************************************######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####################******************************************************##*************************************************************************************************************###########################%##%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@%%####################################************************************************************************************************************************************************************************************************************************############%%%%%%@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#########################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
##############################################################################################################################################################################################################################################**********#**########################################################*******************************#%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@##*******************************************************************************************######%%@@@@@@@@@@#####*###################**********************####%@@@@@@@%#********************************************************************************************####%%%%%%%%%%%%%%#############%%@@@@@@@@@@@@@@%%%%#####******%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@%%%%%%%@@@@@%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@%############*************************************######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###################***********************************************************##***********************************************************************************************************######################################%%%#%%%%%%%%%%%%%%%%%@@@@@@%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@%%%%%%######################################**********************************************************************************************************************************************************************************************************************############%%@%@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%##########################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
############################################################################################################################################################################################################################################********************###################################################*******************************%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#******************************************************************************************#######%@@@@@@@@@@@######################*************************####%@@@@@@@%#********************************************************************************************####%%%%%%%%%%%%%%#############%@@@@@@@@@@@@@@@%%%%#####*****#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@%%%%%%@@@@%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@%%###########*************************************######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#################**************************************************************###**********************************************************************************************************################################################%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########################################*******************************************************************************************************************************************************************************************************************##############%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%############################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
############################################################################################################################################################################################################################################**********************#################################################*******************************%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#******************************************************************************************#######%@@@@@@@@@@@######################*************************#*##%@@@@@@@%#********************************************************************************************####%%%%%%%%%%%%%%############%%@@@@@@@@@@@@@@@%%%#####*****#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@@@@@@@@@@@@@@@%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@%%%%%%%@@%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@%##########*************************************######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##################****************************************************************###**********************************************************************************************************#################################################%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#########################################****************************************************************************************************************************************************************************************************************###############%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#%%%##########################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
########################################################################################################################################################################################################################################***************************###############################################********************************%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#*****************************************************************************************########%@@@@@@@@@@@%###################****************************###%@@@@@@@%#***************#****************************************************************************####%%%%%%%%%%%%%%%######%%%#%%@@@@@@@@@@@@@@@%%######*****#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@@@@@@@@@@@@@@%%@%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@%%#########*************************************######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%################*******************************************************************#####*********************************************************************************************************#################################################%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%############################################************************************************************************************************************************************************************************************************************#################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%##%###########################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
########################################################################################################################################################################################################################################****************************##############################################********************************%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#*****************************************************************************************########%@@@@@@@@@@@%################*******************************###%@@@@@@@%#***************#****************************************************************************####%%%%%%%%%%%%%%%###%%%%%%%%%@@@@@@@@@@@@@@@%######*****#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@@@@@@@@@@@@@@%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#########************************************######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%###############******************************************************************#########********************************************************************************************************###################################################%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@%%%%%%############################################**********************************************************************************************************************************************************************************************************##################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%###############################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
########################################################################################################################################################################################################################################****************************##############################################********************************%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#****************************************************************************************########%%@@@@@@@@@@@%#############**********************************###%@@@@@@@%#***************#****************************************************************************####%%%%%%%%%%%%%%%##%%%%%%%%%%@@@@@@@@@@@@@@%%######****#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@@@@@@@@@@@@%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%%@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@%%########************************************######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%##############********************************************************************###########*******************************************************************************************************###################################################%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%@@%%%%%%%%%%%%%%%%%%%@@@@@@@@@%%%%%###############################################*****************************************************************************************************************************************************************************************************####################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
########################################################################################################################################################################################################################################*****************************#############################################********************************%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#****************************************************************************************########%@@@@@@@@@@@@%##*##########**********###*******************#*###%@@@@@@@%#***************#****************************************************************************####%%%%%%%%%%%%%%%%#%%%%%%%%%@@@@@@@@@@@@@@@%######****#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@@@@@@@@@@@@%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%%@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#######***********************************#######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%#############*********************************************************************#############*****************************************************************************************************###################################################%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%@@@@@@%%%%%%%%%%%%%%%%%@@@@@%%%%%%%%%%#################################################************************************************************************************************************************************************************************************************######################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
########################################################################################################################################################################################################################################******************************############################################********************************%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#***************************************************************************************#########%@@@@@@@@@@@@%##*#############*****######********************###%@@@@@@@%#***************#****************************************************************************####%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@######****#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@@@@@@@@@@@@%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%%@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@%@@%%#######**********************************######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%#############**********************************************************************###############****************************************************************************************************###################################################%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%@@@@@@@@@@@%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%######################################################*************************************************************************************************************************************************************************************#############################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
########################################################################################################################################################################################################################################******************************###########################################*********************************%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#***************************************************************************************########%%@@@@@@@@@@@@%%#*########################********************###@@@@@@@@%#***************#****************************************************************************####%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@####*****#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@@@@@@@@@@@@%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@%@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%%@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%#####**********************************######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%#############***********************************************************************################***************************************************************************************************###################################################%%%%%%%%@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####################################################**********************************************************************************************************************************************************************************###############################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
########################################################################################################################################################################################################################################********************************#########################################*********************************%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#**************************************************************************************#########%@@@@@@@@@@@@@@%###*#######################*****************#*###@@@@@@@@%****************#****************************************************************************####%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@%###******%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@@@@@@@@@@%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%%@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%#####*********************************######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%#############***********************************************************************##################**************************************************************************************************#################################################%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#########################################################*****************************************************************************************************************************************************************##################################%###%###%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
########################################################################################################################################################################################################################################********************************########################################**********************************%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#**************************************************************************************########%%@@@@@@@@@@@@@@%###*#######################*****************#*###@@@@@@@@%****************#****************************************************************************####%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@##*******%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%@@@@@@@@@@@%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%@@@@%@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%%@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%####*********************************######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%##############***********************************************************************###################*************************************************************************************************################################################%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%##########################################################*************************************************************************************************************************************************************##################################%%%%#%%%##%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@##%###############################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
#########################################################################################################################################################################################################################################********************************#######################################**********************************%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#**************************************************************************************########%%@@@@@@@@@@@@@@%#*##########################****************#*##%@@@@@@@@%****************##***************************************************************************####%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@#*******%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@@@@@@@@@%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%###********************************#####%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%##############***********************************************************************#####################***********************************************************************************************###############################################%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%#############################################################********************************************************************************************************************************************************################################%%%%%%%%%%#%%#%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
#########################################################################################################################################################################################################################################*********************************######################################*********************************#%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%*************************************************************************************########%%@@@@@@@@@@@@@@@%#*#########################*****************####%@@@@@@@@%****************##***************************************************************************####%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@%##%#***%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@@@@@@@@@%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%###*******************************######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%###############***********************************************************************#######################*********************************************************************************************#############################################%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%##############################################################****************************************************************************************************************************************************#################################%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
#########################################################################################################################################################################################################################################**********************************####################################**********************************#%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#************************************************************************************########%%@@@@@@@@@@@@@@@%#*#######################*******************####%@@@@@@@@#****************##***************************************************************************####%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@##%%%**%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%@@@@@@@@@@%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%##******************************######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%###############***********************************************************************#########################*******************************************************************************************###########################################%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%################################################################******************************************************************************************************************************************######################################%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
#########################################################################################################################################################################################################################################***********************************###################################**********************************#%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#************************************************************************************#######%%@@@@@@@@@@@@@@@@%#########################*******************####%@@@@@@@@#****************##***************************************************************************####%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@%%%@%#%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%@@@@@@@@@%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%###****************************######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%##############************************************************************************############################*****************************************************************************************########################################%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%###################################################################***********************************************************************************************************************************#######################################%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
##########################################################################################################################################################################################################################################***********************************##################################**********************************#%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#************************************************************************************#######%%@@@@@@@@@@@@@@@@%########################********************####%@@@@@@@@#****************##***************************************************************************####%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@%%@%@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%@@@@@@@@%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%##**************************#######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%############**************************************************************************##############################****************************************************************************************###############################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%###########################################################################**######################************************************************************************################################################################%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
###########################################################################################################################################################################################################################################**********************************#################################***********************************#%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#************************************************************************************######%%@@@@@@@@@@@@@@@@@%####################**#*********************####%@@@@@@@%#****************##***************************************************************************####%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%@@@@@@@@%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%###***********************########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%###########****************************************************************************################################*************************************************************************************#############################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%#############################################################################################################################************************#############********##############################################################%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
###########################################################################################################################################################################################################################################**********************************#################################***********************************#%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#************************************************************************************######%%@@@@@@@@@@@@@@@@@%####################*************************###%@@@@@@@%#****************##***************************************************************************####%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@@@@%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%####********************#########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%############***************************************************************************##################################************************************************************************************###########################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%######################################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#################################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
###########################################################################################################################################################################################################################################**********************************#################################***********************************#%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#************************************************************************************#####%%%@@@@@@@@@@@@@@@@@%####################*************************###%@@@@@@@%#****************##***************************************************************************####%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%@@@@%@%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%######****************##########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%###########***************************************************************************#####################################**********************************************************************************##########################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####################################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#%##############################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
#############################################################################################################################################################################################################################################*******************************##################################***********************************#%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%************************************************************************************#####%%@@@@@@@@@@@@@@@@@@%##################***************************###@@@@@@@@%#****************##***************************************************************************####%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%@@@@%@%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@%%%@%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%#########************##########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%############***************************************************************************#######################################*****************************########******************************************#########################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%################################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%###############################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
#############################################################################################################################################################################################################################################******************************###################################***********************************#%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%*************************************************************************************####%%@@@@@@@@@@@@@@@@@@%##################**************************####@@@@@@@@@#****************##***************************************************************************####%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%@@@@%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%#################***##########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%###########***************************************************************************##########################################**************************##########*****************************************########################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##############################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#%##############################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
################################################################################################################################################################################################################################################***************************###################################***********************************%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%*************************************************************************************####%@@@@@@@@@@@@@@@@@@@%##################**************************####@@@@@@@@@%****************##***********************************************#####***********************####%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%@@@@@%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%#############################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%@%%%%%%%%%%%%###########**************************************************************************############################################***********************#############***************************************#######################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#######################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#%##############################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
**#################################################################################################################################################################################################################################################*******************##*#####################################**********************************#%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#*************************************************************************************##%%@@@@@@@@@@@@@@@@@@@@##################**************************####@@@@@@@@@%#***************##*********************************************#########*********************####%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%@@@@%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@%%%@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%#############################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@%%%%%%%%%%%%###########*************************************************************************################################################*******************##############**************************************######################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###################################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%###############################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
***########################################################################################################%%%%#####################################################################################################################################*****************#########################################**********************************#%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#*************************************************************************************##%@@@@@@@@@@@@@@@@@@@@@################****************************###%@@@@@@@@@%#***************##********************************************############*******************####%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%@@@@@%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@%%%@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%###########################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@@@@@@%%%%%%%%%%%%###########************************************************************************####################################################***************################************************************#####################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#############################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%##############################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
****####################*################################################################################%%%%%%%##############################################################################################################################################################################################**********************************#%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#**************************************************************************************#%@@@@@@@@@@@@@@@@@@@@@##*#########********************************###%@@@@@@@@@%#***************##*******************************************#############*******************####%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%@@@%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@%%%@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%###########################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@%%%%%%%%%%%#########**************************************************************************###################%%%################################******########################**********************************###################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%########################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#############################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
********############**********##########################################################################%%%%%%%%##############################################################################################################################################################################################**********************************#%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#**************************************************************************************#%@@@@@@@@@@@@@@@@@@@@@##*#####************************************###%@@@@@@@@@%%#**************##******************************************###############******************####%%%%%%%%%@@@%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%@@%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%@@@@@@%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@%@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%#########################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@@@@@@@@@%%%%%%%%%%#######**************************************************************************#####################%@%%%##############################################################********************************#################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%####################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#############################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
****************###***********##########################################################################%%%%%%%%##############################################################################################################################################################################################**********************************#%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#**************************************************************************************#%@@@@@@@@@@@@@@@@@@@@@##*#####*************************************##%@@@@@@@@@%%#**************##******************************************################*****************####%%%%%%%%%@@@@%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@%@%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@%%@%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@%@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%#########################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@@@@@@@@@@%%%%%%%%%######***************************************************************************####################%%%%@@%%#############################################################******************************################%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%################################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#######%#####################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
******************************###########################################################################%%%%%%%%%############################################################################################################################################################################################**********************************#%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#**************************************************************************************%@@@@@@@@@@@@@@@@@@@@@@%#*##***************************************###%@@@@@@@@@@%#**************#%*****************************************#################*****************####%%%%%%%%@@@@@%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%#########################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%@@@@@@@@@@%%%%%%%%%%#######********##***************************************************************####################%%%%@%@@@%%########################%%%%%%%#####################%%%%########*************************##############%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###########################################################################################################################################################################################%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#%##%#%####################################################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%